$ tar xvf <file>
您可以通过首先创建一个镜像注册表来使用具有备用注册表的集群示例操作符。
您必须能够访问互联网才能获取必要的容器镜像。在此过程中,您将镜像注册表放置在既可以访问您的网络又可以访问互联网的镜像主机上。 |
您可以将 OpenShift Dedicated 安装和后续产品更新所需的镜像镜像到容器镜像注册表,例如 Red Hat Quay、JFrog Artifactory、Sonatype Nexus Repository 或 Harbor。如果您无法访问大型容器注册表,则可以使用*Red Hat OpenShift 的镜像注册表*,这是一个包含在 OpenShift Dedicated 订阅中的小型容器注册表。
您可以使用任何支持Docker v2-2的容器注册表,例如 Red Hat Quay、*Red Hat OpenShift 的镜像注册表*、Artifactory、Sonatype Nexus Repository 或 Harbor。无论您选择哪个注册表,将内容从 Red Hat 托管的互联网站点镜像到隔离的镜像注册表的流程都是相同的。镜像内容后,您将配置每个集群以从您的镜像注册表检索此内容。
OpenShift 镜像注册表不能用作目标注册表,因为它不支持在没有标签的情况下推送,而这是镜像过程中必需的。 |
如果选择不是*Red Hat OpenShift 的镜像注册表*的容器注册表,则您配置的每个集群中的每台机器都必须能够访问它。如果注册表不可访问,则安装、更新或正常操作(例如工作负载重新定位)可能会失败。因此,您必须以高可用性的方式运行镜像注册表,并且镜像注册表至少必须与您的 OpenShift Dedicated 集群的生产可用性相匹配。
当您使用 OpenShift Dedicated 镜像填充镜像注册表时,您可以遵循两种方案。如果您拥有可以访问互联网和镜像注册表但无法访问集群节点的主机,则可以直接从该机器镜像内容。此过程称为*连接镜像*。如果您没有这样的主机,则必须将镜像镜像到文件系统,然后将该主机或可移动介质带入您的受限环境。此过程称为*断开连接镜像*。
对于镜像注册表,要查看已拉取镜像的来源,您必须查看 CRI-O 日志中的正在尝试访问
日志条目。其他查看镜像拉取源的方法(例如在节点上使用crictl images
命令)会显示非镜像镜像名称,即使镜像是从镜像位置拉取的也是如此。
Red Hat 不会使用 OpenShift Dedicated 测试第三方注册表。 |
您可以安装 OpenShift CLI(oc
)以通过命令行界面与 OpenShift Dedicated 集群进行交互。您可以在 Linux、Windows 或 macOS 上安装oc
。
如果您安装了早期版本的 |
您可以使用以下步骤在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
在 Red Hat 客户门户网站上导航到OpenShift Dedicated 下载页面。
从**产品变体**下拉列表中选择体系结构。
从**版本**下拉列表中选择相应的版本。
单击**OpenShift v Linux Clients** 条目旁边的**立即下载**,并保存文件。
解压归档文件
$ tar xvf <file>
将oc
二进制文件放置到您的PATH
环境变量包含的目录中。
要检查您的PATH
,请执行以下命令
$ echo $PATH
安装 OpenShift CLI 后,可以使用oc
命令。
$ oc <command>
您可以使用以下步骤在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
在 Red Hat 客户门户网站上导航到OpenShift Dedicated 下载页面。
从**版本**下拉列表中选择相应的版本。
单击**OpenShift v Windows Client**条目旁边的**立即下载**,并保存文件。
使用 ZIP 程序解压缩归档文件。
将oc
二进制文件移动到您的PATH
环境变量包含的目录中。
要检查您的PATH
,请打开命令提示符并执行以下命令
C:\> path
安装 OpenShift CLI 后,可以使用oc
命令。
C:\> oc <command>
您可以使用以下步骤在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
在 Red Hat 客户门户网站上导航到OpenShift Dedicated 下载页面。
从**版本**下拉列表中选择相应的版本。
单击**OpenShift v macOS Clients**条目旁边的**立即下载**,并保存文件。
对于 macOS arm64,请选择**OpenShift v macOS arm64 Client**条目。 |
解压归档文件。
将oc
二进制文件移动到您的 PATH 环境变量包含的目录中。
要检查您的PATH
,请打开终端并执行以下命令
$ echo $PATH
使用oc
命令验证您的安装
$ oc <command>
创建一个容器镜像注册表凭据文件,使您可以将镜像从 Red Hat 镜像到您的镜像。
您已配置要使用的镜像注册表。
在安装主机上完成以下步骤
从 Red Hat OpenShift 集群管理器下载您的registry.redhat.io
拉取密钥。
通过运行以下命令创建拉取密钥的 JSON 格式副本
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> (1)
1 | 指定存储拉取密钥的文件夹路径以及要创建的 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"
}
}
}
通过运行以下命令生成您的镜像注册表的 base64 编码用户名和密码或令牌
$ echo -n '<user_name>:<password>' | base64 -w0 (1)
1 | 对于<user_name> 和<password> ,请指定您为注册表配置的用户名和密码。 |
BGVtbYk3ZHAtqXs=
编辑 JSON 文件并添加一个描述您注册表的节
"auths": {
"<mirror_registry>": { (1)
"auth": "<credentials>", (2)
"email": "you@example.com"
}
},
1 | 指定您的镜像注册表用于提供内容的注册表域名和端口(可选)。例如,registry.example.com 或 registry.example.com:8443 |
2 | 指定镜像注册表的 base64 编码用户名和密码。 |
{
"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"
}
}
}
将 OpenShift Dedicated 镜像仓库镜像到您的注册表中,以便在集群安装或升级期间使用。
您的镜像主机可以访问互联网。
您已配置要使用的镜像注册表。
您已下载Red Hat OpenShift 集群管理器中的拉取密钥并对其进行了修改,以包含对镜像存储库的认证。
如果您使用自签名证书,则您已在证书中指定了主题替代名称。
在镜像主机上完成以下步骤
查看OpenShift Dedicated 下载页面以确定您要安装的 OpenShift Dedicated 版本并确定存储库标签页面上的相应标签。
设置所需的環境變量
导出发行版版本
$ OCP_RELEASE=<release_version>
对于<release_version>
,请指定与要安装的 OpenShift Dedicated 版本相对应的标签,例如4.5.4
。
导出本地注册表名称和主机端口
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
对于<local_registry_host_name>
,请指定镜像存储库的注册表域名,对于<local_registry_host_port>
,请指定其提供内容的端口。
导出本地存储库名称
$ LOCAL_REPOSITORY='<local_repository_name>'
对于<local_repository_name>
,请指定要在注册表中创建的存储库的名称,例如ocp4/openshift4
。
导出要镜像的存储库的名称
$ PRODUCT_REPO='openshift-release-dev'
对于生产版本,您必须指定openshift-release-dev
。
导出注册表拉取密钥的路径
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'
对于<path_to_pull_secret>
,请指定您创建的镜像注册表的拉取密钥的绝对路径和文件名。
导出发行版镜像
$ RELEASE_NAME="ocp-release"
对于生产版本,您必须指定ocp-release
。
导出集群的体系结构类型
$ ARCHITECTURE=<cluster_architecture> (1)
1 | 指定集群的体系结构,例如x86_64 、aarch64 、s390x 或ppc64le 。 |
导出托管镜像图像的目录的路径
$ REMOVABLE_MEDIA_PATH=<path> (1)
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
数据。
记录上一个命令输出中的整个imageContentSources
部分。有关镜像的信息对您的镜像存储库是唯一的,您必须在安装过程中将imageContentSources
部分添加到install-config.yaml
文件中。
在镜像过程中,镜像名称将被修补到 Quay.io,并且 podman 镜像将在引导虚拟机上的注册表中显示 Quay.io。 |
要创建基于您镜像的内容的安装程序,请将其提取并通过运行以下命令将其固定到发行版
$ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
为了确保您使用的是为所选 OpenShift Dedicated 版本正确的镜像,您必须从镜像内容中提取安装程序。 您必须在具有活动互联网连接的机器上执行此步骤。 |
对于使用安装程序预配基础设施的集群,请运行以下命令
$ openshift-install
集群示例操作员管理的openshift
命名空间中的大多数镜像流都指向位于 Red Hat 注册表 registry.redhat.io 中的镜像。
|
在断开连接的环境中,必须将集群示例操作符设置为 |
以具有dedicated-admin
角色的用户身份访问集群。
为您的镜像注册表创建拉取密钥。
访问要镜像的特定镜像流的镜像,例如
$ oc get is <imagestream> -n openshift -o json | jq .spec.tags[].from.name | grep registry.redhat.io
镜像来自registry.redhat.io的镜像,这些镜像与您需要的任何镜像流相关联
$ oc image mirror registry.redhat.io/rhscl/ruby-25-rhel7:latest ${MIRROR_ADDR}/rhscl/ruby-25-rhel7:latest
创建集群的镜像配置对象
$ oc create configmap registry-config --from-file=${MIRROR_ADDR_HOSTNAME}..5000=$path/ca.crt -n openshift-config
在集群的镜像配置对象中添加镜像所需的受信任 CA。
$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge
更新集群示例操作符配置对象中的samplesRegistry
字段,使其包含镜像配置中定义的镜像位置的hostname
部分。
$ oc edit configs.samples.operator.openshift.io -n openshift-cluster-samples-operator
这是必需的,因为镜像流导入过程目前不使用镜像或搜索机制。 |
将任何未镜像的镜像流添加到集群示例操作符配置对象的skippedImagestreams
字段中。或者,如果您不想支持任何示例镜像流,请在集群示例操作符配置对象中将集群示例操作符设置为Removed
。
如果镜像流导入失败,但集群示例操作符正在定期重试或似乎没有重试,则集群示例操作符会发出警报。 |
openshift
命名空间中的许多模板都引用了镜像流。因此,使用Removed
清除镜像流和模板,可以消除在缺少任何镜像流导致它们无法正常工作时尝试使用它们的可能性。
在安装过程中,OpenShift Dedicated会在openshift-cluster-samples-operator
命名空间中创建一个名为imagestreamtag-to-image
的配置映射。imagestreamtag-to-image
配置映射包含一个条目(填充镜像),用于每个镜像流标签。
配置映射数据字段中每个条目的密钥格式为<image_stream_name>_<image_stream_tag_name>
。
在OpenShift Dedicated的断开连接安装过程中,集群示例操作符的状态设置为Removed
。如果您选择将其更改为Managed
,它将安装示例。
在网络受限或断开连接的环境中使用示例可能需要访问您网络外部的服务。一些示例服务包括:Github、Maven Central、npm、RubyGems、PyPi等。可能需要采取其他步骤才能使集群示例操作符的对象访问它们所需的服务。 |
您可以使用此配置映射作为参考,以确定需要为您的镜像流导入镜像哪些镜像。
当集群示例操作符设置为Removed
时,您可以创建镜像注册表,或确定要使用的现有镜像注册表。
使用新的配置映射作为指南,将您想要的示例镜像到镜像注册表。
将您未镜像的任何镜像流添加到集群示例操作符配置对象的skippedImagestreams
列表中。
将集群示例操作符配置对象的samplesRegistry
设置为镜像注册表。
然后将集群示例操作符设置为Managed
以安装您已镜像的镜像流。
有关详细步骤,请参阅使用具有备用或镜像注册表的集群示例操作符镜像流。