4.5. 准备您的镜像主机
在使用 oc-mirror 插件镜像(mirror)前,您必须安装插件并创建容器镜像 registry 凭据文件,以允许从红帽镜像到您的镜像。
4.5.1. 安装 oc-mirror OpenShift CLI 插件 复制链接链接已复制到粘贴板!
安装 oc-mirror OpenShift CLI 插件以在断开连接的环境中管理镜像集。
先决条件
已安装 OpenShift CLI(
oc)。如果您在完全断开连接的环境中镜像镜像集,请确保以下内容:- 您已在可访问互联网的主机上安装了 oc-mirror 插件。
- 在断开连接的环境中的主机可以访问目标镜像 registry。
-
您已在使用 oc-mirror 的操作系统中,将
umask参数设置为0022。 - 您已为您要使用的 RHEL 版本安装了正确的二进制文件。
流程
下载 oc-mirror CLI 插件。
- 导航到 OpenShift Cluster Manager 的 Downloads 页面。
- 在 OpenShift disconnected 安装工具部分下,点 Download for OpenShift Client(oc)mirror 插件 并保存该文件。
解压归档:
$ tar xvzf oc-mirror.tar.gz如有必要,将插件文件更新为可执行。
$ chmod +x oc-mirror注意不要重命名
oc-mirror文件。通过将文件放在
PATH中,例如/usr/local/bin,安装 oc-mirror CLI 插件:$ sudo mv oc-mirror /usr/local/bin/.
验证
运行以下命令,验证 oc-mirror v1 的插件是否已成功安装:
$ oc mirror help
4.5.2. 配置允许对容器镜像进行镜像的凭证 复制链接链接已复制到粘贴板!
创建容器镜像 registry 凭证文件,以便您可以将红帽的镜像镜像到您的镜像。在安装主机上完成以下步骤。
安装集群时不要使用此镜像 registry 凭据文件作为 pull secret。如果在安装集群时提供此文件,集群中的所有机器都将具有镜像 registry 的写入权限。
此过程需要您可以对镜像 registry 上的容器镜像 registry 进行写操作,并将凭证添加到 registry pull secret。
先决条件
- 您已将镜像 registry 配置为在断开连接的环境中使用。
- 您在镜像 registry 中标识了镜像仓库的位置,以将容器镜像镜像(mirror)到这个位置。
- 您置备了一个镜像 registry 帐户,允许将镜像上传到该镜像仓库。
流程
-
从 Red Hat OpenShift Cluster Manager 下载
registry.redhat.iopull secret。 以 JSON 格式创建您的 pull secret 副本:
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json>指定将 pull secret 存储在 中的目录的路径,以及您创建的 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" } } }将文件保存为
~/.docker/config.json或$XDG_RUNTIME_DIR/containers/auth.json:如果
.docker或$XDG_RUNTIME_DIR/containers目录不存在,请输入以下命令来创建:$ mkdir -p <directory_name>其中
<directory_name>是~/.docker或$XDG_RUNTIME_DIR/containers。输入以下命令将 pull secret 复制到适当的目录中:
$ cp <path>/<pull_secret_file_in_json> <directory_name>/<auth_file>&
lt;directory_name> 是~/.docker或$XDG_RUNTIME_DIR/containers,<auth_file> 则是config.json或auth.json
运行以下命令,为您的镜像 registry 生成 base64 编码的用户名和密码或令牌:
$ echo -n '<user_name>:<password>' | base64 -w0通过
<user_name>和<password>指定 registry 的用户名和密码。输出示例
BGVtbYk3ZHAtqXs=编辑 JSON 文件并添加描述 registry 的部分:
"auths": { "<mirror_registry>": { "auth": "<credentials>", "email": "you@example.com" } },-
对于
<mirror_registry> 值,请指定 registry 域名,以及您的镜像 registry 用来提供内容的可选端口。例如:registry.example.com或registry.example.com:8443。 -
对于 &
lt;credentials> 值,请指定镜像 registry 的 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" } } }-
对于