跳转至

部署 NebulaGraph Operator

用户可使用 Helm 工具部署 NebulaGraph Operator。

背景信息

NebulaGraph Operator 为用户管理 NebulaGraph 集群,使用户无需在生产环境中手动安装、扩展、升级和卸载 NebulaGraph,减轻用户管理不同应用版本的负担。

前提条件

安装软件

安装 NebulaGraph Operator 前,用户需要安装以下软件并确保安装版本的正确性:

软件 版本要求
Kubernetes >= 1.16
Helm >= 3.2.0
CoreDNS >= 1.6.0
CertManager >= 1.2.0
OpenKruise >= 0.8.0

如果使用基于角色的访问控制的策略,用户需开启 RBAC(可选)。

软件说明

Note

以下内容为 NebulaGraph Operator 使用的第三方项目,NebulaGraph Operator 不负责处理安装这些软件过程中出现的问题。

  • CoreDNS

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

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

  • cert-manager

    Note

    如果用户已将 NebulaGraph Operator 配置项admissionWebhook.create的值设为false,无需安装 cert-manager。有关配置项的详情,请参考下文安装 NebulaGraph Operator 中的自定义配置 Chart 部分。

    cert-manager 是一个自动化管理证书的工具,利用 Kubernetes API 扩展功能,使用 Webhook 服务器提供对 cert-manager 资源的动态准入控制。用户可参考 cert-manager installation documentation 安装 cert-manager。

    cert-manager 用于验证 NebulaGraph 的每个组件副本。如果用户在生产环境中运行它并关心 NebulaGraph 的高可用性,建议将admissionWebhook.create的值设为true,然后再安装 cert-manager。

  • OpenKruise

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

操作步骤

安装 NebulaGraph Operator

  1. 添加 NebulaGraph 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. 安装 NebulaGraph Operator。

    helm install nebula-operator nebula-operator/nebula-operator --namespace=<namespace_name> --version=${chart_version}
    

    例如,安装1.2.0版的 Operator 命令如下。

    helm install nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version=1.2.0
    
    • 上述命令中的nebula-operator-system为用户创建的命名空间。如果用户未创建该命名空间,可以执行kubectl create namespace nebula-operator-system进行创建。用户也可创建其他命名空间。
    • 1.2.0为 NebulaGraph Operator chart 的版本。当 Chart 中只有一个默认版本时,可不指定。执行helm search repo -l nebula-operator查看 Chart 版本。

    用户可在执行安装 NebulaGraph Operator chart 命令时自定义其配置。更多信息,查看下文自定义配置 Chart

自定义配置 Chart

执行helm show values [CHART] [flags]查看可配置的选项。

示例如下:

[abby@master ~]$ helm show values nebula-operator/nebula-operator   
image:
  nebulaOperator:
    image: vesoft/nebula-operator:v1.2.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:v1.2.0 NebulaGraph Operator 的镜像,版本为1.2.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

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

helm install nebula-operator nebula-operator/nebula-operator --namespace=<nebula-operator-system> --set admissionWebhook.create=false

参考 Helm 安装获取更多helm install相关信息。

更新 NebulaGraph Operator

  1. 拉取最新的 Helm 仓库。

    helm repo update
    
  2. 通过--set--values传递配置参数,更新 NebulaGraph Operator。

    • --set:通过命令行的方式对指定项进行覆盖。
    • --values (或 -f):使用 YAML 文件覆盖配置。

    有关可以更新的配置项,查看上文自定义配置 Chart

    例如,更新 NebulaGraph Operator 的 AdmissionWebhook 机制为关闭状态(默认开启 AdmissionWebhook)。

    helm upgrade nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version=1.2.0 --set admissionWebhook.create=false
    

    更多信息,参考 Helm 升级

升级 NebulaGraph Operator

历史版本兼容性

  • 不支持升级 0.9.0 及以下版本的 NebulaGraph Operator 至 1.x 版本。
  • 1.x 版本的 Nebula Operator 不兼容 3.x 以下版本的 Nebula Graph。
  1. 拉取最新的 Helm 仓库。

    helm repo update
    
  2. 升级 NebulaGraph Operator 至 1.2.0 版本。

    helm upgrade nebula-operator nebula-operator/nebula-operator --namespace=<namespace_name> --version=1.2.0
    

    示例:

    helm upgrade nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version=1.2.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:
    NebulaGraph Operator installed!
    
  3. 拉取最新的 CRD 配置文件。

    Note

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

    1. 下载 NebulaGraph Operator chart 至本地。

      helm pull nebula-operator/nebula-operator --version=1.2.0
      
      • --version: 升级版本号。如不指定,则默认为最新版本。
    2. 执行tar -zxvf解压安装包。

      例如:解压 1.2.0 chart 包至/tmp路径下。

      tar -zxvf nebula-operator-1.2.0.tgz -C /tmp
      
      • -C /tmp: 如不指定,则默认解压至当前路径。
  4. nebula-operator目录下升级 CRD 配置文件。

    kubectl apply -f crds/nebulacluster.yaml
    

    输出:

    customresourcedefinition.apiextensions.k8s.io/nebulaclusters.apps.nebula-graph.io configured
    

卸载 NebulaGraph Operator

  1. 卸载 NebulaGraph Operator chart。

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

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

后续操作

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


最后更新: September 27, 2022