2.2. 创建镜像 registry
创建 registry 来托管安装 OpenShift Container Platform 所需的镜像内容。
以下流程创建一个简单的 registry,它可在 /opt/registry
文件夹中保存数据并在 podman
容器中运行。您可以使用不同的 registry 解决方案,例如 Red Hat Quay。检查以下流程以确保 registry 可以正常工作。
先决条件
- 网络上有一个 Red Hat Enterprise Linux (RHEL) 服务器充当 registry 主机。
- registry 主机可以访问互联网。
流程
安装所需的软件包:
# yum -y install podman httpd-tools
podman
软件包提供容器软件包,用于运行 registry。httpd-tools
软件包提供htpasswd
实用程序,用于创建用户。为 registry 创建文件夹:
# mkdir -p /opt/registry/{auth,certs,data}
这些文件夹挂载到 registry 容器中。
为 registry 提供证书。如果您没有现有的可信证书颁发机构,您可以生成自签名证书:
$ cd /opt/registry/certs # openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt
在提示符处,为证书提供所需的值:
国家/地区名称(双字母代码)
指定您所在位置的双字母 ISO 国家/地区代码。请参见 ISO 3166 国家/地区代码标准。
州或省名称(完整名称)
输入您的州或省的完整名称。
本地名称(例如,城市)
输入您的城市名称。
机构名称(例如,公司)
输入公司的名称。
组织单元名称(例如,部门)
输入您的部门名称。
通用名称(例如,您的名字或服务器主机名)
输入 registry 主机的主机名。确保您的主机名在 DNS 中,并且解析为预期的 IP 地址。
电子邮件地址
输入您的电子邮件地址。如需了解更多信息,请参阅 OpenSSL 文档中的 req 说明。
为 registry 生成使用
bcrpt
格式的用户名和密码:# htpasswd -bBc /opt/registry/auth/htpasswd <user_name> <password> 1
- 1
- 将
<user_name>
和<password>
替换为用户名和密码。
创建
mirror-registry
容器以托管 registry:# podman run --name mirror-registry -p <local_registry_host_port>:5000 \ 1 -v /opt/registry/data:/var/lib/registry:z \ -v /opt/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v /opt/registry/certs:/certs:z \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \ -d docker.io/library/registry:2
- 1
- 对于
<local_registry_host_port>
,请指定您的镜像 registry 用于提供内容的端口。
为 registry 打开所需的端口:
# firewall-cmd --add-port=<local_registry_host_port>/tcp --zone=internal --permanent 1 # firewall-cmd --add-port=<local_registry_host_port>/tcp --zone=public --permanent 2 # firewall-cmd --reload
将自签名证书添加到您的可信证书列表中:
# cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/ # update-ca-trust
您必须信任您的证书,才能在镜像过程中登录到 registry。
确认 registry 可用:
$ curl -u <user_name>:<password> -k https://<local_registry_host_name>:<local_registry_host_port>/v2/_catalog 1 {"repositories":[]}
- 1
- 对于
<user_name>
和<password>
,指定 registry 的用户名和密码。对于<local_registry_host_name>
,请指定在您的证书中指定的 registry 域名,如registry.example.com
。对于<local_registry_host_port>
,请指定您的镜像 registry 用于提供内容的端口。
如果命令输出显示一个空存储库,则您的 registry 已经可用。