12.3. 创建集群镜像策略 CR
ClusterImagePolicy
自定义资源(CR)可让集群管理员为整个集群配置 sigstore 签名验证策略。启用后,Machine Config Operator (MCO)会监控 ClusterImagePolicy
对象,并更新集群中所有节点上的 /etc/containers/policy.json
和 /etc/containers/registries.d/sigstore-registries.yaml
文件。
以下示例显示了如何配置 ClusterImagePolicy
对象的一般准则。有关参数的详情,请参阅"关于集群和镜像策略参数"。
先决条件
- 您有一个 sigstore 支持的公钥基础架构(PKI)或 Cosign 公钥和私钥对用于签名操作。
- 您有一个签名过程来为您的镜像签名。
- 如果使用 Cosign 签名,您可以访问支持 Cosign 签名的 registry。
您可以通过编辑名为
cluster
的FeatureGate
CR 为集群启用所需的技术预览功能:oc edit featuregate cluster
$ oc edit featuregate cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow FeatureGate
CR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 启用所需的
SigstoreImageVerification
功能。
警告在集群中启用
TechPreviewNoUpgrade
功能集无法撤消,并会阻止次版本更新。此功能集允许您在测试集群中启用这些技术预览功能,您可以在测试集群中完全测试它们。不要在生产环境集群中启用此功能。保存更改后,会创建新的机器配置,然后更新机器配置池,并在应用更改时在每个节点上调度。
流程
创建类似以下示例的集群镜像策略对象。有关这些参数的具体详情,请参阅"关于镜像策略参数"。
带有公钥策略和
MatchRepoDigestOrExact
匹配策略的集群镜像策略对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 创建
ClusterImagePolicy
对象。 - 2
- 定义分配给此策略的存储库或镜像列表。在集群镜像策略中,确保策略不会阻止在
quay.io/openshift-release-dev/ocp-release
和quay.io/openshift-release-dev/ocp-v4.0-dev/ocp-v4.0-art-dev
仓库中部署 OpenShift Container Platform 镜像。集群操作需要这些软件仓库中的镜像。 - 3
- 指定定义如何验证镜像的参数。
- 4
- 定义策略的信任根。
- 5
- 指定定义信任根的策略类型,可以是公钥或 Fulcio 证书。在这里,使用 Rekor 验证的公钥。
- 6
- 对于公钥策略,以 PEM 格式指定 base64 编码的公钥。最大长度为 8192 个字符。
- 7
- 可选:以 PEM 格式指定 base64 编码的 Rekor 公钥。最大长度为 8192 个字符。
- 8
- 可选:指定以下进程之一来验证签名中的身份和实际镜像身份:
-
MatchRepoDigestOrExact
. -
MatchRepository
. -
ExactRepository
.必须指定exactRepository
参数。 -
RemapIdentity
。必须指定prefix
和signedPrefix
参数。
-
带有 Fulcio 证书策略和
remapIdentity
匹配策略的集群镜像策略对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 创建
ClusterImagePolicy
对象。 - 2
- 定义分配给此策略的存储库或镜像列表。在集群镜像策略中,确保策略不会阻止在
quay.io/openshift-release-dev/ocp-release
和quay.io/openshift-release-dev/ocp-v4.0-dev/ocp-v4.0-art-dev
仓库中部署 OpenShift Container Platform 镜像。集群操作需要这些软件仓库中的镜像。 - 3
- 指定定义如何验证镜像的参数。
- 4
- 定义策略的信任根。
- 5
- 指定定义信任根的策略类型,可以是公钥或 Fulcio 证书。在这里,一个带有所需 Rekor 验证的 Fulcio 证书。
- 6
- 对于 Fulcio 证书策略,需要以下参数:
-
fulcioCAData
: 指定 PEM 格式的 base64 编码的 Fulcio 证书。最大长度为 8192 个字符。 -
fulcioSubject
:指定 OIDC 签发者和 Fulcio 身份验证配置的电子邮件。
-
- 7
- 以 PEM 格式指定一个 base64 编码的 Rekor 公钥。当
policyType
是FulcioCAWithRekor
时,需要此参数。最大长度为 8192 个字符。 - 8
- 可选:指定以下进程之一来验证签名中的身份和实际镜像身份。
-
MatchRepoDigestOrExact
. -
MatchRepository
. -
ExactRepository
.必须指定exactRepository
参数。 -
RemapIdentity
。必须指定prefix
和signedPrefix
参数。
-
- 9
- 对于
remapIdentity
匹配策略,请指定应与范围镜像前缀匹配的前缀。如果两个匹配项,则将有范围的镜像前缀替换为signedPrefix
的值。最大长度为 512 个字符。 - 10
- 对于
remapIdentity
匹配策略,请根据需要指定要重新映射的镜像前缀。最大长度为 512 个字符。
创建集群镜像策略对象:
oc create -f <file_name>.yaml
$ oc create -f <file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Machine Config Operator (MCO) 更新集群中的机器配置池 (MCP)。
验证
更新集群中的节点后,您可以验证是否已配置了集群镜像策略:
运行以下命令,为节点启动 debug pod:
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
/host
设置为 debug shell 中的根目录:chroot /host/
sh-5.1# chroot /host/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查
policy.json
文件:cat /etc/containers/policy.json
sh-5.1# cat /etc/containers/policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有显示新集群镜像策略的公钥的集群镜像策略对象的输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有显示新集群镜像策略的 Fulcio 证书的集群镜像策略对象的输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查
sigstore-registries.yaml
文件:cat /etc/containers/registries.d/sigstore-registries.yaml
sh-5.1# cat /etc/containers/registries.d/sigstore-registries.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示添加了范围 registry 的输出示例
docker: example.com: use-sigstore-attachments: true quay.io/openshift-release-dev/ocp-release: use-sigstore-attachments: true
docker: example.com: use-sigstore-attachments: true
1 quay.io/openshift-release-dev/ocp-release: use-sigstore-attachments: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为
true
时,指定 sigstore 签名将与镜像一起读取。