部署Nebula Operator
用户可使用Helm工具部署Nebula Operator。
背景信息
Nebula Operator为用户管理Nebula Graph集群,使用户无需在生产环境中手动安装、扩展、升级和卸载Nebula Graph,减轻用户管理不同应用版本的负担。
前提条件
安装软件
安装Nebula Operator前,用户需要安装以下软件并确保安装版本的正确性:
软件 | 版本要求 |
---|---|
Kubernetes | >= 1.16 |
Helm | >= 3.2.0 |
CoreDNS | >= 1.6.0 |
CertManager | >= 1.2.0 |
OpenKruise | >= 0.8.0 |
如果使用基于角色的访问控制的策略,用户需开启RBAC(可选)。
软件说明
Note
以下内容为Nebula Operator使用的第三方项目,Nebula Operator不负责处理安装这些软件过程中出现的问题.
-
CoreDNS是一个灵活的、可扩展的DNS服务器,被安装在集群内作为集群内Pods的DNS服务器。
Nebula Graph集群中的每个组件通过DNS解析类似
x.default.svc.cluster.local
这样的域名相互通信。 -
Note
如果用户已将Nebula Operator配置项
admissionWebhook.create
的值设为false
,无需安装cert-manager。有关配置项的详情,请参考下文安装Nebula Operator中的自定义配置Chart部分。cert-manager是一个自动化管理证书的工具,利用Kubernetes API扩展功能,使用Webhook服务器提供对cert-manager资源的动态准入控制。用户可参考cert-manager installation documentation安装cert-manager。
cert-manager用于验证Nebula Graph的每个组件副本。如果用户在生产环境中运行它并关心Nebula Graph的高可用性,建议将
admissionWebhook.create
的值设为true
,然后再安装cert-manager。 -
OpenKruise是Kubernetes的一整套标准扩展,能与原始的Kubernetes一起工作,为应用Pod、Sidecar容器,甚至是节点中的镜像的管理供更强大和高效的功能。Nebula Operator启动时需要用到OpenKruise开启针对StatefulSet的高级功能。用户可参考openkruise installation documentation安装OpenKruise。
操作步骤
安装Nebula Operator
添加Nebula Operator chart仓库至Helm。
helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts
拉取最新的Helm仓库。
helm repo update
参考Helm仓库获取更多
helm repo
相关信息。安装Nebula Operator。
helm install nebula-operator nebula-operator/nebula-operator --namespace=<nebula-operator-system> --version=${chart_version}
上述命令中的
<nebula-operator-system>
为用户创建的命名空间。如果用户未创建该命名空间,可以执行kubectl create namespace nebula-operator-system
进行创建。用户也可创建其他命名空间。${chart_version}
为Nebula Operator chart的版本。当Chart中只有一个默认版本时,可不指定。执行helm search repo -l nebula-operator
查看Chart版本。
用户可在执行安装Nebula Operator chart命令时自定义其配置。更多信息,查看下文自定义配置Chart。
自定义配置Chart
执行helm show values [CHART] [flags]
查看可配置的选项。
示例如下:
[abby@master ~]$ helm show values nebula-operator/nebula-operator
image:
nebulaOperator:
image: vesoft/nebula-operator:v0.8.0
imagePullPolicy: IfNotPresent
kubeRBACProxy:
image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
imagePullPolicy: IfNotPresent
kubeScheduler:
image: k8s.gcr.io/kube-scheduler:v1.18.8
imagePullPolicy: IfNotPresent
imagePullSecrets: []
kubernetesClusterDomain: ""
controllerManager:
create: true
replicas: 2
env: []
resources:
limits:
cpu: 100m
memory: 30Mi
requests:
cpu: 100m
memory: 20Mi
admissionWebhook:
create: true
scheduler:
create: true
schedulerName: nebula-scheduler
replicas: 2
env: []
resources:
limits:
cpu: 100m
memory: 30Mi
requests:
cpu: 100m
memory: 20Mi
values.yaml
中参数描述如下:
参数 | 默认值 | 描述 |
---|---|---|
image.nebulaOperator.image | vesoft/nebula-operator:v0.8.0 | Nebula Operator的镜像,版本为v0.8.0。 |
image.nebulaOperator.imagePullPolicy | IfNotPresent | 镜像拉取策略。 |
imagePullSecrets | - | 镜像拉取密钥。 |
kubernetesClusterDomain | cluster.local | 集群域名。 |
controllerManager.create | true | 是否启用controller-manager。 |
controllerManager.replicas | 2 | controller-manager副本数。 |
admissionWebhook.create | true | 是否启用Admission Webhook。 |
shceduler.create | true | 是否启用Scheduler。 |
shceduler.schedulerName | nebula-scheduler | 调度器名称。 |
shceduler.replicas | 2 | nebula-scheduler副本数。 |
执行helm install [NAME] [CHART] [flags]
命令安装Chart时,可指定Chart配置。更多信息,参考安装前自定义Chart。
以下示例为在安装Nebula Operator时,指定Nebula Operator的AdmissionWebhook机制为关闭状态(默认开启AdmissionWebhook):
helm install nebula-operator nebula-operator/nebula-operator --namespace=<nebula-operator-system> --set admissionWebhook.create=false
参考Helm安装获取更多helm install
相关信息。
更新Nebula Operator
用户安装Nebula Operator后,可通过修改${HOME}/nebula-operator/charts/nebula-operator/values.yaml
文件中参数的值来更新Nebula Operator。操作步骤如下:
克隆Nebula Operator仓库至本机。
git clone https://github.com/vesoft-inc/nebula-operator.git
修改
${HOME}/nebula-operator/charts/nebula-operator/values.yaml
文件中的参数值。更新Nebula Operator。
helm upgrade nebula-operator nebula-operator/nebula-operator --namespace=<nebula-operator-system> -f ${HOME}/nebula-operator/charts/nebula-operator/values.yaml
<nebula-operator-system>
为用户创建的命名空间,nebula-operator相关Pods在此命名空间下。
卸载Nebula Operator
卸载Nebula Operator chart。
helm uninstall nebula-operator --namespace=<nebula-operator-system>
删除CRD。
kubectl delete crd nebulaclusters.apps.nebula-graph.io
后续操作
使用Nebula Operator自动化部署Nebula Graph集群。更多信息,请参考使用Kubectl部署Nebula Graph集群或者使用Helm部署Nebula Graph集群。
最后更新: November 4, 2021