×

您可以先创建一个镜像注册表,然后将Cluster Samples Operator与替代注册表一起使用。

您必须能够访问互联网才能获取必要的容器镜像。在此过程中,您将镜像注册表放置在可以访问您的网络和互联网的镜像主机上。

关于镜像注册表

您可以将AWS上Red Hat OpenShift Service安装和后续产品更新所需的镜像镜像到容器镜像注册表,例如Red Hat Quay、JFrog Artifactory、Sonatype Nexus Repository或Harbor。如果您无法访问大型容器注册表,则可以使用 *Red Hat OpenShift 的镜像注册表*,这是AWS上Red Hat OpenShift Service订阅中包含的小型容器注册表。

您可以使用任何支持Docker v2-2的容器注册表,例如Red Hat Quay、*Red Hat OpenShift 的镜像注册表*、Artifactory、Sonatype Nexus Repository或Harbor。无论您选择哪个注册表,将内容从Red Hat托管的互联网站点镜像到隔离的镜像注册表的流程都是相同的。镜像内容后,您将配置每个集群以从您的镜像注册表检索此内容。

OpenShift镜像注册表不能用作目标注册表,因为它不支持在镜像过程中所需的无标签推送。

如果选择不是 *Red Hat OpenShift 的镜像注册表* 的容器注册表,则您配置的每个集群中的每台机器都必须能够访问该注册表。如果注册表不可访问,则安装、更新或正常操作(如工作负载迁移)可能会失败。因此,您必须以高可用性的方式运行镜像注册表,并且镜像注册表至少必须与AWS上Red Hat OpenShift Service集群的生产可用性相匹配。

当您使用AWS上Red Hat OpenShift Service镜像填充镜像注册表时,您可以遵循两种方案。如果您有一台主机可以访问互联网和您的镜像注册表,但不能访问您的集群节点,则您可以直接从该机器镜像内容。此过程称为 *连接镜像*。如果您没有这样的主机,则必须将镜像镜像到文件系统,然后将该主机或可移动介质带入您的受限环境。此过程称为 *断开连接镜像*。

对于镜像注册表,要查看已拉取镜像的来源,您必须检查CRI-O日志中的Trying to access日志条目。其他查看镜像拉取来源的方法(例如在节点上使用crictl images命令)会显示非镜像镜像名称,即使镜像是从镜像位置拉取的。

Red Hat不会测试AWS上Red Hat OpenShift Service的第三方注册表。

准备镜像主机

在创建镜像注册表之前,您必须准备镜像主机。

安装OpenShift CLI

您可以安装OpenShift CLI(oc)以通过命令行界面与ROSA交互。您可以在Linux、Windows或macOS上安装oc

如果您安装了早期版本的oc,则无法使用它来完成ROSA中的所有命令。下载并安装新版本的oc

在Linux上安装OpenShift CLI

您可以使用以下过程在Linux上安装OpenShift CLI(oc)二进制文件。

步骤
  1. 导航到Red Hat客户门户网站上的AWS下载页面上的Red Hat OpenShift Service

  2. 从“产品变体”下拉列表中选择体系结构。

  3. 从“版本”下拉列表中选择相应的版本。

  4. 单击OpenShift v Linux客户端条目旁边的立即下载,然后保存文件。

  5. 解压存档

    $ tar xvf <file>
  6. oc二进制文件放置在PATH上的目录中。

    要检查您的PATH,请执行以下命令

    $ echo $PATH
验证
  • 安装OpenShift CLI后,可以使用oc命令。

    $ oc <command>

在Windows上安装OpenShift CLI

您可以使用以下过程在Windows上安装OpenShift CLI(oc)二进制文件。

步骤
  1. 导航到Red Hat客户门户网站上的AWS下载页面上的Red Hat OpenShift Service

  2. 从“版本”下拉列表中选择相应的版本。

  3. 单击OpenShift v Windows客户端条目旁边的立即下载,然后保存文件。

  4. 使用ZIP程序解压缩存档。

  5. oc二进制文件移动到您的PATH环境变量包含的目录中。

    要检查您的PATH,请打开命令提示符并执行以下命令

    C:\> path
验证
  • 安装OpenShift CLI后,可以使用oc命令。

    C:\> oc <command>

在macOS上安装OpenShift CLI

您可以使用以下步骤在macOS上安装OpenShift CLI(oc)二进制文件。

步骤
  1. 导航到Red Hat客户门户网站上的AWS下载页面上的Red Hat OpenShift Service

  2. 从“版本”下拉列表中选择相应的版本。

  3. 点击OpenShift v macOS Clients条目旁边的立即下载按钮并保存文件。

    对于macOS arm64,请选择OpenShift v macOS arm64 Client条目。

  4. 解压并解压缩存档。

  5. oc二进制文件移动到您的PATH环境变量包含的目录中。

    要检查您的PATH,请打开终端并执行以下命令

    $ echo $PATH
验证
  • 使用oc命令验证您的安装

    $ oc <command>

配置允许镜像镜像的凭据

创建一个容器镜像注册表凭据文件,使您可以将镜像从Red Hat镜像到您的镜像。

先决条件
  • 您已配置要使用的镜像注册表。

步骤

在安装主机上完成以下步骤

  1. 从Red Hat OpenShift集群管理器下载您的registry.redhat.io pull secret

  2. 通过运行以下命令创建您的pull secret的JSON格式副本

    $ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> (1)
    1 指定存储pull secret的文件夹路径以及要创建的JSON文件的名称。
    示例pull secret
    {
      "auths": {
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }
  3. 通过运行以下命令生成您的镜像注册表的base64编码用户名和密码或令牌

    $ echo -n '<user_name>:<password>' | base64 -w0 (1)
    1 对于<user_name><password>,请指定您为注册表配置的用户名和密码。
    示例输出
    BGVtbYk3ZHAtqXs=
  4. 编辑JSON文件并添加一个描述您的注册表的章节

      "auths": {
        "<mirror_registry>": { (1)
          "auth": "<credentials>", (2)
          "email": "you@example.com"
        }
      },
    1 指定您的镜像注册表用于提供内容的注册表域名,以及可选的端口,例如registry.example.comregistry.example.com:8443
    2 指定镜像注册表的base64编码用户名和密码。
    示例修改后的pull secret
    {
      "auths": {
        "registry.example.com": {
          "auth": "BGVtbYk3ZHAtqXs=",
          "email": "you@example.com"
        },
        "cloud.openshift.com": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "quay.io": {
          "auth": "b3BlbnNo...",
          "email": "you@example.com"
        },
        "registry.connect.redhat.com": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        },
        "registry.redhat.io": {
          "auth": "NTE3Njg5Nj...",
          "email": "you@example.com"
        }
      }
    }

镜像Red Hat OpenShift Service on AWS镜像仓库

将Red Hat OpenShift Service on AWS镜像仓库镜像到您的注册表中,以便在集群安装或升级期间使用。

先决条件
  • 您的镜像主机可以访问互联网。

  • 您已配置要使用的镜像注册表。

  • 您已下载 Red Hat OpenShift Cluster Manager 中的pull secret 并对其进行了修改,以包含对镜像存储库的身份验证。

  • 如果您使用自签名证书,则已在证书中指定了主题替代名称。

步骤

在镜像主机上完成以下步骤

  1. 查看 Red Hat OpenShift Service on AWS 下载页面 以确定要安装的 Red Hat OpenShift Service on AWS 版本,并在 存储库标签 页面上确定相应的标签。

  2. 设置所需的环镜变量

    1. 导出发行版本

      $ OCP_RELEASE=<release_version>

      对于<release_version>,请指定与要安装的Red Hat OpenShift Service on AWS版本相对应的标签,例如4.5.4

    2. 导出本地注册表名称和主机端口

      $ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'

      对于<local_registry_host_name>,请指定镜像存储库的注册表域名;对于<local_registry_host_port>,请指定其提供内容的端口。

    3. 导出本地存储库名称

      $ LOCAL_REPOSITORY='<local_repository_name>'

      对于<local_repository_name>,请指定要在注册表中创建的存储库的名称,例如ocp4/openshift4

    4. 导出要镜像的存储库的名称

      $ PRODUCT_REPO='openshift-release-dev'

      对于生产版本,必须指定openshift-release-dev

    5. 导出注册表pull secret的路径

      $ LOCAL_SECRET_JSON='<path_to_pull_secret>'

      对于<path_to_pull_secret>,请指定您创建的镜像注册表的pull secret的绝对路径和文件名。

    6. 导出发行版镜像

      $ RELEASE_NAME="ocp-release"

      对于生产版本,必须指定ocp-release

    7. 导出集群的架构类型

      $ ARCHITECTURE=<cluster_architecture> (1)
      1 指定集群的架构,例如x86_64aarch64s390xppc64le
    8. 导出托管镜像的目录路径

      $ REMOVABLE_MEDIA_PATH=<path> (1)
      1 指定完整路径,包括初始正斜杠(/)字符。
  3. 将版本镜像镜像到镜像注册表

    1. 使用以下命令直接将发行版镜像推送到本地注册表

      $ oc adm release mirror -a ${LOCAL_SECRET_JSON}  \
           --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \
           --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \
           --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}

      此命令将发行版信息作为摘要拉取,其输出包含安装集群时所需的imageContentSources数据。

    2. 记录上一步命令输出中的整个imageContentSources部分。关于镜像的信息对于您的镜像存储库来说是唯一的,您必须在安装期间将imageContentSources部分添加到install-config.yaml文件中。

      在镜像过程中,镜像名称将被修补到Quay.io,podman镜像将在引导虚拟机上的注册表中显示Quay.io。

  4. 要创建基于您镜像的内容的安装程序,请提取它并通过运行以下命令将其固定到发行版

    $ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"

    为确保您使用的是您选择的Red Hat OpenShift Service on AWS版本的正确镜像,您必须从镜像内容中提取安装程序。

    您必须在具有活动互联网连接的机器上执行此步骤。

  5. 对于使用安装程序预配基础设施的集群,请运行以下命令

    $ openshift-install

将集群示例运算符镜像流与备用或镜像注册表一起使用

集群示例运算符管理的openshift命名空间中的大多数镜像流指向位于Red Hat注册表registry.redhat.io中的镜像。

cliinstallermust-gathertests镜像流虽然是安装有效负载的一部分,但不受集群示例运算符管理。本过程不涉及这些镜像流。

在断开连接的环境中,必须将集群示例运算符设置为Managed。要安装镜像流,您需要一个镜像注册表。

先决条件
  • 以具有dedicated-admin角色的用户身份访问集群。

  • 为您的镜像注册表创建pull secret。

步骤
  1. 访问要镜像的特定镜像流的镜像,例如

    $ oc get is <imagestream> -n openshift -o json | jq .spec.tags[].from.name | grep registry.redhat.io
  2. 镜像来自registry.redhat.io与您需要的任何镜像流关联的镜像

    $ oc image mirror registry.redhat.io/rhscl/ruby-25-rhel7:latest ${MIRROR_ADDR}/rhscl/ruby-25-rhel7:latest
  3. 创建集群的镜像配置对象

    $ oc create configmap registry-config --from-file=${MIRROR_ADDR_HOSTNAME}..5000=$path/ca.crt -n openshift-config
  4. 在集群的镜像配置对象中添加镜像所需的受信任的CA。

    $ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge
  5. 更新集群示例运算符配置对象中的samplesRegistry字段,使其包含在镜像配置中定义的镜像位置的hostname部分。

    $ oc edit configs.samples.operator.openshift.io -n openshift-cluster-samples-operator

    这是必需的,因为镜像流导入过程目前不使用镜像或搜索机制。

  6. 将任何未镜像的镜像流添加到集群样本操作符配置对象的skippedImagestreams字段中。或者,如果您不想支持任何样本镜像流,请在集群样本操作符配置对象中将集群样本操作符设置为Removed

    如果镜像流导入失败,但集群样本操作符正在定期重试或似乎没有重试,则集群样本操作符会发出警报。

    openshift命名空间中的许多模板都引用了镜像流。因此,使用Removed清除镜像流和模板,可以消除在由于任何缺失的镜像流而导致它们无法工作时尝试使用它们的可能性。

集群样本操作符镜像辅助

在安装过程中,Red Hat OpenShift Service on AWS会在openshift-cluster-samples-operator命名空间中创建一个名为imagestreamtag-to-image的配置映射。imagestreamtag-to-image配置映射包含一个条目(填充镜像),用于每个镜像流标签。

配置映射数据字段中每个条目的键的格式为<image_stream_name>_<image_stream_tag_name>

在Red Hat OpenShift Service on AWS的断开连接安装过程中,集群样本操作符的状态设置为Removed。如果您选择将其更改为Managed,它将安装样本。

在网络受限或已停用的环境中使用样本可能需要访问网络外部的服务。一些示例服务包括:Github、Maven Central、npm、RubyGems、PyPi等等。可能需要采取其他步骤才能使集群样本操作符的对象访问其所需的服务。

您可以使用此配置映射作为参考,了解哪些镜像需要镜像才能导入您的镜像流。

  • 在集群样本操作符设置为Removed时,您可以创建镜像注册表,或确定要使用的现有镜像注册表。

  • 使用新的配置映射作为指南,将您想要的样本镜像到镜像注册表。

  • 将您未镜像的任何镜像流添加到集群样本操作符配置对象的skippedImagestreams列表中。

  • 将集群样本操作符配置对象的samplesRegistry设置为镜像注册表。

  • 然后将集群样本操作符设置为Managed以安装您已镜像的镜像流。