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.2.4. 容器镜像签名
红帽为 Red Hat Container Registries 中的镜像提供签名。在使用 Machine Config Operator(MCO)拉取到 OpenShift Container Platform 4 集群时,会自动验证这些签名。
Quay.io 提供了组成 OpenShift Container Platform 的大多数镜像,只有发行镜像会被签名。发行镜像指的是批准的 OpenShift Container Platform 镜像,它可以对供应链攻击提供一定程度的保护。但是,OpenShift Container Platform 的一些扩展(如日志记录、监控和服务网格)会作为 Operator Lifecycle Manager(OLM)的 Operator 提供。这些镜像来自 红帽生态系统目录容器镜像 registry。
要验证这些镜像在红帽 registry 和您的基础架构间的完整性,启用签名验证。
2.4.1. 为 Red Hat Container registry 启用签名验证
					为 Red Hat Container Registries 启用容器签名验证需要编写签名验证策略文件,指定从这些 registry 中验证镜像的密钥。对于 RHEL8 节点,默认已在 /etc/containers/registries.d 中定义 registry。
				
流程
- 创建 Butane 配置文件 - 51-worker-rh-registry-trust.bu,其中包含 worker 节点的必要配置。注意- 如需有关 Butane 的信息,请参阅"使用 Butane 创建机器配置"。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 Butane 生成机器配置 YAML 文件 - 51-worker-rh-registry-trust.yaml,其中包含要写入 worker 节点上的磁盘的文件:- butane 51-worker-rh-registry-trust.bu -o 51-worker-rh-registry-trust.yaml - $ butane 51-worker-rh-registry-trust.bu -o 51-worker-rh-registry-trust.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 应用创建的机器配置: - oc apply -f 51-worker-rh-registry-trust.yaml - $ oc apply -f 51-worker-rh-registry-trust.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 检查 worker 机器配置池已使用新机器配置推出: - 检查是否创建了新机器配置: - oc get mc - $ oc get mc- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 检查 worker 机器配置池是否使用新机器配置更新: - oc get mcp - $ oc get mcp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-af1e7ff78da0a9c851bab4be2777773b True False False 3 3 3 0 30m worker rendered-worker-be3b3bce4f4aa52a62902304bac9da3c False True False 3 0 0 0 30m - NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-af1e7ff78da0a9c851bab4be2777773b True False False 3 3 3 0 30m worker rendered-worker-be3b3bce4f4aa52a62902304bac9da3c False True False 3 0 0 0 30m- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 当UPDATING字段为True时,机器配置池会使用新机器配置进行更新。当字段变为False时,代表 worker 机器配置池已应用到新机器配置。
 
 
- 如果您的集群使用任何 RHEL7 worker 节点,当 worker 机器配置池被更新时,在 - /etc/containers/registries.d目录中在这些节点上创建 YAML 文件,用于指定给定 registry 服务器的分离签名的位置。以下示例只适用于托管在- registry.access.redhat.com和- registry.redhat.io中的镜像。- 为每个 RHEL7 worker 节点启动一个 debug 会话: - oc debug node/<node_name> - $ oc debug node/<node_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将您的根目录改为 - /host:- chroot /host - sh-4.2# chroot /host- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建一个包含以下内容的 - /etc/containers/registries.d/registry.redhat.io.yaml文件:- docker: registry.redhat.io: sigstore: https://registry.redhat.io/containers/sigstore- docker: registry.redhat.io: sigstore: https://registry.redhat.io/containers/sigstore- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建一个包含以下内容的 - /etc/containers/registries.d/registry.access.redhat.com.yaml文件:- docker: registry.access.redhat.com: sigstore: https://access.redhat.com/webassets/docker/content/sigstore- docker: registry.access.redhat.com: sigstore: https://access.redhat.com/webassets/docker/content/sigstore- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 退出 debug 会话。
 
2.4.2. 验证签名验证配置
					将机器配置应用到集群后,Machine Config Controller 会检测到新的 MachineConfig 对象,并生成新的 rendered-worker-<hash> 版本。
				
先决条件
- 您可以使用机器配置文件启用签名验证。
流程
- 在命令行中运行以下命令显示所需 worker 的信息: - oc describe machineconfigpool/worker - $ oc describe machineconfigpool/worker- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 初始 worker 监控的输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 再次运行 - oc describe命令:- oc describe machineconfigpool/worker - $ oc describe machineconfigpool/worker- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - worker 更新后的输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- Observed Generation参数显示基于控制器生成的配置的生成数量的增加数。此控制器即使没有处理规格并生成修订,也会更新这个值。- Configuration Source值指向- 51-worker-rh-registry-trust配置。
- 使用以下命令确认 - policy.json文件已存在:- oc debug node/<node> -- chroot /host cat /etc/containers/policy.json - $ oc debug node/<node> -- chroot /host cat /etc/containers/policy.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下命令确认 - registry.redhat.io.yaml文件已存在:- oc debug node/<node> -- chroot /host cat /etc/containers/registries.d/registry.redhat.io.yaml - $ oc debug node/<node> -- chroot /host cat /etc/containers/registries.d/registry.redhat.io.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Starting pod/<node>-debug ... To use host binaries, run `chroot /host` docker: registry.redhat.io: sigstore: https://registry.redhat.io/containers/sigstore- Starting pod/<node>-debug ... To use host binaries, run `chroot /host` docker: registry.redhat.io: sigstore: https://registry.redhat.io/containers/sigstore- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下命令确认 - registry.access.redhat.com.yaml文件已存在:- oc debug node/<node> -- chroot /host cat /etc/containers/registries.d/registry.access.redhat.com.yaml - $ oc debug node/<node> -- chroot /host cat /etc/containers/registries.d/registry.access.redhat.com.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Starting pod/<node>-debug ... To use host binaries, run `chroot /host` docker: registry.access.redhat.com: sigstore: https://access.redhat.com/webassets/docker/content/sigstore- Starting pod/<node>-debug ... To use host binaries, run `chroot /host` docker: registry.access.redhat.com: sigstore: https://access.redhat.com/webassets/docker/content/sigstore- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow