5.5.2.5. 创建自定义资源
安装 Operator 后,您可以通过创建一个由 Operator 在集群中提供的自定义资源(CR)来测试它。
先决条件
-
Nginx Operator 示例,它提供了
NginxCR,在集群中安装
流程
切换到安装 Operator 的命名空间。例如,如果使用
make deploy命令部署 Operator:$ oc project nginx-operator-system编辑
config/samples/demo_v1_nginx.yaml中的NginxCR 清单示例,使其包含以下规格:apiVersion: demo.example.com/v1 kind: Nginx metadata: name: nginx-sample ... spec: ... replicaCount: 3Nginx 服务帐户需要特权访问权限才能在 OpenShift Container Platform 中运行。将以下安全性上下文约束 (SCC) 添加到
nginx-samplepod 的服务帐户中:$ oc adm policy add-scc-to-user \ anyuid system:serviceaccount:nginx-operator-system:nginx-sample创建 CR:
$ oc apply -f config/samples/demo_v1_nginx.yaml确保
NginxOperator 为示例 CR 创建部署,其大小正确:$ oc get deployments输出示例
NAME READY UP-TO-DATE AVAILABLE AGE nginx-operator-controller-manager 1/1 1 1 8m nginx-sample 3/3 3 3 1m检查 pod 和 CR 状态,以确认其状态是否使用 Nginx pod 名称更新。
检查 pod:
$ oc get pods输出示例
NAME READY STATUS RESTARTS AGE nginx-sample-6fd7c98d8-7dqdr 1/1 Running 0 1m nginx-sample-6fd7c98d8-g5k7v 1/1 Running 0 1m nginx-sample-6fd7c98d8-m7vn7 1/1 Running 0 1m检查 CR 状态:
$ oc get nginx/nginx-sample -o yaml输出示例
apiVersion: demo.example.com/v1 kind: Nginx metadata: ... name: nginx-sample ... spec: replicaCount: 3 status: nodes: - nginx-sample-6fd7c98d8-7dqdr - nginx-sample-6fd7c98d8-g5k7v - nginx-sample-6fd7c98d8-m7vn7
更新部署大小。
更新
config/samples/demo_v1_nginx.yaml文件,将NginxCR 中的spec.size字段从3改为5:$ oc patch nginx nginx-sample \ -p '{"spec":{"replicaCount": 5}}' \ --type=merge确认 Operator 已更改部署大小:
$ oc get deployments输出示例
NAME READY UP-TO-DATE AVAILABLE AGE nginx-operator-controller-manager 1/1 1 1 10m nginx-sample 5/5 5 5 3m
清理本教程中创建的资源。
如果使用
make deploy命令来测试 Operator,请运行以下命令:$ make undeploy如果使用
operator-sdk run bundle命令来测试 Operator,请运行以下命令:$ operator-sdk cleanup <project_name>