×

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

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

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

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

  • 基于Ansible的Operator项目的基镜像

  • 基于Helm的Operator项目的基镜像

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

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

先决条件

  • 已安装Operator SDK CLI

  • 已安装OpenShift CLI (oc) 4.17+

  • Go 1.21+

  • 使用具有cluster-admin权限的帐户使用oc登录到OpenShift Container Platform 4.17集群

  • 为了允许集群拉取镜像,您推送镜像的仓库必须设置为公共仓库,或者您必须配置镜像拉取密钥

创建和部署基于Go的Operator

您可以使用Operator SDK构建和部署一个简单的基于Go的Memcached 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插件。

  2. 创建一个API。

    创建一个简单的Memcached API

    $ operator-sdk create api \
        --resource=true \
        --controller=true \
        --group cache \
        --version v1 \
        --kind Memcached
  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
  6. 删除 CR。

    运行以下命令删除 CR

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

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

    $ make undeploy

后续步骤