部署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

    CoreDNS是一个灵活的、可扩展的DNS服务器,被安装在集群内作为集群内Pods的DNS服务器。

    Nebula Graph集群中的每个组件通过DNS解析类似x.default.svc.cluster.local这样的域名相互通信。

  • cert-manager

    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

    OpenKruise是Kubernetes的一整套标准扩展,能与原始的Kubernetes一起工作,为应用Pod、Sidecar容器,甚至是节点中的镜像的管理供更强大和高效的功能。Nebula Operator启动时需要用到OpenKruise开启针对StatefulSet的高级功能。用户可参考openkruise installation documentation安装OpenKruise。

操作步骤

安装Nebula Operator

  1. 添加Nebula Operator chart仓库至Helm。

    1. helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts
  2. 拉取最新的Helm仓库。

    1. helm repo update

    参考Helm仓库获取更多helm repo相关信息。

  3. 安装Nebula Operator。

    1. 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]查看可配置的选项。

示例如下:

  1. [abby@master ~]$ helm show values nebula-operator/nebula-operator
  2. image:
  3. nebulaOperator:
  4. image: vesoft/nebula-operator:v0.8.0
  5. imagePullPolicy: IfNotPresent
  6. kubeRBACProxy:
  7. image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
  8. imagePullPolicy: IfNotPresent
  9. kubeScheduler:
  10. image: k8s.gcr.io/kube-scheduler:v1.18.8
  11. imagePullPolicy: IfNotPresent
  12. imagePullSecrets: []
  13. kubernetesClusterDomain: ""
  14. controllerManager:
  15. create: true
  16. replicas: 2
  17. env: []
  18. resources:
  19. limits:
  20. cpu: 100m
  21. memory: 30Mi
  22. requests:
  23. cpu: 100m
  24. memory: 20Mi
  25. admissionWebhook:
  26. create: true
  27. scheduler:
  28. create: true
  29. schedulerName: nebula-scheduler
  30. replicas: 2
  31. env: []
  32. resources:
  33. limits:
  34. cpu: 100m
  35. memory: 30Mi
  36. requests:
  37. cpu: 100m
  38. memory: 20Mi

values.yaml中参数描述如下:

参数默认值描述
image.nebulaOperator.imagevesoft/nebula-operator:v0.8.0Nebula Operator的镜像,版本为v0.8.0。
image.nebulaOperator.imagePullPolicyIfNotPresent镜像拉取策略。
imagePullSecrets-镜像拉取密钥。
kubernetesClusterDomaincluster.local集群域名。
controllerManager.createtrue是否启用controller-manager。
controllerManager.replicas2controller-manager副本数。
admissionWebhook.createtrue是否启用Admission Webhook。
shceduler.createtrue是否启用Scheduler。
shceduler.schedulerNamenebula-scheduler调度器名称。
shceduler.replicas2nebula-scheduler副本数。

执行helm install [NAME] [CHART] [flags]命令安装Chart时,可指定Chart配置。更多信息,参考安装前自定义Chart

以下示例为在安装Nebula Operator时,指定Nebula Operator的AdmissionWebhook机制为关闭状态(默认开启AdmissionWebhook):

  1. 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。操作步骤如下:

  1. 克隆Nebula Operator仓库至本机。

    1. git clone https://github.com/vesoft-inc/nebula-operator.git
  2. 修改${HOME}/nebula-operator/charts/nebula-operator/values.yaml文件中的参数值。

  3. 更新Nebula Operator。

    1. 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

  1. 卸载Nebula Operator chart。

    1. helm uninstall nebula-operator --namespace=<nebula-operator-system>
  2. 删除CRD。

    1. kubectl delete crd nebulaclusters.apps.nebula-graph.io

后续操作

使用Nebula Operator自动化部署Nebula Graph集群。更多信息,请参考使用Kubectl部署Nebula Graph集群或者使用Helm部署Nebula Graph集群


最后更新: November 4, 2021