5.3. 基于 Go 的 Operator
5.3.1. 基于 Go 的 Operator 开始使用 Operator SDK
如需演示使用 Operator SDK 提供的工具和库来设置和运行基于 Go 的 Operator 的基本知识,Operator 开发人员可以为 Memcached 构建 Go-based Operator 示例,一个分布式键值存储,并将它部署到集群中。
5.3.1.1. 先决条件
- 已安装 operator SDK CLI
-
已安装 OpenShift CLI(
oc
)v4.7+ -
使用具有
cluster-admin
权限的oc
登录到 OpenShift Container Platform 4.7 集群 - 要允许集群拉取镜像,推送镜像的存储库必须设置为公共的存储库,或必须配置一个镜像 pull secret。
5.3.1.2. 创建并部署基于 Go 的 Operator
您可以使用 Operator SDK 为 Memcached 构建和部署简单的 Go-based Operator。
流程
创建一个项目。
创建您的项目目录:
$ mkdir memcached-operator
切换到项目所在的目录:
$ cd memcached-operator
运行
operator-sdk init
命令以初始化项目:$ operator-sdk init \ --domain=example.com \ --repo=github.com/example-inc/memcached-operator
命令默认使用 Go 插件。
要启用基于 Go 的 Operator 在 OpenShift Container Platform 上运行,编辑
config/manager/manager.yaml
文件并替换以下行:runAsUser: 65532
使用:
runAsNonRoot: true
注意此步骤只是针对 Go 的 Operator 的一个临时解决方案。如需更多信息,请参阅 BZ#1914406。
创建 API。
创建简单的 Memcached API:
$ operator-sdk create api \ --resource=true \ --controller=true \ --group cache \ --version v1 \ --kind Memcached
构建并推送 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>
创建示例自定义资源(CR)。
创建一个示例 CR:
$ oc apply -f config/samples/cache_v1_memcached.yaml \ -n memcached-operator-system
查看 CR 协调 Operator:
$ oc logs deployment.apps/memcached-operator-controller-manager \ -c manager \ -n memcached-operator-system
清理。
运行以下命令清理在此流程中创建的资源:
$ make undeploy
5.3.1.3. 后续步骤
- 如需更深入地了解如何构建基于 Go 的 Operator,请参阅基于 Go 的 Operator SDK 指南。