5.3. 基于 Go 的 Operator

5.3.1. 基于 Go 的 Operator 开始使用 Operator SDK

如需演示使用 Operator SDK 提供的工具和库来设置和运行基于 Go 的 Operator 的基本知识,Operator 开发人员可以为 Memcached 构建 Go-based Operator 示例,一个分布式键值存储,并将它部署到集群中。

5.3.1.1. 先决条件

5.3.1.2. 创建并部署基于 Go 的 Operator

您可以使用 Operator SDK 为 Memcached 构建和部署简单的 Go-based Operator。

流程

  1. 创建一个项目。

    1. 创建您的项目目录:

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

      $ cd memcached-operator
    3. 运行 operator-sdk init 命令以初始化项目:

      $ operator-sdk init \
          --domain=example.com \
          --repo=github.com/example-inc/memcached-operator

      命令默认使用 Go 插件。

    4. 要启用基于 Go 的 Operator 在 OpenShift Container Platform 上运行,编辑 config/manager/manager.yaml 文件并替换以下行:

      runAsUser: 65532

      使用:

      runAsNonRoot: true
      注意

      此步骤只是针对 Go 的 Operator 的一个临时解决方案。如需更多信息,请参阅 BZ#1914406

  2. 创建 API。

    创建简单的 Memcached API:

    $ operator-sdk create api \
        --resource=true \
        --controller=true \
        --group cache \
        --version v1 \
        --kind Memcached
  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. 创建示例自定义资源(CR)。

    1. 创建一个示例 CR:

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

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

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

    $ make undeploy

5.3.1.3. 后续步骤