×

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

Operator SDK CLI 工具(包括与 Operator 项目相关的脚手架和测试工具)的 Red Hat 支持版本已弃用,计划在未来版本的 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 提供的工具和库设置和运行基于 Helm 的 Operator 的基础知识,Operator 开发人员可以构建一个用于 Nginx 的示例基于 Helm 的 Operator 并将其部署到集群。

前提条件

  • 已安装 Operator SDK CLI

  • 已安装 OpenShift CLI (oc) 4.17+

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

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

创建和部署基于 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。使用您可以推送到的注册表设置使用拉取规范的 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. 添加安全上下文约束 (SCC)。

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

    $ 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. 删除 CR。

    通过运行以下命令删除 CR

    $ oc delete -f config/samples/demo_v1_nginx.yaml -n nginx-operator-system
  8. 清理。

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

    $ make undeploy

后续步骤