9.5. 创建镜像签名配置映射

在更新集群前,需要手动创建包含您使用的发行版本镜像签名的配置映射。此签名允许 Cluster Version Operator(CVO)通过比较预期的及实际镜像签名来验证发行的镜像没有被修改。

如果要从 4.4.8 或更高版本升级,您可以使用 oc CLI 创建配置映射。如果您是从更早的版本升级,则必须使用手动方法。

9.5.1. 手动创建镜像签名配置映射

创建并应用镜像签名配置映射到您要更新的集群。

注意

每次更新集群时都必须执行以下步骤。

流程

  1. 请参阅 OpenShift Container Platform 升级路径 知识库文章,以确定集群的有效升级路径。
  2. 将版本添加到 OCP_RELEASE_NUMBER 环境变量中:

    $ OCP_RELEASE_NUMBER=<release_version> 1
    1
    对于 <release_version>,请指定与集群升级到的 OpenShift Container Platform 版本对应的标签,如 4.4.0
  3. 将集群的系统构架添加到 ARCHITECTURE 环境变量中:

    $ ARCHITECTURE=<server_architecture> 1
    1
    对于 server_architecture,指定服务器的构架,如 x86_64
  4. Quay 获取发行版本镜像摘要:

    $ DIGEST="$(oc adm release info quay.io/openshift-release-dev/ocp-release:${OCP_RELEASE_NUMBER}-${ARCHITECTURE} | sed -n 's/Pull From: .*@//p')"
  5. 设置摘要算法:

    $ DIGEST_ALGO="${DIGEST%%:*}"
  6. 设置摘要签名:

    $ DIGEST_ENCODED="${DIGEST#*:}"
  7. 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)
  8. 创建配置映射:

    $ 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
  9. 将配置映射应用到集群以更新:

    $ oc apply -f checksum-${OCP_RELEASE_NUMBER}.yaml