部署 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=<namespace_name> --version=${chart_version}
例如,安装0.9.0版的 Operator 命令如下。
helm install nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version=0.9.0
- 上述命令中的
nebula-operator-system
为用户创建的命名空间。如果用户未创建该命名空间,可以执行kubectl create namespace nebula-operator-system
进行创建。用户也可创建其他命名空间。
0.9.0
为 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.9.0
imagePullPolicy: Always
kubeRBACProxy:
image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
imagePullPolicy: Always
kubeScheduler:
image: k8s.gcr.io/kube-scheduler:v1.18.8
imagePullPolicy: Always
imagePullSecrets: []
kubernetesClusterDomain: ""
controllerManager:
create: true
replicas: 2
env: []
resources:
limits:
cpu: 200m
memory: 200Mi
requests:
cpu: 100m
memory: 100Mi
admissionWebhook:
create: true
scheduler:
create: true
schedulerName: nebula-scheduler
replicas: 2
env: []
resources:
limits:
cpu: 200m
memory: 200Mi
requests:
cpu: 100m
memory: 100Mi
...
部分参数描述如下:
参数 | 默认值 | 描述 |
---|---|---|
image.nebulaOperator.image |
vesoft/nebula-operator:v0.9.0 |
Nebula Operator 的镜像,版本为0.9.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=<namespace_name> -f ${HOME}/nebula-operator/charts/nebula-operator/values.yaml
<namespace_name>
为用户创建的命名空间,nebula-operator 相关 Pods 在此命名空间下。
升级 Nebula Operator¶
历史版本兼容性
由于 0.9.0 版本的 Nebula Operator 的日志盘和数据盘分开存储,因此用升级后的 Operator 管理 2.5.x 版本的 Nebula Graph 集群会导致兼容性问题。用户可以备份 2.5.x 版本的 Nebula Graph 集群,然后使用升级版本的 Operator 创建 2.6.x 版本集群。
-
拉取最新的 Helm 仓库。
helm repo update
-
升级 Operator。
helm upgrade nebula-operator nebula-operator/nebula-operator --namespace=<namespace_name> --version=0.9.0
示例:
helm upgrade nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version=0.9.0
输出:
Release "nebula-operator" has been upgraded. Happy Helming! NAME: nebula-operator LAST DEPLOYED: Tue Nov 16 02:21:08 2021 NAMESPACE: nebula-operator-system STATUS: deployed REVISION: 3 TEST SUITE: None NOTES: Nebula Operator installed!
-
拉取最新的 CRD 配置文件。
Note
升级 Operator 后,需要同时升级相应的 CRD 配置,否则 Nebula Graph 集群创建会失败。有关 CRD 的配置,参见 apps.nebula-graph.io_nebulaclusters.yaml。
helm pull nebula-operator/nebula-operator
-
升级 CRD 配置文件。
kubectl apply -f <crd_file_name>.yaml
示例:
kubectl apply -f config/crd/bases/apps.nebula-graph.io_nebulaclusters.yaml
输出:
customresourcedefinition.apiextensions.k8s.io/nebulaclusters.apps.nebula-graph.io created
卸载 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 集群。