1.3. 发行镜像

当使用 Red Hat Advanced Cluster Management for Kubernetes 在供应商处创建集群时,您必须指定用于新集群的发行镜像。发行镜像指定使用哪个版本的 Red Hat OpenShift Container Platform 来构建集群。

引用发行镜像的文件是在 acm-hive-openshift-releases GitHub 仓库中维护的 YAML 文件。Red Hat Advanced Cluster Management 使用这些文件在控制台中创建可用发行镜像的列表。这包括 OpenShift Container Platform 的最新快速频道镜像。控制台仅显示三个 OpenShift Container Platform 最新版本的最新发行镜像。例如,您可能在控制台选项中看到以下发行镜像:

  • quay.io/openshift-release-dev/ocp-release:4.6.23-x86_64
  • quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64

注:只有带有标签为: visible: 'true' 的发行镜像才可以在控制台中创建集群时选择。ClusterImageSet 资源中的此标签示例在以下内容中提供:

apiVersion: config.openshift.io/v1
kind: ClusterImageSet
metadata:
  labels:
    channel: fast
    visible: 'true'
  name: img4.10.1-x86-64-appsub
spec:
  releaseImage: quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64

存储了额外的发行镜像,但无法在控制台中看到。要查看所有可用发行镜像,请在 CLI 中运行 kubectl get clusterimageset。控制台中只有最新版本可促进创建带有最新发行镜像的集群。在某些情况下,您可能需要创建特定版本的集群,因此还会继续提供老版本。Red Hat Advanced Cluster Management 使用这些文件在控制台中创建可用发行镜像的列表。这包括 OpenShift Container Platform 的最新快速频道镜像。

仓库中包含 clusterImageSets 目录和 subscription 目录,它们是您使用发行镜像时使用的目录。

clusterImageSets 目录包含以下目录:

  • Fast : 包含引用每个受支持 OpenShift Container Platform 版本的最新发行镜像版本的文件。此目录中的发行镜像经过测试、验证和支持。
  • Releases : 包含引用每个 OpenShift Container Platform 版本(table、fast 和 candidate 频道)的所有发行镜像的文件 请注意:这些版本并没有经过测试并确定是稳定的。
  • Stable : 包含引用每个受支持 OpenShift Container Platform 版本的最新两个稳定发行镜像版本的文件。

注: 默认情况下,当前发行镜像列表被更新一次。升级产品后,列表最多可能需要一小时,以反映该产品的新版本的建议发行镜像版本。

您可以通过三种方式对自己的 ClusterImageSet 进行策展:

这三种方法中的第一个步骤都是禁用包含自动更新最新快速频道镜像的订阅。使用 multiclusterhub 资源中的安装程序参数可以禁用对最新的 fast ClusterImageSet 的自动策展。通过切换 spec.disableUpdateClusterImageSets 参数为 truefalse,Red Hat Advanced Cluster Management 安装的订阅会相应地被启用和禁用。如果要策展自己的镜像,请将 spec.disableUpdateClusterImageSets 设置为 true,以禁用订阅。

选项 1: 指定要在控制台创建集群时使用的特定 ClusterImageSet 的镜像引用。您指定的每个新条目都会保留,并可用于将来的所有集群置备。一个示例为:quay.io/openshift-release-dev/ocp-release:4.6.8-x86_64.

选项 2: 手动创建并应用来自 acm-hive-openshift-releases GitHub 仓库的 ClusterImageSets YAML 文件。

选项 3: 遵循 acm-hive-openshift-releases GitHub 仓库中的 README.md,启用对来自 fork 的 GitHub 仓库的 ClusterImageSets 的自动更新。

subscription 目录包含指定从哪里拉取发行镜像列表的文件。

Red Hat Advanced Cluster Management 的默认发行镜像位于 Quay.io 目录中。

发行版本 2.5 的 acm-hive-openshift-releases GitHub 仓库中引用的文件。

1.3.1. 创建发行镜像以在不同构架中部署集群

您可以通过手动创建包含这两个架构文件的发行镜像,在与 hub 集群架构不同的架构中创建集群。

例如,您可以从 ppc64leaarch64s390x 架构上运行的 hub 集群创建一个 x86_64 集群。如果使用两组文件创建发行镜像,集群创建成功,因为新发行镜像启用 OpenShift Container Platform 发行 registry 来提供多架构镜像清单。

要创建发行镜像,请按照以下构架类型完成类似如下的步骤:

  1. OpenShift Container Platform release registry 中,创建一个 清单列表,其中包含 x86_64s390xaarch64ppc64le 发行镜像。

    1. 使用以下命令,从 Quay 仓库拉取环境中这两个架构的清单列表:

      podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64
      podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-ppc64le
      podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-s390x
      podman pull quay.io/openshift-release-dev/ocp-release:4.10.1-aarch64
    2. 登录到维护镜像的私有存储库:

      podman login <private-repo>

      使用存储库的路径替换 private-repo

    3. 运行以下命令,将发行镜像清单添加到私有存储库中:

      podman push quay.io/openshift-release-dev/ocp-release:4.10.1-x86_64 <private-repo>/ocp-release:4.10.1-x86_64
      podman push quay.io/openshift-release-dev/ocp-release:4.10.1-ppc64le <private-repo>/ocp-release:4.10.1-ppc64le
      podman push quay.io/openshift-release-dev/ocp-release:4.10.1-s390x <private-repo>/ocp-release:4.10.1-s390x
      podman push quay.io/openshift-release-dev/ocp-release:4.10.1-aarch64 <private-repo>/ocp-release:4.10.1-aarch64

      使用存储库的路径替换 private-repo

    4. 为新信息创建清单:

      podman manifest create mymanifest
    5. 将两个发行镜像的引用添加到清单列表中:

      podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-x86_64
      podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-ppc64le
      podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-s390x
      podman manifest add mymanifest <private-repo>/ocp-release:4.10.1-aarch64

      使用存储库的路径替换 private-repo

    6. 将清单列表中的列表与现有清单合并:

      podman manifest push mymanifest docker://<private-repo>/ocp-release:4.10.1

      使用存储库的路径替换 private-repo

  2. 在 hub 集群中,创建一个发行版本镜像来引用存储库中的清单。

    1. 创建一个 YAML 文件,其中包含类似以下示例的信息:

      apiVersion: hive.openshift.io/v1
      kind: ClusterImageSet
      metadata:
        labels:
          channel: fast
          visible: "true"
        name: img4.10.1-appsub
      spec:
        releaseImage: <private-repo>/ocp-release:4.10.1

      使用存储库的路径替换 private-repo

    2. 在 hub 集群中运行以下命令以应用更改:

      oc apply -f <file-name>.yaml

      file-name 替换为您刚才创建的 YAML 文件的名称。

  3. 在创建 OpenShift Container Platform 集群时选择新的发行镜像。
  4. 如果使用 Red Hat Advanced Cluster Management 控制台部署受管集群,在集群创建过程中在 Architecture 字段中指定受管集群的架构。

创建流程使用合并的发行镜像来创建集群。

1.3.2. 同步可用发行镜像

版本镜像会频繁更新,因此可能需要同步发行镜像列表,以确保可以选择最新的可用版本。发行镜像位于用于发行版本 2.5 的 acm-hive-openshift-releases GitHub 仓库中。

发行镜像有三个级别的稳定性:

表 1.1. 发行镜像的稳定性级别

类别

描述

stable

已确认用于正确安装和构建集群的完整测试镜像。

fast

部分进行了测试,但稳定性可能低于稳定版本。

candidate

最新镜像,但未经测试。可能会有一些程序错误。

完成以下步骤以刷新列表:

  1. 如果启用了安装程序管理的 acm-hive-openshift-releases 订阅,在 multiclusterhub 资源中将 disableUpdateClusterImageSets 的值设置为 true 来禁用订阅。
  2. 克隆用于发行版本 2.5 的 acm-hive-openshift-releases GitHub 仓库。
  3. 输入以下命令删除订阅:

    oc delete -f subscribe/subscription-fast
  4. 输入以下命令连接到稳定版本镜像并同步您的 Red Hat Advanced Cluster Management for Kubernetes hub 集群:

    make subscribe-stable

    注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个 make 命令。

    大约一分钟后,最新的 stable 镜像列表将可用。

    • 要同步并显示快速发行镜像,请输入以下命令:

      make subscribe-fast

      注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个 make 命令。

      运行此命令后,当前可用的镜像会在约一分钟内在可用的 stablefast 发行镜像列表中出现。

    • 要同步并显示 candidate 发行镜像,请输入以下命令:

      make subscribe-candidate

      注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个 make 命令。

      运行该命令后,当前可用的镜像会更新可用的 stablefastcandidate 发行镜像列表。

  5. 在创建集群时,查看 Red Hat Advanced Cluster Management 控制台中当前可用发行镜像的列表。
  6. 使用以下格式输入命令来从这些频道中取消订阅以停止查看更新:

    oc delete -f subscribe/subscription-fast

1.3.3. 连接时维护自定义的发行镜像列表

您可能希望确保所有集群都使用同一发行镜像。为简化操作,您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以管理可用发行镜像:

  1. 如果启用了安装程序管理的 acm-hive-openshift-releases 订阅,在 multiclusterhub 资源中将 disableUpdateClusterImageSets 的值设置为 true 来禁用它。
  2. acm-hive-openshift-releases GitHub 仓库 2.5 分支 进行分叉(fork)。
  3. 通过将 spec: pathname 更改为访问已分叉的仓库的 GitHub 名称,而不是 stolostron,更新 ./subscribe/channel.yaml 文件。此步骤指定 hub 集群在哪里检索发行镜像。您更新的内容应类似以下示例:

    spec:
      type: Git
      pathname: https://github.com/<forked_content>/acm-hive-openshift-releases.git

    forked_content 替换为已分叉仓库的路径。

  4. 使用 Red Hat Advanced Cluster Management for Kubernetes 控制台创建集群时可用的镜像,将 YAML 文件添加到 ./clusterImageSets/stable/*./clusterImageSets/fast/* 目录中。

    提示: 您可以通过将更改合并到已分叉的存储库,从主存储库检索可用的 YAML 文件。

  5. 将更改提交并合并到您的已分叉仓库。
  6. 在克隆了 acm-hive-openshift-releases 仓库后,使用以下命令来更新 fast 镜像后同步 fast 发行镜像列表:

    make subscribe-fast

    注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个 make 命令。

    运行此命令后,可用快速镜像列表会在约 1 分钟内更新为当前可用镜像。

  7. 默认情况下,只列出 fast 镜像。要同步并显示稳定的发行镜像,请输入以下命令:

    make subscribe-stable

    注意:您只能在使用 Linux 或者 MacOS 操作系统时运行这个 make 命令。

    运行此命令后,可用稳定镜像列表会在约 1 分钟内更新为当前可用镜像。

  8. 默认情况下,Red Hat Advanced Cluster Management 会预加载几个 ClusterImageSets。您可以使用以下命令列出可用内容并删除默认值。

    oc get clusterImageSets
    oc delete clusterImageSet <clusterImageSet_NAME>

    注: 如果您还没有通过将 multiclusterhub 资源中的 disableUpdateClusterImageSets 的值设置为 true 来禁用安装程序管理的 ClusterImageSet 的自动更新,则您删除的任何镜像都会被自动重新创建。

  9. 在创建集群时,查看 Red Hat Advanced Cluster Management 控制台中当前可用发行镜像的列表。

1.3.4. 断开连接时维护自定义的发行镜像列表

在某些情况下,当节点集群没有互联网连接时,您需要维护一个自定义的发行镜像列表。您可以创建自己的自定义列表,在其中包含创建集群时可用的发行镜像。完成以下步骤以在断开连接的情况下管理可用发行镜像:

  1. 在连接的系统中时,导航到 acm-hive-openshift-releases GitHub 仓库,以访问可用于版本 2.5 的集群镜像集。
  2. clusterImageSets 目录复制到可以访问断开连接的 Red Hat Advanced Cluster Management for Kubernetes hub 集群的系统中。
  3. 通过完成以下步骤,添加受管集群和带有集群镜像的断开连接的存储库之间的映射:

  4. 使用 Red Hat Advanced Cluster Management 控制台手动添加 clusterImageSet YAML 内容,为在创建集群时可用的镜像添加 YAML 文件。
  5. 修改 OpenShift Container Platform 发行镜像的 clusterImageSet YAML 文件,以引用存储镜像的正确离线存储库。您的更新应类似以下示例:

    apiVersion: hive.openshift.io/v1
    kind: ClusterImageSet
    metadata:
        name: img4.4.0-rc.6-x86-64
    spec:
        releaseImage: IMAGE_REGISTRY_IPADDRESS_or_DNSNAME/REPO_PATH/ocp-release:4.4.0-rc.6-x86_64

    确保在 YAML 文件中引用的离线镜像 registry 中载入镜像。

  6. 通过为每个 YAML 文件输入以下命令来创建每个 clusterImageSets:

    oc create -f <clusterImageSet_FILE>

    clusterImageSet_FILE 替换为集群镜像集文件的名称。例如:

    oc create -f img4.9.9-x86_64.yaml

    在为您要添加的每个资源运行此命令后,可用发行镜像列表将变为可用。

  7. 另外,您还可以将镜像 URL 直接粘贴到 Red Hat Advanced Cluster Management 的创建集群控制台中。如果镜像 URL 不存在,添加镜像 URL 会创建新的 clusterImageSet。
  8. 在创建集群时,查看 Red Hat Advanced Cluster Management 控制台中当前可用发行镜像的列表。