5.4. 创建镜像 ConfigMap
在更新集群前,需要手动创建包含您使用的发行版本镜像签名的 ConfigMap。此签名允许 Cluster Version Operator(CVO)通过比较预期的及实际镜像签名来验证发行的镜像没有被修改。
5.4.1. 使用 oc
CLI 创建用于镜像签名验证的 ConfigMap
在更新集群前,需要手动创建包含您使用的发行版本镜像签名的 ConfigMap。此签名允许 Cluster Version Operator(CVO)通过比较预期的及实际镜像签名来验证发行的镜像没有被修改。
如果从 4.4.8 之前的发行版本升级,则必须使用手动方法创建 ConfigMap,而不是使用此流程。此流程使用的命令不在早期版本的 oc
命令行界面(CLI)中。
先决条件
-
安装 OpenShift 命令行界面(CLI),通常称为
oc
的版本 4.4.8 或更高版本。
流程
- 从 mirror.openshift.com 或 Google Cloud Storage(GCS) 获取您要升级到的版本的镜像签名。
-
使用
oc
命令行界面(CLI)登录您要升级的集群。 将镜像发行镜像签名 ConfigMap 应用到连接的集群:
$ oc apply -f <image_signature_file> 1
- 1
- 对于
<image_signature_file>
,指定文件的路径和名称,例如mirror/config/signature-sha256-81154f5c03294534.yaml
。
5.4.2. 手动创建镜像签名 ConfigMap
创建并应用镜像签名 ConfigMap 到您要更新的集群。
每次更新集群时都必须执行以下步骤。
流程
- 请参阅 OpenShift Container Platform 升级路径 知识库文章,以确定集群的有效升级路径。
将版本添加到
OCP_RELEASE_NUMBER
环境变量中:$ OCP_RELEASE_NUMBER=<release_version> 1
- 1
- 对于
<release_version>
,请指定与集群升级到的 OpenShift Container Platform 版本对应的标签,如4.4.0
。
将集群的系统构架添加到
ARCHITECTURE
环境变量中:$ ARCHITECTURE=<server_architecture> 1
- 对于
server_architecture
,指定服务器的构架,如x86_64
。
从 Quay 获取发行版本镜像摘要:
$ DIGEST="$(oc adm release info quay.io/openshift-release-dev/ocp-release:${OCP_RELEASE_NUMBER}-${ARCHITECTURE} | sed -n 's/Pull From: .*@//p')"
设置摘要算法:
$ DIGEST_ALGO="${DIGEST%%:*}"
设置摘要签名:
$ DIGEST_ENCODED="${DIGEST#*:}"
从 mirror.openshift.com 网站获取镜像签名。
$ SIGNATURE_BASE64=$(curl -s "https://mirror.openshift.com/pub/openshift-v4/signatures/openshift/release/${DIGEST_ALGO}=${DIGEST_ENCODED}/signature-1" | base64 -w0 && echo)
创建 ConfigMap:
$ cat >checksum-${OCP_RELEASE_NUMBER}.yaml <<EOF apiVersion: v1 kind: ConfigMap metadata: name: release-image-${OCP_RELEASE_NUMBER} namespace: openshift-config-managed labels: release.openshift.io/verification-signatures: "" binaryData: ${DIGEST_ALGO}-${DIGEST_ENCODED}: ${SIGNATURE_BASE64} EOF
将 ConfigMap 应用到集群以更新:
$ oc apply -f checksum-${OCP_RELEASE_NUMBER}.yaml