$ mkdir nginx-operator
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。
有关 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 集群
要允许集群拉取镜像,您推送镜像的仓库必须设置为公共仓库,或者您必须配置镜像拉取密钥
您可以使用 Operator SDK 构建和部署用于 Nginx 的简单的基于 Helm 的 Operator。
创建一个项目。
创建您的项目目录
$ mkdir nginx-operator
切换到项目目录
$ cd nginx-operator
使用 helm
插件运行 operator-sdk init
命令来初始化项目
$ operator-sdk init \
--plugins=helm
创建一个 API。
创建一个简单的 Nginx API
$ operator-sdk create api \
--group demo \
--version v1 \
--kind Nginx
此 API 使用 helm create
命令中的内置 Helm chart 模板。
构建和推送 Operator 镜像。
使用默认的 Makefile
目标来构建和推送您的 Operator。使用您可以推送到的注册表设置使用拉取规范的 IMG
镜像。
$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
运行 Operator。
安装 CRD
$ make install
将项目部署到集群。将 IMG
设置为您推送的镜像
$ make deploy IMG=<registry>/<user>/<image_name>:<tag>
添加安全上下文约束 (SCC)。
Nginx 服务帐户需要特权访问才能在 OpenShift Container Platform 中运行。为 nginx-sample
pod 的服务帐户添加以下 SCC
$ oc adm policy add-scc-to-user \
anyuid system:serviceaccount:nginx-operator-system:nginx-sample
创建一个示例自定义资源 (CR)。
创建一个示例 CR
$ oc apply -f config/samples/demo_v1_nginx.yaml \
-n nginx-operator-system
监视 CR 以协调 Operator
$ oc logs deployment.apps/nginx-operator-controller-manager \
-c manager \
-n nginx-operator-system
删除 CR。
通过运行以下命令删除 CR
$ oc delete -f config/samples/demo_v1_nginx.yaml -n nginx-operator-system
清理。
运行以下命令来清理在此过程中创建的资源
$ make undeploy
请参阅 基于 Helm 的 Operator 的 Operator SDK 教程,了解有关构建基于 Helm 的 Operator 的更深入演练。