4.2. 直接从集群访问registry
您可以从集群内部访问registry。
流程
通过使用内部路由从集群访问registry:
通过获取节点的名称来访问节点:
$ oc get nodes
$ oc debug nodes/<node_name>
要在节点上启用对
oc
和podman
等工具的访问,请将您的根目录改为/host
:sh-4.2# chroot /host
使用您的访问令牌登录到容器镜像registry:
sh-4.2# oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443
sh-4.2# podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
您应该看到一条确认登录的消息,例如:
Login Succeeded!
注意用户名可以是任何值,令牌包含了所有必要的信息。如果用户名包含冒号,则会导致登录失败。
因为 Image Registry Operator 创建了路由,所以它将与
default-route-openshift-image-registry.<cluster_name>
类似。针对您的registry执行
podman pull
和podman push
操作:重要您可以抓取任意镜像,但是如果已添加了system:registry角色,则只能将镜像推送到您自己的registry中。
在以下示例中,使用:
组件 值 <registry_ip>
172.30.124.220
<port>
5000
<project>
openshift
<image>
image
<tag>
忽略 (默认为
latest
)抓取任意镜像:
sh-4.2# podman pull <name.io>/<image>
使用
<registry_ip>:<port>/<project>/<image>
格式标记(tag)新镜像。项目名称必须出现在这个 pull 规范中,以供OpenShift Container Platform 把这个镜像正确放置在 registry 中,并在以后正确访问 registry 中的这个镜像:sh-4.2# podman tag <name.io>/<image> image-registry.openshift-image-registry.svc:5000/openshift/<image>
注意您必须具有指定项目的
system:image-builder
角色,该角色允许用户写或推送镜像。否则,下一步中的podman push
将失败。为了进行测试,您可以创建一个新项目来推送镜像。将新标记的镜像推送到 registry:
sh-4.2# podman push image-registry.openshift-image-registry.svc:5000/openshift/<image>
注意将镜像推送到内部 registry 时,存储库名称必须使用
<project>/<name>
格式。在存储库名称中使用多个项目级别会导致身份验证错误。