This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.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 0 1
- 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-kubeconfig 1 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-kubeconfig 1 mountPath: /scorecard-secret env: - name: KUBECONFIG 2 value: /scorecard-secret/config - name: container2 3 ...
将 scorecard 代理容器插入到 Operator 的部署中:
spec: install: spec: deployments: - name: memcached-operator spec: ... template: ... spec: containers: ... - name: scorecard-proxy 1 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/file
source
csv-manifest-modifiers.sh
文件:$ . ./csv-manifest-modifiers.sh
创建
kubeconfig
secret 文件:$ 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 清单的路径。
插入
kubeconfig
secret 挂载:$ 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