跳转至

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

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

    helm repo update
    

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

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

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

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

  3. 更新 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 版本集群。

  1. 拉取最新的 Helm 仓库。

    helm repo update
    
  2. 升级 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!
    
  3. 拉取最新的 CRD 配置文件。

    Note

    升级 Operator 后,需要同时升级相应的 CRD 配置,否则 Nebula Graph 集群创建会失败。有关 CRD 的配置,参见 apps.nebula-graph.io_nebulaclusters.yaml

    helm pull nebula-operator/nebula-operator
    
  4. 升级 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

  1. 卸载 Nebula Operator chart。

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

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

后续操作

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


最后更新: March 7, 2023