×

Operator SDK 包含用于生成利用现有 Ansible playbook 和模块来部署 Kubernetes 资源作为统一应用程序的操作符项目的选项,无需编写任何 Go 代码。

Red Hat 支持的 Operator SDK CLI 工具版本(包括与操作符项目相关的脚手架和测试工具)已弃用,并计划在未来版本的 OpenShift Container Platform 中删除。Red Hat 将在此版本的生命周期内为此功能提供错误修复和支持,但此功能将不再接收增强功能,并将从未来的 OpenShift Container Platform 版本中删除。

不建议使用 Red Hat 支持的 Operator SDK 版本创建新的操作符项目。拥有现有操作符项目的 Operator 作者可以使用 OpenShift Container Platform 4.17 版本中发布的 Operator SDK CLI 工具版本来维护其项目并创建针对较新版本的 OpenShift Container Platform 的 Operator 版本。

以下与操作符项目相关的基础镜像被弃用。这些基础镜像的运行时功能和配置 API 仍然支持错误修复和解决 CVE。

  • 基于 Ansible 的操作符项目的基镜像

  • 基于 Helm 的操作符项目的基镜像

有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行说明中的“已弃用和删除的功能”部分。

有关不受支持的社区维护版本的 Operator SDK 的信息,请参阅Operator SDK (Operator Framework)

为了演示使用 Operator SDK 提供的工具和库设置和运行基于Ansible的操作符的基础知识,Operator 开发人员可以为 Memcached(一个分布式键值存储)构建一个基于 Ansible 的示例操作符,并将其部署到集群。

先决条件

创建和部署基于 Ansible 的操作符

您可以使用 Operator SDK 构建和部署一个简单的基于 Ansible 的 Memcached 操作符。

步骤
  1. 创建项目。

    1. 创建项目目录

      $ mkdir memcached-operator
    2. 切换到项目目录

      $ cd memcached-operator
    3. 使用ansible插件运行operator-sdk init命令来初始化项目

      $ operator-sdk init \
          --plugins=ansible \
          --domain=example.com
  2. 创建API。

    创建一个简单的Memcached API

    $ operator-sdk create api \
        --group cache \
        --version v1 \
        --kind Memcached \
        --generate-role (1)
    1 为API生成Ansible角色。
  3. 构建和推送Operator镜像。

    使用默认的Makefile目标来构建和推送您的Operator。使用您可以推送到的注册表设置包含拉取规范的IMG镜像。

    $ 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
      示例输出
      ...
      I0205 17:48:45.881666       7 leaderelection.go:253] successfully acquired lease memcached-operator-system/memcached-operator
      {"level":"info","ts":1612547325.8819902,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting EventSource","source":"kind source: cache.example.com/v1, Kind=Memcached"}
      {"level":"info","ts":1612547325.98242,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting Controller"}
      {"level":"info","ts":1612547325.9824686,"logger":"controller-runtime.manager.controller.memcached-controller","msg":"Starting workers","worker count":4}
      {"level":"info","ts":1612547348.8311093,"logger":"runner","msg":"Ansible-runner exited successfully","job":"4037200794235010051","name":"memcached-sample","namespace":"memcached-operator-system"}
  6. 删除CR。

    运行以下命令删除CR

    $ oc delete -f config/samples/cache_v1_memcached.yaml -n memcached-operator-system
  7. 清理。

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

    $ make undeploy

后续步骤