5.5. 基于 Helm 的 Operator
5.5.1. 开始使用基于 Helm 的 Operator 的 Operator SDK
Operator SDK 包括生成一个 Operator 项目的选项,它利用现有 Helm chart 将 Kubernetes 资源部署为统一应用程序,而无需编写任何 Go 代码。
如需演示使用 Operator SDK 提供的工具和库来设置并运行基于 Helm 的 Operator 的基本知识,Operator 开发人员可以为 Nginx 构建一个基于 Helm 的 Operator 示例,并将它部署到集群中。
5.5.1.1. 先决条件
- 已安装 operator SDK CLI
-
已安装 OpenShift CLI(
oc
)v4.7+ -
使用具有
cluster-admin
权限的oc
登录到 OpenShift Container Platform 4.7 集群 - 要允许集群拉取镜像,推送镜像的存储库必须设置为公共的存储库,或必须配置一个镜像 pull secret。
5.5.1.2. 创建并部署基于 Helm 的 Operator
您可以使用 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。使用镜像的 pull spec 设置IMG
,该 spec 使用您可推送到的 registry:$ 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 中运行。将以下 SCC 添加到
nginx-sample
pod 的服务帐户中:$ 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
清理。
运行以下命令清理在此流程中创建的资源:
$ make undeploy
5.5.1.3. 后续步骤
- 如需更深入地了解如何构建基于 Helm 的 Operator,请参阅基于 Helm 的 Operator SDK 指南。