5.8.5. 使用 OLM 管理的 Operator 运行 scorecard
可使用集群服务版本(CSV)运行 scorecard,提供测试集群就绪和非 SDK Operator 的方法。
流程
Scorecard 需要 Operator 部署 pod 中的代理容器来读取 Operator 日志。在使用 OLM 部署 Operator 之前,需要对 CSV 进行一些修改并创建一个额外的对象来运行代理。
这一步可以手动执行或使用 bash 功能自动执行。选择以下任一方法。
手动方法:
创建包含本地
kubeconfig文件的代理服务器 secret。使用 scorecard 代理的命名空间所有者引用生成用户名。
$ echo '{"apiVersion":"","kind":"","name":"scorecard","uid":"","Namespace":"'<namespace>'"}' | base64 -w 01 - 1
- 将
<namespace>替换为 Operator 将部署到的命名空间。
使用以下模板编写
Config清单scorecard-config.yaml,将<username>替换为上一步中生成的 base64 用户名:apiVersion: v1 kind: Config clusters: - cluster: insecure-skip-tls-verify: true server: http://<username>@localhost:8889 name: proxy-server contexts: - context: cluster: proxy-server user: admin/proxy-server name: <namespace>/proxy-server current-context: <namespace>/proxy-server preferences: {} users: - name: admin/proxy-server user: username: <username> password: unused将
Config编码为 base64:$ cat scorecard-config.yaml | base64 -w 0创建
Secret清单scorecard-secret.yaml:apiVersion: v1 kind: Secret metadata: name: scorecard-kubeconfig namespace: <namespace>1 data: kubeconfig: <kubeconfig_base64>2 应用 secret:
$ oc apply -f scorecard-secret.yaml将一个指向 secret 的卷插入到 Operator 的部署中:
spec: install: spec: deployments: - name: memcached-operator spec: ... template: ... spec: containers: ... volumes: - name: scorecard-kubeconfig1 secret: secretName: scorecard-kubeconfig items: - key: kubeconfig path: config- 1
- Scorecard
kubeconfig卷。
在 Operator 部署中将卷挂载和
KUBECONFIG环境变量插入到每个容器中:spec: install: spec: deployments: - name: memcached-operator spec: ... template: ... spec: containers: - name: container1 ... volumeMounts: - name: scorecard-kubeconfig1 mountPath: /scorecard-secret env: - name: KUBECONFIG2 value: /scorecard-secret/config - name: container23 ...将 scorecard 代理容器插入到 Operator 的部署中:
spec: install: spec: deployments: - name: memcached-operator spec: ... template: ... spec: containers: ... - name: scorecard-proxy1 command: - scorecard-proxy env: - name: WATCH_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace image: quay.io/operator-framework/scorecard-proxy:master imagePullPolicy: Always ports: - name: proxy containerPort: 8889- 1
- Scorecard 代理容器。
自动方法:
Community-operators存储库有几个 bash 功能,可为您执行流程中的前面步骤。运行以下
curl命令:$ curl -Lo csv-manifest-modifiers.sh \ https://raw.githubusercontent.com/operator-framework/community-operators/master/scripts/lib/filesource
csv-manifest-modifiers.sh文件:$ . ./csv-manifest-modifiers.sh创建
kubeconfigsecret 文件:$ create_kubeconfig_secret_file scorecard-secret.yaml "<namespace>"1 - 1
- 将
<namespace>替换为 Operator 将部署到的命名空间。
应用 secret:
$ oc apply -f scorecard-secret.yaml插入
kubeconfig卷:$ insert_kubeconfig_volume "<csv_file>"1 - 1
- 将
<csv_file>替换为 CSV 清单的路径。
插入
kubeconfigsecret 挂载:$ insert_kubeconfig_secret_mount "<csv_file>"插入代理容器:
$ insert_proxy_container "<csv_file>" "quay.io/operator-framework/scorecard-proxy:master"
- 插入代理容器后,按照 Operator SDK 入门指南中的步骤捆绑 CSV 和 CRD,并在 OLM 上部署 Operator。
-
在 OLM 上部署了 Operator 后,请在 Operator 项目中定义
.osdk-scorecard.yaml配置文件,并确保csv-path: <csv_manifest_path>和olm-deployed选项都已设置。 在
csv-path: <csv_manifest_path>和olm-deployed均已在 scorecard 配置文件中设置的情况下运行 scorecard:$ operator-sdk scorecard