上传文件至 'KubeGems'
This commit is contained in:
parent
07c9d5d3d8
commit
b81e8f06fd
773
KubeGems/KubeGems连接Kubernetes.md
Normal file
773
KubeGems/KubeGems连接Kubernetes.md
Normal file
@ -0,0 +1,773 @@
|
||||
<h1><center>KubeGems连接Kubernetes</center></h1>
|
||||
|
||||
------
|
||||
|
||||
**作者:行癫<盗版必究>**
|
||||
|
||||
## 一:Kubernetes集群部署
|
||||
|
||||
#### 1.kubernetes环境
|
||||
|
||||
kubernetes高可用集群
|
||||
|
||||
kubernetes非高可用集群
|
||||
|
||||
#### 2.kubernetes验证
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl get node
|
||||
NAME STATUS ROLES AGE VERSION
|
||||
master Ready control-plane,master 124d v1.25.1
|
||||
node-1 Ready <none> 124d v1.25.1
|
||||
node-2 Ready <none> 124d v1.25.1
|
||||
node-3 Ready <none> 124d v1.25.1
|
||||
```
|
||||
|
||||
## 二:KubeGems部署
|
||||
|
||||
KubeGems部署需要基于Kubernetes集群的环境,高可用集群和非高可用集群均可,在这里基于非高可用集群部署
|
||||
|
||||
kubernetes 1.20 及以上版本( 1.23+最佳 )
|
||||
|
||||
#### 1.核心组件
|
||||
|
||||
| 名称 | 描述 |
|
||||
| :------------------: | :---------------------------------------------------------: |
|
||||
| `kubegems-installer` | kubegems 安装程序,安装 kubegems 组件及依赖组件 |
|
||||
| `kubegems` | kubegems 核心组件,包含 UI 界面及相关 API 服务 |
|
||||
| `kubegems-local` | kubegems 边缘组件,安装在托管集群上,获取集群信息和执行操作 |
|
||||
|
||||
#### 2.部署kubegems-installer
|
||||
|
||||
installer 是用于安装 kubegems 主要组件和插件的控制器
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl create namespace kubegems-installer
|
||||
[root@master ~]# kubectl apply -f https://github.com/kubegems/kubegems/raw/main/deploy/installer.yaml
|
||||
[root@master ~]# vi installer.yaml
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.9.0
|
||||
meta.helm.sh/release-name: kubegems-installer
|
||||
meta.helm.sh/release-namespace: kubegems-installer
|
||||
creationTimestamp: null
|
||||
name: plugins.plugins.kubegems.io
|
||||
spec:
|
||||
group: plugins.kubegems.io
|
||||
names:
|
||||
kind: Plugin
|
||||
listKind: PluginList
|
||||
plural: plugins
|
||||
singular: plugin
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- description: Kind of the bundle
|
||||
jsonPath: .spec.kind
|
||||
name: Kind
|
||||
type: string
|
||||
- description: Status of the bundle
|
||||
jsonPath: .status.phase
|
||||
name: Status
|
||||
type: string
|
||||
- description: Install Namespace of the bundle
|
||||
jsonPath: .status.namespace
|
||||
name: Namespace
|
||||
type: string
|
||||
- description: Version of the bundle
|
||||
jsonPath: .status.version
|
||||
name: Version
|
||||
type: string
|
||||
- description: app version of the bundle
|
||||
jsonPath: .status.appVersion
|
||||
name: AppVersion
|
||||
type: string
|
||||
- description: UpgradeTimestamp of the bundle
|
||||
jsonPath: .status.upgradeTimestamp
|
||||
name: UpgradeTimestamp
|
||||
type: date
|
||||
- description: CreationTimestamp of the bundle
|
||||
jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1beta1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
apiVersion:
|
||||
description: 'APIVersion defines the versioned schema of this representation
|
||||
of an object. Servers should convert recognized schemas to the latest
|
||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind is a string value representing the REST resource this
|
||||
object represents. Servers may infer this from the endpoint the client
|
||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
chart:
|
||||
description: Chart is the name of the chart to install.
|
||||
type: string
|
||||
dependencies:
|
||||
description: Dependencies is a list of bundles that this bundle depends
|
||||
on. The bundle will be installed after all dependencies are exists.
|
||||
items:
|
||||
description: 'ObjectReference contains enough information to let
|
||||
you inspect or modify the referred object. --- New uses of this
|
||||
type are discouraged because of difficulty describing its usage
|
||||
when embedded in APIs. 1. Ignored fields. It includes many fields
|
||||
which are not generally honored. For instance, ResourceVersion
|
||||
and FieldPath are both very rarely valid in actual usage. 2. Invalid
|
||||
usage help. It is impossible to add specific help for individual
|
||||
usage. In most embedded usages, there are particular restrictions
|
||||
like, "must refer only to types A and B" or "UID not honored"
|
||||
or "name must be restricted". Those cannot be well described when
|
||||
embedded. 3. Inconsistent validation. Because the usages are
|
||||
different, the validation rules are different by usage, which
|
||||
makes it hard for users to predict what will happen. 4. The fields
|
||||
are both imprecise and overly precise. Kind is not a precise
|
||||
mapping to a URL. This can produce ambiguity during interpretation
|
||||
and require a REST mapping. In most cases, the dependency is
|
||||
on the group,resource tuple and the version of the actual struct
|
||||
is irrelevant. 5. We cannot easily change it. Because this type
|
||||
is embedded in many locations, updates to this type will affect
|
||||
numerous schemas. Don''t make new APIs embed an underspecified
|
||||
API type they do not control. Instead of using this type, create
|
||||
a locally provided and used type that is well-focused on your
|
||||
reference. For example, ServiceReferences for admission registration:
|
||||
https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
|
||||
.'
|
||||
properties:
|
||||
apiVersion:
|
||||
description: API version of the referent.
|
||||
type: string
|
||||
fieldPath:
|
||||
description: 'If referring to a piece of an object instead of
|
||||
an entire object, this string should contain a valid JSON/Go
|
||||
field access statement, such as desiredState.manifest.containers[2].
|
||||
For example, if the object reference is to a container within
|
||||
a pod, this would take on a value like: "spec.containers{name}"
|
||||
(where "name" refers to the name of the container that triggered
|
||||
the event) or if no container name is specified "spec.containers[2]"
|
||||
(container with index 2 in this pod). This syntax is chosen
|
||||
only to have some well-defined way of referencing a part of
|
||||
an object. TODO: this design is not final and this field is
|
||||
subject to change in the future.'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||
type: string
|
||||
namespace:
|
||||
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
||||
type: string
|
||||
resourceVersion:
|
||||
description: 'Specific resourceVersion to which this reference
|
||||
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
|
||||
type: string
|
||||
uid:
|
||||
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
disabled:
|
||||
description: Disabled indicates that the bundle should not be installed.
|
||||
type: boolean
|
||||
installNamespace:
|
||||
description: InstallNamespace is the namespace to install the bundle
|
||||
into. If not specified, the bundle will be installed into the namespace
|
||||
of the bundle.
|
||||
type: string
|
||||
kind:
|
||||
description: Kind bundle kind.
|
||||
enum:
|
||||
- helm
|
||||
- kustomize
|
||||
- template
|
||||
type: string
|
||||
path:
|
||||
description: Path is the path in a tarball to the chart/kustomize.
|
||||
type: string
|
||||
url:
|
||||
description: URL is the URL of helm repository, git clone url, tarball
|
||||
url, s3 url, etc.
|
||||
type: string
|
||||
values:
|
||||
description: Values is a nested map of helm values.
|
||||
type: object
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
valuesFrom:
|
||||
description: ValuesFiles is a list of references to helm values files.
|
||||
Ref can be a configmap or secret.
|
||||
items:
|
||||
properties:
|
||||
kind:
|
||||
description: Kind is the type of resource being referenced
|
||||
enum:
|
||||
- ConfigMap
|
||||
- Secret
|
||||
type: string
|
||||
name:
|
||||
description: Name is the name of resource being referenced
|
||||
type: string
|
||||
optional:
|
||||
description: Optional set to true to ignore referense not found
|
||||
error
|
||||
type: boolean
|
||||
prefix:
|
||||
description: An optional identifier to prepend to each key in
|
||||
the ConfigMap. Must be a C_IDENTIFIER.
|
||||
type: string
|
||||
required:
|
||||
- kind
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
version:
|
||||
description: Version is the version of helm chart, git revision, etc.
|
||||
type: string
|
||||
type: object
|
||||
status:
|
||||
properties:
|
||||
appVersion:
|
||||
description: AppVersion is the app version of the bundle.
|
||||
type: string
|
||||
creationTimestamp:
|
||||
description: CreationTimestamp is the first creation timestamp of
|
||||
the bundle.
|
||||
format: date-time
|
||||
type: string
|
||||
message:
|
||||
description: Message is the message associated with the status In
|
||||
helm, it's the notes contens.
|
||||
type: string
|
||||
namespace:
|
||||
description: Namespace is the namespace where the bundle is installed.
|
||||
type: string
|
||||
phase:
|
||||
description: Phase is the current state of the release
|
||||
type: string
|
||||
resources:
|
||||
description: Resources is a list of resources created/managed by the
|
||||
bundle.
|
||||
items:
|
||||
description: 'ObjectReference contains enough information to let
|
||||
you inspect or modify the referred object. --- New uses of this
|
||||
type are discouraged because of difficulty describing its usage
|
||||
when embedded in APIs. 1. Ignored fields. It includes many fields
|
||||
which are not generally honored. For instance, ResourceVersion
|
||||
and FieldPath are both very rarely valid in actual usage. 2. Invalid
|
||||
usage help. It is impossible to add specific help for individual
|
||||
usage. In most embedded usages, there are particular restrictions
|
||||
like, "must refer only to types A and B" or "UID not honored"
|
||||
or "name must be restricted". Those cannot be well described when
|
||||
embedded. 3. Inconsistent validation. Because the usages are
|
||||
different, the validation rules are different by usage, which
|
||||
makes it hard for users to predict what will happen. 4. The fields
|
||||
are both imprecise and overly precise. Kind is not a precise
|
||||
mapping to a URL. This can produce ambiguity during interpretation
|
||||
and require a REST mapping. In most cases, the dependency is
|
||||
on the group,resource tuple and the version of the actual struct
|
||||
is irrelevant. 5. We cannot easily change it. Because this type
|
||||
is embedded in many locations, updates to this type will affect
|
||||
numerous schemas. Don''t make new APIs embed an underspecified
|
||||
API type they do not control. Instead of using this type, create
|
||||
a locally provided and used type that is well-focused on your
|
||||
reference. For example, ServiceReferences for admission registration:
|
||||
https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
|
||||
.'
|
||||
properties:
|
||||
apiVersion:
|
||||
description: API version of the referent.
|
||||
type: string
|
||||
fieldPath:
|
||||
description: 'If referring to a piece of an object instead of
|
||||
an entire object, this string should contain a valid JSON/Go
|
||||
field access statement, such as desiredState.manifest.containers[2].
|
||||
For example, if the object reference is to a container within
|
||||
a pod, this would take on a value like: "spec.containers{name}"
|
||||
(where "name" refers to the name of the container that triggered
|
||||
the event) or if no container name is specified "spec.containers[2]"
|
||||
(container with index 2 in this pod). This syntax is chosen
|
||||
only to have some well-defined way of referencing a part of
|
||||
an object. TODO: this design is not final and this field is
|
||||
subject to change in the future.'
|
||||
type: string
|
||||
kind:
|
||||
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||
type: string
|
||||
name:
|
||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||
type: string
|
||||
namespace:
|
||||
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
||||
type: string
|
||||
resourceVersion:
|
||||
description: 'Specific resourceVersion to which this reference
|
||||
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
|
||||
type: string
|
||||
uid:
|
||||
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
upgradeTimestamp:
|
||||
description: UpgradeTimestamp is the time when the bundle was last
|
||||
upgraded.
|
||||
format: date-time
|
||||
type: string
|
||||
values:
|
||||
description: Values is a nested map of final helm values.
|
||||
type: object
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
version:
|
||||
description: Version is the version of the bundle. In helm, Version
|
||||
is the version of the chart.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
annotations:
|
||||
meta.helm.sh/release-name: kubegems-installer
|
||||
meta.helm.sh/release-namespace: kubegems-installer
|
||||
labels:
|
||||
app.kubernetes.io/component: installer
|
||||
app.kubernetes.io/instance: kubegems-installer
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: kubegems-installer
|
||||
helm.sh/chart: kubegems-installer-1.21.0
|
||||
name: kubegems-installer
|
||||
namespace: kubegems-installer
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
meta.helm.sh/release-name: kubegems-installer
|
||||
meta.helm.sh/release-namespace: kubegems-installer
|
||||
labels:
|
||||
app.kubernetes.io/component: installer
|
||||
app.kubernetes.io/instance: kubegems-installer
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: kubegems-installer
|
||||
helm.sh/chart: kubegems-installer-1.21.0
|
||||
rbac.authorization.k8s.io/aggregate-to-admin: "true"
|
||||
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||
rbac.authorization.k8s.io/aggregate-to-view: "true"
|
||||
name: kubegems-installer-view
|
||||
rules:
|
||||
- apiGroups:
|
||||
- plugins.kubegems.io
|
||||
resources:
|
||||
- plugins
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
annotations:
|
||||
meta.helm.sh/release-name: kubegems-installer
|
||||
meta.helm.sh/release-namespace: kubegems-installer
|
||||
labels:
|
||||
app.kubernetes.io/component: installer
|
||||
app.kubernetes.io/instance: kubegems-installer
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: kubegems-installer
|
||||
helm.sh/chart: kubegems-installer-1.21.0
|
||||
rbac.authorization.k8s.io/aggregate-to-admin: "true"
|
||||
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||
name: kubegems-installer-edit
|
||||
rules:
|
||||
- apiGroups:
|
||||
- plugins.kubegems.io
|
||||
resources:
|
||||
- plugins
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- create
|
||||
- update
|
||||
- patch
|
||||
- delete
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
annotations:
|
||||
meta.helm.sh/release-name: kubegems-installer
|
||||
meta.helm.sh/release-namespace: kubegems-installer
|
||||
labels:
|
||||
app.kubernetes.io/component: installer
|
||||
app.kubernetes.io/instance: kubegems-installer
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: kubegems-installer
|
||||
helm.sh/chart: kubegems-installer-1.21.0
|
||||
name: kubegems-installer
|
||||
namespace: kubegems-installer
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cluster-admin
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: kubegems-installer
|
||||
namespace: kubegems-installer
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
meta.helm.sh/release-name: kubegems-installer
|
||||
meta.helm.sh/release-namespace: kubegems-installer
|
||||
labels:
|
||||
app.kubernetes.io/component: installer
|
||||
app.kubernetes.io/instance: kubegems-installer
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: kubegems-installer
|
||||
helm.sh/chart: kubegems-installer-1.21.0
|
||||
name: kubegems-installer
|
||||
namespace: kubegems-installer
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: installer
|
||||
app.kubernetes.io/instance: kubegems-installer
|
||||
app.kubernetes.io/name: kubegems-installer
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: installer
|
||||
app.kubernetes.io/instance: kubegems-installer
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: kubegems-installer
|
||||
helm.sh/chart: kubegems-installer-1.21.0
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- installer
|
||||
- --enableleaderelection
|
||||
- --probeaddr=:8080
|
||||
- --metricsaddr=:9100
|
||||
env:
|
||||
- name: LOG_LEVEL
|
||||
value: debug
|
||||
image: docker.io/kubegems/kubegems:latest
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
failureThreshold: 6
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: probe
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
name: installer
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: probe
|
||||
protocol: TCP
|
||||
- containerPort: 9100
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
readinessProbe:
|
||||
failureThreshold: 6
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: probe
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 5
|
||||
resources:
|
||||
limits: {}
|
||||
requests: {}
|
||||
serviceAccountName: kubegems-installer
|
||||
```
|
||||
|
||||
验证
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl -n kubegems-installer get po
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
kubegems-installer-757d4c64db-cf2x2 1/1 Running 0 20m
|
||||
```
|
||||
|
||||
#### 2.安装local-path-provisioner
|
||||
|
||||
kubegems 需要持久化一些重要数据,安装local-path-provisioner
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl create namespace local-path-storage
|
||||
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/kubegems/kubegems/main/deploy/addon-local-path-provisioner.yaml
|
||||
[root@master kubegems]# vi addon-local-path-provisioner.yaml
|
||||
# https://github.com/rancher/local-path-provisioner/tree/master/deploy/chart
|
||||
apiVersion: plugins.kubegems.io/v1beta1
|
||||
kind: Plugin
|
||||
metadata:
|
||||
name: local-path-provisioner
|
||||
namespace: local-path-storage
|
||||
spec:
|
||||
kind: helm
|
||||
url: https://github.com/rancher/local-path-provisioner/archive/refs/tags/v0.0.22.tar.gz
|
||||
path: local-path-provisioner-0.0.22/deploy/chart/local-path-provisioner
|
||||
version: 0.0.22
|
||||
values:
|
||||
storageClass:
|
||||
defaultClass: true
|
||||
provisionerName: rancher.io/local-path
|
||||
nodePathMap:
|
||||
- node: DEFAULT_PATH_FOR_NON_LISTED_NODES
|
||||
paths:
|
||||
- /data
|
||||
```
|
||||
|
||||
#### 3.部署 kubegems
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl create namespace kubegems
|
||||
[root@master ~]# export STORAGE_CLASS=local-path # 改为您使用的 storageClass
|
||||
[root@master ~]# export KUBEGEMS_VERSION=v1.21.1 # change to specify kubegems version
|
||||
[root@master ~]# wget https://raw.githubusercontent.com/kubegems/kubegems/main/deploy/kubegems-mirror.yaml
|
||||
apiVersion: plugins.kubegems.io/v1beta1
|
||||
kind: Plugin
|
||||
metadata:
|
||||
name: kubegems
|
||||
namespace: kubegems
|
||||
spec:
|
||||
kind: helm
|
||||
url: https://charts.kubegems.io/kubegems
|
||||
values:
|
||||
global:
|
||||
imageRegistry: registry.cn-beijing.aliyuncs.com
|
||||
kubegemsVersion: latest
|
||||
storageClass: local-path # change me to use a production storage class
|
||||
mysql:
|
||||
image:
|
||||
repository: kubegems/mysql
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 20Gi
|
||||
redis:
|
||||
image:
|
||||
repository: kubegems/redis
|
||||
master:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 5Gi
|
||||
volumePermissions:
|
||||
enabled: true
|
||||
image:
|
||||
repository: kubegems/bitnami-shell
|
||||
argo-cd:
|
||||
image:
|
||||
repository: kubegems/argo-cd
|
||||
redis:
|
||||
image:
|
||||
repository: kubegems/redis
|
||||
gitea:
|
||||
image:
|
||||
repository: kubegems/gitea
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 10Gi
|
||||
chartmuseum:
|
||||
image:
|
||||
repository: kubegems/chartmuseum
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 5Gi
|
||||
ingress:
|
||||
hostname: dashboard.kubegems.io
|
||||
[root@master ~]# sed -i -e "s/local-path/${STORAGE_CLASS}/g" -e "s/latest/${KUBEGEMS_VERSION}/g" kubegems-mirror.yaml
|
||||
[root@master ~]# kubectl create -f kubegems-mirror.yaml
|
||||
```
|
||||
|
||||
验证
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl -n kubegems get pod
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
kubegems-api-7856cddc86-zxf2m 1/1 Running 6 (148m ago) 152m
|
||||
kubegems-argo-cd-app-controller-57c756777c-qgtkb 1/1 Running 0 152m
|
||||
kubegems-argo-cd-repo-server-84bc9df4cd-cvhmk 1/1 Running 0 152m
|
||||
kubegems-argo-cd-server-58d6ccc99-mqb4k 1/1 Running 0 152m
|
||||
kubegems-chartmuseum-74d498759c-rl49v 1/1 Running 0 152m
|
||||
kubegems-charts-init-v1.21.1-2tn8s 0/1 Completed 0 152m
|
||||
kubegems-dashboard-777875598f-7pfvx 1/1 Running 0 152m
|
||||
kubegems-gitea-0 1/1 Running 0 152m
|
||||
kubegems-init-v1.21.1-gpvrw 0/1 Completed 5 152m
|
||||
kubegems-msgbus-7c6c4c66c-kq8xw 1/1 Running 6 (148m ago) 152m
|
||||
kubegems-mysql-0 1/1 Running 0 152m
|
||||
kubegems-redis-master-0 1/1 Running 0 136m
|
||||
kubegems-worker-85c8d75ff7-2b7rr 1/1 Running 6 (148m ago) 152m
|
||||
```
|
||||
|
||||
#### 4.访问kubegems仪表板
|
||||
|
||||
你需要编辑kubegems插件,为dashbnoard组件开启nodeport:
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl -n kubegems edit plugins.plugins.kubegems.io kubegems
|
||||
只添加nodeport
|
||||
apiVersion: plugins.kubegems.io/v1beta1
|
||||
kind: Plugin
|
||||
metadata:
|
||||
spec:
|
||||
kind: helm
|
||||
url: https://charts.kubegems.io/kubegems
|
||||
values:
|
||||
dashboard:
|
||||
service:
|
||||
type: NodePort
|
||||
global:
|
||||
kubegemsVersion: v1.21.1
|
||||
storageClass: local-path
|
||||
ingress:
|
||||
hostname: dashboard.kubegems.io
|
||||
```
|
||||
|
||||
使用 ingress 或其他方式访问
|
||||
|
||||
注意:
|
||||
|
||||
kubegems 默认创建了 hostname 为 `dashboard.kubegems.io` 的 ingress, 同时默认绑定了 `default-gateway`的`ingressClass`。 如果您想更改为其他域名,或者绑定到其他网关可以编辑kubegems插件
|
||||
|
||||
`default-gateway`是平台默认网关,要使用它,你需要启用`网关-gateway`插件
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl -n kubegems edit plugins.plugins.kubegems.io kubegems
|
||||
apiVersion: plugins.kubegems.io/v1beta1
|
||||
kind: Plugin
|
||||
metadata:
|
||||
spec:
|
||||
kind: helm
|
||||
url: https://charts.kubegems.io/kubegems
|
||||
values:
|
||||
global:
|
||||
kubegemsVersion: v1.21.1
|
||||
storageClass: local-path
|
||||
ingress:
|
||||
hostname: dashboard.kubegems.io
|
||||
ingressClassName: default-gateway
|
||||
```
|
||||
|
||||
获取 ingress 访问地址
|
||||
|
||||
```shell
|
||||
[root@master ~]# PORT=$(kubectl -n kubegems-gateway get svc default-gateway -ojsonpath='{.spec.ports[0].nodePort}')
|
||||
[root@master ~]# ADDRESS=$(kubectl -n kubegems get ingress kubegems -ojsonpath='{.spec.rules[*].host}')
|
||||
[root@master ~]# echo http://$ADDRESS:$PORT
|
||||
```
|
||||
|
||||
#### 5.浏览器访问
|
||||
|
||||
用户:admin
|
||||
|
||||
密码:demo!@#admin
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl get svc -n kubegems | grep dashboard
|
||||
kubegems-dashboard NodePort 10.103.140.101 <none> 80:32317/TCP,9100:30420/TCP 173m
|
||||
```
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/gems-first-dashbaord-bbc455105192bd6a238ac0b41ed07503.jpg" alt="img" style="zoom:50%;" />
|
||||
|
||||
## 三:连接Kubernetes集群
|
||||
|
||||
#### 1.获取集群kubeconfig
|
||||
|
||||
获取current-context(clusters.cluster.name)
|
||||
|
||||
```shell
|
||||
[root@master ~]# CURRENT_CONTEXT=`kubectl config current-context`
|
||||
```
|
||||
|
||||
获取current-cluster
|
||||
|
||||
```shell
|
||||
[root@master ~]# CURRENT_CLUSTER=`kubectl config view --raw -o=go-template='{{range .contexts}}{{if eq .name "'''${CURRENT_CONTEXT}'''"}}{{ index .context "cluster" }}{{end}}{{end}}'`
|
||||
```
|
||||
|
||||
获取certificate-authority-data
|
||||
|
||||
```shell
|
||||
[root@master ~]# certificate-authority-data=`kubectl config view --raw -o=go-template='{{range .clusters}}{{if eq .name "'''${CURRENT_CLUSTER}'''"}}"{{with index .cluster "certificate-authority-data" }}{{.}}{{end}}"{{ end }}{{ end }}')`
|
||||
```
|
||||
|
||||
用户:dashboard-admin;获取token
|
||||
|
||||
```shell
|
||||
[root@master ~]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}'
|
||||
```
|
||||
|
||||
kubeconfig文件创建
|
||||
|
||||
```shell
|
||||
[root@master ~]# cat kubeconfig
|
||||
apiVersion: v1
|
||||
clusters:
|
||||
- cluster:
|
||||
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1EUXlOakUwTXpjME1Wb1hEVE15TURReU16RTBNemMwTVZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUdZCkVpaTM5Y1ZFWjZvK3FvZmNnb2ErL0phb0M3NkkwbnJOS2gwR3NMZjRqVExxdm0vREl2QXNaOHlFQ2RUK0E0bVIKbnArZ0Fmbit2UkdiUXpRdVdKT21jUXF3cWowK0p1WUN2Z0hoSjZrQ2s0YUZCaTd2bWErbnFBOFZ6ZkhYeldMWApqcGhOMVluS2c2UThDdGdPVzh6cGxzSEg4VU0xaHRqTmVuYkM0WkRtMm5BRHBqT3plRVlzQldGY0lHTGV5THZBCjBXb3Z3Z0ZJYldONjhQaW02V3pDYVpCOTljN0VMVGl5aDJsOUVZYzArdlR4K24rcTdpd0c3U1BLSmIwTzVWa3gKeUNqK2s2eDVjRklkLzl1dmZJNGs3bk5aS1pQeU1oY2JhdEpBb3J5Y0xHYVQybTA3TW9LTTkzZmZkbWd1VW0xRwo5bWZBSHNYLzV3TEF6T3hzMmU4Q0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZJUFJsR1NOb3kxUzhubmpmVVV5QzJjK0JMQVRNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRjA1NTg5Mk8wa0J0dnhvKzlSUwppZ1BNNVRUWEg4VHo0eHh2SlFwbytVY09ZSVZvc2xScGE3ZWlxWi9qd3V5bW9TaDRVeGxBVVBMVFlpa0VxQ01hClF0MHpBTmY5NUJ6eDJhbFhkSFViMVRLN1JkZXE4NjFMSCs4UUxnVlFzSEpCWHRja3FxcFgrWEhaWkU4SkQwYmQKZmhXd3JHSitJTTRVbW1sQ1ZaaGhTNDMyUUtTNFkyNzFuTGtUeXdTQ29HMnpKUGtRUVo4eVJsNG1HWk01VGM3Rwp1bmEySGtJVmhFWk85czNYYW5FSnZjZFQ4ajgyQVpYN2NlZWowdTRHN3pIVjhhUitwUGtFMW0wTXJmQUF4UE9PCjg0Y0hqdW1uRVNIL1NBWVE0NWtsRnlJM0RObDM4RHBGRE12eGgvMXpOQkE5d3cxdEJFQlc4ZnowSzZpVTBhZncKRURzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
||||
server: https://10.0.0.220:6443
|
||||
name: kubernetes-admin@kubernetes
|
||||
contexts:
|
||||
- context:
|
||||
cluster: kubernetes-admin@kubernetes
|
||||
user: dashboard-admin
|
||||
name: kubernetes-admin@kubernetes
|
||||
current-context: kubernetes-admin@kubernetes
|
||||
kind: Config
|
||||
preferences: {}
|
||||
users:
|
||||
- name: dashboard-admin
|
||||
user:
|
||||
token: eyJhbGciOiJSUzI1NiIsImtpZCI6InFsRE1GQi1KQnZsZHpUOGZ4WGc1dlU1UHg3UGVrcC02TUNyYmZWcHhFZ3MifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4teGxoenIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYTM4ZThjZTMtODQ4ZS00ZDk0LWFiY2YtNGQ4MjRkZWViNjk3Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.anEX2MBlIo0lKQCGOsl3oZKBQkYujg6twLoO8hbWLAVp3xveAgpt6nW-_FrkG0yy9tIyXa6lpvu-c99ueB4KvKrIF0vJggWT3fU73u75iIwTbqDSghWy_BRFjt9NYuUFL4Mu-sPqra0ELgxYIGSEVuQwmZ8qOFjrQQQ2pKjxt8SsUHGLW-9FgmSgZTHPvZKFnU2V23BC2n_vowff63PF6kfnj1bNzV3Z1YCzgZOdy3jKM6sNKSI3dbcHiJpv5p7XF18qvuSZMJ9tMU4vSwzkQ_OLxsdNYwwD_YfRhua6f0kgWO23Z0lBTRLInejssdIQ31yewg9Eoqv4DhN1jZqhOw
|
||||
```
|
||||
|
||||
2.KubeGems连接
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235104152.png" alt="image-20220828235104152" style="zoom:50%;" />
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235127957.png" alt="image-20220828235127957" style="zoom:50%;" />
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235208725.png" alt="image-20220828235208725" style="zoom:50%;" />
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235303696.png" alt="image-20220828235303696" style="zoom:50%;" />
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235332423.png" alt="image-20220828235332423" style="zoom:50%;" />
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235402611.png" alt="image-20220828235402611" style="zoom:50%;" />
|
||||
|
||||
#### 2.查看kubernetes节点
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235439473.png" alt="image-20220828235439473" style="zoom:50%;" />
|
||||
|
||||
#### 3.查看资源概览
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235613811.png" alt="image-20220828235613811" style="zoom:50%;" />
|
||||
|
||||
#### 4.组件管理
|
||||
|
||||
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220828235643825.png" alt="image-20220828235643825" style="zoom:50%;" />
|
Loading…
Reference in New Issue
Block a user