This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.7.15.5.2. 准备 VDDK 镜像
导入过程使用 VMware Virtual Disk Development Kit(VDDK)来复制 VMware 虚拟磁盘。
您可以下载 VDDK SDK,创建 VDDK 镜像,将镜像上传到镜像仓库,并将其添加到 v2v-vmware
配置映射中。
您可以配置内部 OpenShift Container Platform 镜像 registry 或 VDDK 镜像的安全外部镜像 registry。该 registry 需要可以被 OpenShift Virtualization 环境访问。
在公共仓库中存储 VDDK 镜像可能会违反 VMware 许可证的条款。
7.15.5.2.1. 配置内部镜像 registry 复制链接链接已复制到粘贴板!
您可以通过更新 Image Registry Operator 配置在裸机上配置内部 OpenShift Container Platform 镜像 registry。
您可以通过一个路由公开 registry,直接从 OpenShift Container Platform 集群内部或外部访问 registry。
更改镜像 registry 的管理状态
要启动镜像 registry,您必须将 Image Registry Operator 配置的 managementState
从 Removed 改为
Managed
。
流程
将
managementState
Image Registry Operator 配置从Removed 改为
Managed
。例如:oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为裸机和其他手动安装配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 集群管理员权限。
- 使用手动置备的 Red Hat Enterprise Linux CoreOS(RHCOS)节点(如裸机)的集群。
为集群置备的持久性存储,如 Red Hat OpenShift Container Storage。
重要当您只有一个副本时,OpenShift Container Platform 支持对镜像 registry 存储的
ReadWriteOnce
访问。要部署支持高可用性的镜像 registry,需要两个或多个副本,ReadWriteMany
访问。- 必须具有 100Gi 容量。
流程
要将 registry 配置为使用存储,请更改
configs
。.imageregistry/cluster 资源中的 spec.
storage.pvc注意使用共享存储时,请查看您的安全设置以防止外部访问。
验证您没有 registry pod:
oc get pod -n openshift-image-registry
$ oc get pod -n openshift-image-registry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果存储类型为
emptyDIR
,则副本数不能大于1
。检查 registry 配置:
oc edit configs.imageregistry.operator.openshift.io
$ oc edit configs.imageregistry.operator.openshift.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
storage: pvc: claim:
storage: pvc: claim:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
claim
字段留空以允许自动创建image-registry-storage
PVC。检查
clusteroperator
状态:oc get clusteroperator image-registry
$ oc get clusteroperator image-registry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保 registry 设置为 managed,以启用镜像的构建和推送。
运行:
oc edit configs.imageregistry/cluster
$ oc edit configs.imageregistry/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,更改行
managementState: Removed
managementState: Removed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 至
managementState: Managed
managementState: Managed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
直接从集群访问registry
您可以从集群内部访问registry。
流程
通过使用内部路由从集群访问registry:
通过获取节点的名称来访问节点:
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc debug nodes/<node_name>
$ oc debug nodes/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用节点上的
oc
和podman
等工具程序,请运行以下命令:chroot /host
sh-4.2# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您的访问令牌登录到容器镜像registry:
oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443
sh-4.2# oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
sh-4.2# podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您应该看到一条确认登录的消息,例如:
Login Succeeded!
Login Succeeded!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意用户名可以是任何值,令牌包含了所有必要的信息。如果用户名包含冒号,则会导致登录失败。
因为 Image Registry Operator 创建了路由,所以它将与
default-route-openshift-image-registry.<cluster_name>
类似。针对您的registry执行
podman pull
和podman push
操作:重要您可以抓取任意镜像,但是如果已添加了system:registry角色,则只能将镜像推送到您自己的registry中。
在以下示例中,使用:
Expand 组件 值 <registry_ip>
172.30.124.220
<port>
5000
<project>
openshift
<image>
image
<tag>
忽略 (默认为
latest
)抓取任意镜像:
podman pull name.io/image
sh-4.2# podman pull name.io/image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
<registry_ip>:<port>/<project>/<image>
格式标记(tag)新镜像。项目名称必须出现在这个 pull 规范中,以供OpenShift Container Platform 把这个镜像正确放置在 registry 中,并在以后正确访问 registry 中的这个镜像:podman tag name.io/image image-registry.openshift-image-registry.svc:5000/openshift/image
sh-4.2# podman tag name.io/image image-registry.openshift-image-registry.svc:5000/openshift/image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须具有指定项目的
system:image-builder
角色,该角色允许用户写或推送镜像。否则,下一步中的podman push
将失败。为了进行测试,您可以创建一个新项目来推送镜像。将新标记的镜像推送到 registry:
podman push image-registry.openshift-image-registry.svc:5000/openshift/image
sh-4.2# podman push image-registry.openshift-image-registry.svc:5000/openshift/image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手动公开受保护的registry
通过使用路由可以开放从外部访问OpenShift Container Platform registry的通道,用户不再需要从集群内部登录到OpenShift Container Platform registry。这样,您可以使用路由地址从集群外部登录 registry,并使用路由主机标记并推送到现有项目。
先决条件:
以下的先决条件会被自动执行:
- 部署 Registry Operator。
- 部署 Ingress Operator。
流程
您可以使用configs.imageregistry.operator.openshift.io
资源中的DefaultRoute
参数或使用自定义路由来公开路由。
使用DefaultRoute
公开registry:
将
DefaultRoute
设置为True
:oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
$ oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
podman
登录:HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
$ HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman login -u kubeadmin -p $(oc whoami -t) --tls-verify=false $HOST
$ podman login -u kubeadmin -p $(oc whoami -t) --tls-verify=false $HOST
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果集群的默认路由证书不受信任,则需要
--tls-verify=false
。您可以将一个自定义的可信证书设置为 Ingress Operator 的默认证书。
使用自定义路由公开registry:
使用路由的 TLS 密钥创建一个 secret:
oc create secret tls public-route-tls \ -n openshift-image-registry \ --cert=</path/to/tls.crt> \ --key=</path/to/tls.key>
$ oc create secret tls public-route-tls \ -n openshift-image-registry \ --cert=</path/to/tls.crt> \ --key=</path/to/tls.key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此步骤是可选的。如果不创建一个secret,则路由将使用Ingress Operator的默认TLS配置。
在 Registry Operator 中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果为registry的路由提供了一个自定义的 TLS 配置,则仅需设置
secretName
。