5.5. 基于 Helm 的 Operator

5.5.1. 开始使用基于 Helm 的 Operator 的 Operator SDK

Operator SDK 包括生成一个 Operator 项目的选项,它利用现有 Helm chart 将 Kubernetes 资源部署为统一应用程序,而无需编写任何 Go 代码。

如需演示使用 Operator SDK 提供的工具和库来设置并运行基于 Helm 的 Operator 的基本知识,Operator 开发人员可以为 Nginx 构建一个基于 Helm 的 Operator 示例,并将它部署到集群中。

5.5.1.1. 先决条件

5.5.1.2. 创建并部署基于 Helm 的 Operator

您可以使用 Operator SDK 为 Nginx 构建和部署简单基于 Helm 的 Operator。

流程

  1. 创建一个项目。

    1. 创建您的项目目录:

      $ mkdir nginx-operator
    2. 切换到项目所在的目录:

      $ cd nginx-operator
    3. 使用 helm 插件运行 operator-sdk init 命令以初始化项目:

      $ operator-sdk init \
          --plugins=helm
  2. 创建 API。

    创建简单的 Nginx API:

    $ operator-sdk create api \
        --group demo \
        --version v1 \
        --kind Nginx

    此 API 使用 helm create 命令的内置 Helm Chart 网卡。

  3. 构建并推送 Operator 镜像。

    使用默认的 Makefile 目标来构建和推送 Operator。使用镜像的 pull spec 设置 IMG,该 spec 使用您可推送到的 registry:

    $ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
  4. 运行 Operator。

    1. 安装 CRD:

      $ make install
    2. 将项目部署到集群中。将 IMG 设置为您推送的镜像:

      $ make deploy IMG=<registry>/<user>/<image_name>:<tag>
  5. 添加安全性上下文约束(SCC)。

    Nginx 服务帐户需要特权访问权限才能在 OpenShift Container Platform 中运行。将以下 SCC 添加到 nginx-sample pod 的服务帐户中:

    $ oc adm policy add-scc-to-user \
        anyuid system:serviceaccount:nginx-operator-system:nginx-sample
  6. 创建示例自定义资源(CR)。

    1. 创建一个示例 CR:

      $ oc apply -f config/samples/demo_v1_nginx.yaml \
          -n nginx-operator-system
    2. 查看 CR 协调 Operator:

      $ oc logs deployment.apps/nginx-operator-controller-manager \
          -c manager \
          -n nginx-operator-system
  7. 清理。

    运行以下命令清理在此流程中创建的资源:

    $ make undeploy

5.5.1.3. 后续步骤