19.9. 准备断开连接的环境
在大规模置备分布式单元 (DU) 前,您必须安装处理 DU 置备的 Red Hat Advanced Cluster Management (RHACM)。
RHACM 被部署为 OpenShift Container Platform hub 集群上的 Operator。它从带有内置安全策略的单一控制台控制集群和应用程序。RHACM 调配和管理您的 DU 主机.要在断开连接的环境中安装 RHACM,您需要创建一个镜像 registry,该 registry 会镜像包含所需 Operator 镜像的 Operator Lifecycle Manager (OLM) 目录。OLM 在集群中管理、安装和升级 Operator 及其依赖项。
您还可以使用断开连接的镜像主机来提供置备 DU 裸机主机操作系统的 RHCOS ISO 和 RootFS 磁盘镜像。
在受限网络中置备的基础架构上安装集群前,您必须将所需的容器镜像镜像(mirror)到那个环境中。您也可以在不受限制的网络中使用此流程来确保集群只使用满足您机构对外部内容控制的容器镜像。
您必须可以访问互联网来获取所需的容器镜像。在这一流程中,您要将镜像 registry 放在可访问您的网络以及互联网的镜像(mirror)主机上。如果您无法访问镜像主机,请使用断开连接的步骤将镜像复制到可跨网络界限的设备中。
19.9.1. 离线环境先决条件
您必须在托管 OpenShift Container Platform 集群的位置(如以下 registry 之一)中有一个支持 Docker v2-2 的容器镜像 registry:
如果您有 Red Hat Quay 权利,请参阅有关部署 Red Hat Quay 以了解概念验证的文档,或使用 Quay Operator。如果您需要额外的帮助来选择并安装 registry,请联络您的销售代表或红帽支持。
红帽没有针对 OpenShift Container Platform 测试第三方 registry。
19.9.2. 关于镜像 registry
您可以镜像 OpenShift Container Platform 安装所需的镜像,以及容器镜像 registry 的后续产品更新,如 Red Hat Quay、JFrog Artifactory、Sonatype Nexus Repository 或 Harbor。如果您无法访问大型容器 registry,可以使用 mirror registry for Red Hat OpenShift,它是包括在 OpenShift Container Platform 订阅中的一个小型容器 registry。
您可以使用支持 Docker v2-2 的任何容器 registry,如 Red Hat Quay, mirror registry for Red Hat OpenShift, Artifactory, Sonatype Nexus Repository, 或 Harbor。无论您所选 registry 是什么,都会将互联网上红帽托管站点的内容镜像到隔离的镜像 registry 相同。镜像内容后,您要将每个集群配置为从镜像 registry 中检索此内容。
OpenShift Container Platform 集群的内部 registry 不能用作目标 registry,因为它不支持没有标签的推送(在镜像过程中需要这个功能)。
如果选择的容器 registry 不是 mirror registry for Red Hat OpenShift,则需要集群中置备的每台机器都可以访问它。如果 registry 无法访问,安装、更新或常规操作(如工作负载重新定位)可能会失败。因此,您必须以高度可用的方式运行镜像 registry,镜像 registry 至少必须与 OpenShift Container Platform 集群的生产环境可用性相匹配。
使用 OpenShift Container Platform 镜像填充镜像 registry 时,可以遵循以下两种情况。如果您的主机可以同时访问互联网和您的镜像 registry,而不能访问您的集群节点,您可以直接从该机器中镜像该内容。这个过程被称为 连接的镜像(mirror)。如果没有这样的主机,则必须将该镜像文件镜像到文件系统中,然后将该主机或者可移动介质放入受限环境中。这个过程被称为 断开连接的镜像。
对于已镜像的 registry,若要查看拉取镜像的来源,您必须查看 Trying 以访问
CRI-O 日志中的日志条目。查看镜像拉取源的其他方法(如在节点上使用 crictl images
命令)显示非镜像镜像名称,即使镜像是从镜像位置拉取的。
红帽没有针对 OpenShift Container Platform 测试第三方 registry。
其他资源
- 有关查看 CRI-O 日志以查看镜像源的详情,请参阅查看镜像拉取源。
19.9.3. 准备您的镜像主机
执行镜像步骤前,必须准备主机以检索内容并将其推送到远程位置。
19.9.3.1. 通过下载二进制文件安装 OpenShift CLI
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 OpenShift Container Platform 4.9 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.9 Linux 客户端 条目旁边的 Download Now,再保存文件。
解包存档:
$ tar xvf <file>
将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.9 Windows 客户端 条目旁边的 Download Now,再保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
安装 OpenShift CLI 后,可以使用 oc
命令:
C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.9 MacOSX Client 条目旁边的 Download Now,再保存文件。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
19.9.3.2. 配置允许对容器镜像进行镜像的凭证
创建容器镜像 registry 凭证文件,允许将红帽的镜像镜像到您的镜像环境中。
先决条件
- 您已将镜像 registry 配置为在断开连接的环境中使用。
流程
在安装主机上完成以下步骤:
-
从 Red Hat OpenShift Cluster Manager 下载
registry.redhat.io
的 pull secret,并将它保存到.json
文件中。 为您的镜像 registry 生成 base64 编码的用户名和密码或令牌:
$ echo -n '<user_name>:<password>' | base64 -w0 1 BGVtbYk3ZHAtqXs=
- 1
- 通过
<user_name>
和<password>
指定 registry 的用户名和密码。
以 JSON 格式创建您的 pull secret 副本:
$ cat ./pull-secret.text | jq . > <path>/<pull_secret_file_in_json>1
- 1
- 指定到存储 pull secret 的文件夹的路径,以及您创建的 JSON 文件的名称。
将文件保存为
~/.docker/config.json
或$XDG_RUNTIME_DIR/containers/auth.json
。该文件类似于以下示例:
{ "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" } } }
编辑新文件并添加描述 registry 的部分:
"auths": { "<mirror_registry>": { 1 "auth": "<credentials>", 2 "email": "you@example.com" } },
该文件类似于以下示例:
{ "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" } } }
19.9.3.3. 镜像 OpenShift Container Platform 镜像存储库
镜像要在集群安装或升级过程中使用的 OpenShift Container Platform 镜像仓库。
先决条件
- 您的镜像主机可访问互联网。
- 您已将镜像 registry 配置为在受限网络中使用,并可访问您配置的证书和凭证。
- 您已从 Red Hat OpenShift Cluster Manager 下载了 pull secret,并已修改为包含镜像存储库身份验证信息。
如果您使用没有设置 Subject Alternative Name 的自签名证书,则必须在这个过程中使用
GODEBUG=x509ignoreCN=0
前执行oc
命令。如果没有设置此变量,oc
命令会失败并显示以下错误:x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
流程
在镜像主机上完成以下步骤:
- 查看 OpenShift Container Platform 下载页面,以确定您要安装的 OpenShift Container Platform 版本,并决定 Repository Tags 页中的相应标签(tag)。
设置所需的环境变量:
导出发行版本信息:
$ OCP_RELEASE=<release_version>
对于
<release_version>
,请指定与 OpenShift Container Platform 版本对应的标签,用于您的架构,如4.5.4
。导出本地 registry 名称和主机端口:
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
对于
<local_registry_host_name>
,请指定镜像存储库的 registry 域名;对于<local_registry_host_port>
,请指定用于提供内容的端口。导出本地存储库名称:
$ LOCAL_REPOSITORY='<local_repository_name>'
对于
<local_repository_name>
,请指定要在 registry 中创建的仓库名称,如ocp4/openshift4
。导出要进行镜像的存储库名称:
$ PRODUCT_REPO='openshift-release-dev'
对于生产环境版本,必须指定
openshift-release-dev
。导出 registry pull secret 的路径:
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'
对于
<path_to_pull_secret>
,请指定您创建的镜像 registry 的 pull secret 的绝对路径和文件名。导出发行版本镜像:
$ RELEASE_NAME="ocp-release"
对于生产环境版本,您必须指定
ocp-release
。为您的服务器导出构架类型,如
x86_64
:$ ARCHITECTURE=<server_architecture>
导出托管镜像的目录的路径:
$ REMOVABLE_MEDIA_PATH=<path> 1
- 1
- 指定完整路径,包括开始的前斜杠(/)字符。
将版本镜像(mirror)到镜像 registry:
如果您的镜像主机无法访问互联网,请执行以下操作:
- 将可移动介质连接到连接到互联网的系统。
查看要镜像的镜像和配置清单:
$ 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} --dry-run
-
记录上一命令输出中的
imageContentSources
部分。您的镜像信息与您的镜像存储库相对应,您必须在安装过程中将imageContentSources
部分添加到install-config.yaml
文件中。 将镜像镜像到可移动介质的目录中:
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}
将介质上传到受限网络环境中,并将镜像上传到本地容器 registry。
$ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} 1
- 1
- 对于
REMOVABLE_MEDIA_PATH
,您必须使用与镜像镜像时指定的同一路径。
如果本地容器 registry 连接到镜像主机,请执行以下操作:
使用以下命令直接将发行版镜像推送到本地 registry:
$ 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
数据。记录上一命令输出中的
imageContentSources
部分。您的镜像信息与您的镜像存储库相对应,您必须在安装过程中将imageContentSources
部分添加到install-config.yaml
文件中。注意镜像名称在镜像过程中被修补到 Quay.io, podman 镜像将在 bootstrap 虚拟机的 registry 中显示 Quay.io。
要创建基于您镜像内容的安装程序,请提取内容并将其固定到发行版中:
如果您的镜像主机无法访问互联网,请运行以下命令:
$ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}"
如果本地容器 registry 连接到镜像主机,请运行以下命令:
$ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
重要要确保将正确的镜像用于您选择的 OpenShift Container Platform 版本,您必须从镜像内容中提取安装程序。
您必须在有活跃互联网连接的机器上执行这个步骤。
如果您位于断开连接的环境中,请使用
--image
标志作为 must-gather 的一部分,指向有效负载镜像。
对于使用安装程序置备的基础架构的集群,运行以下命令:
$ openshift-install
19.9.3.4. 在断开连接的镜像主机上添加 RHCOS ISO 和 RootFS 镜像
在您置备的基础架构上安装集群前,必须先创建 Red Hat Enterprise Linux CoreOS (RHCOS) 机器供其使用。使用断开连接的镜像来托管所需的 RHCOS 镜像,以置备分布式单元 (DU) 裸机主机。
先决条件
- 部署和配置 HTTP 服务器以托管网络上的 RHCOS 镜像资源。您必须能够从计算机以及您创建的机器访问 HTTP 服务器。
RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。您需要 ISO 和 RootFS 镜像在 DU 主机上安装 RHCOS。此安装类型不支持 RHCOS qcow2 镜像。
流程
- 登录到镜像主机。
从 mirror.openshift.com 获取 RHCOS ISO 和 RootFS 镜像,例如:
将所需的镜像名称和 OpenShift Container Platform 版本导出为环境变量:
$ export ISO_IMAGE_NAME=<iso_image_name> 1
$ export ROOTFS_IMAGE_NAME=<rootfs_image_name> 1
$ export OCP_VERSION=<ocp_version> 1
下载所需的镜像:
$ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/pre-release/${OCP_VERSION}/${ISO_IMAGE_NAME} -O /var/www/html/${ISO_IMAGE_NAME}
$ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/pre-release/${OCP_VERSION}/${ROOTFS_IMAGE_NAME} -O /var/www/html/${ROOTFS_IMAGE_NAME}
验证步骤
验证下载的镜像是否成功,并在断开连接的镜像主机上提供,例如:
$ wget http://$(hostname)/${ISO_IMAGE_NAME}
预期输出
... Saving to: rhcos-4.9.0-fc.1-x86_64-live.x86_64.iso rhcos-4.9.0-fc.1-x86_64- 11%[====> ] 10.01M 4.71MB/s ...