2.5. 在 Azure 上配置私有存储端点
您可以使用 Image Registry Operator 在 Azure 上使用私有端点,它会在 OpenShift Container Platform 部署到私有 Azure 集群上时启用私有存储帐户的无缝配置。这可让您在不公开面向公共的存储端点的情况下部署镜像 registry。
不要在 Microsoft Azure Red Hat OpenShift (ARO) 上配置私有存储端点,因为端点可能会使 Microsoft Azure Red Hat OpenShift 集群置于不可恢复的状态。
您可以通过两种方式之一将 Image Registry Operator 配置为使用 Azure 上的私有存储端点:
- 通过配置 Image Registry Operator 来发现 VNet 和子网名称
- 使用用户提供的 Azure Virtual Network (VNet) 和子网名称
2.5.1. 在 Azure 上配置私有存储端点的限制
在 Azure 上配置私有存储端点时有以下限制:
-
在将 Image Registry Operator 配置为使用私有存储端点时,禁用对存储帐户的公共网络访问。因此,在 registry Operator 配置中设置
disableRedirect: true
才能从 OpenShift Container Platform 之外拉取镜像。启用重定向后,registry 会重定向客户端直接从存储帐户拉取镜像,这不再会因为公共网络访问被禁用而工作。如需更多信息,请参阅"在 Azure 上使用私有存储端点时禁用重定向"。 - Image Registry Operator 无法撤销此操作。
2.5.2. 通过启用 Image Registry Operator 发现 VNet 和子网名称,在 Azure 上配置私有存储端点
以下流程演示了如何通过配置 Image Registry Operator 来发现 VNet 和子网名称在 Azure 上设置私有存储端点。
先决条件
- 您已将镜像 registry 配置为在 Azure 上运行。
使用 Installer Provisioned Infrastructure 安装方法设置了您的网络。
对于具有自定义网络设置的用户,请参阅"使用用户提供的 VNet 和子网名称在 Azure 上配置私有存储端点"。
流程
编辑 Image Registry Operator
config
对象,并将networkAccess.type
设置为Internal
:$ oc edit configs.imageregistry/cluster
# ... spec: # ... storage: azure: # ... networkAccess: type: Internal # ...
可选:输入以下命令确认 Operator 已完成置备。这可能需要几分钟时间。
$ oc get configs.imageregistry/cluster -o=jsonpath="{.spec.storage.azure.privateEndpointName}" -w
可选:如果 registry 由路由公开,并且要将存储帐户配置为私有,则必须禁用重定向(如果集群外部拉取到集群),则必须禁用重定向才能继续工作。输入以下命令禁用 Image Operator 配置中的重定向:
$ oc patch configs.imageregistry cluster --type=merge -p '{"spec":{"disableRedirect": true}}'
注意启用重定向后,从集群外部拉取镜像将无法正常工作。
验证
运行以下命令来获取 registry 服务名称:
$ oc registry info --internal=true
输出示例
image-registry.openshift-image-registry.svc:5000
运行以下命令来进入 debug 模式:
$ oc debug node/<node_name>
运行推荐的
chroot
命令。例如:$ chroot /host
输入以下命令登录到容器 registry:
$ podman login --tls-verify=false -u unused -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
输出示例
Login Succeeded!
输入以下命令验证您可以从 registry 中拉取镜像:
$ podman pull --tls-verify=false image-registry.openshift-image-registry.svc:5000/openshift/tools
输出示例
Trying to pull image-registry.openshift-image-registry.svc:5000/openshift/tools/openshift/tools... Getting image source signatures Copying blob 6b245f040973 done Copying config 22667f5368 done Writing manifest to image destination Storing signatures 22667f53682a2920948d19c7133ab1c9c3f745805c14125859d20cede07f11f9
2.5.3. 使用用户提供的 VNet 和子网名称在 Azure 上配置私有存储端点
使用以下步骤配置禁用公共网络访问权限的存储帐户,并在 Azure 上的私有存储端点后公开。
先决条件
- 您已将镜像 registry 配置为在 Azure 上运行。
- 您必须知道用于 Azure 环境的 VNet 和子网名称。
- 如果您的网络是在 Azure 中的单独资源组中配置的,还必须知道其名称。
流程
编辑 Image Registry Operator
config
对象并使用 VNet 和子网名称配置私有端点:$ oc edit configs.imageregistry/cluster
# ... spec: # ... storage: azure: # ... networkAccess: type: Internal internal: subnetName: <subnet_name> vnetName: <vnet_name> networkResourceGroupName: <network_resource_group_name> # ...
可选:输入以下命令确认 Operator 已完成置备。这可能需要几分钟时间。
$ oc get configs.imageregistry/cluster -o=jsonpath="{.spec.storage.azure.privateEndpointName}" -w
注意启用重定向后,从集群外部拉取镜像将无法正常工作。
验证
运行以下命令来获取 registry 服务名称:
$ oc registry info --internal=true
输出示例
image-registry.openshift-image-registry.svc:5000
运行以下命令来进入 debug 模式:
$ oc debug node/<node_name>
运行推荐的
chroot
命令。例如:$ chroot /host
输入以下命令登录到容器 registry:
$ podman login --tls-verify=false -u unused -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
输出示例
Login Succeeded!
输入以下命令验证您可以从 registry 中拉取镜像:
$ podman pull --tls-verify=false image-registry.openshift-image-registry.svc:5000/openshift/tools
输出示例
Trying to pull image-registry.openshift-image-registry.svc:5000/openshift/tools/openshift/tools... Getting image source signatures Copying blob 6b245f040973 done Copying config 22667f5368 done Writing manifest to image destination Storing signatures 22667f53682a2920948d19c7133ab1c9c3f745805c14125859d20cede07f11f9
2.5.4. 可选:在 Azure 上使用私有存储端点时禁用重定向
默认情况下,在使用镜像 registry 时会启用重定向。重定向允许将 registry pod 的流量卸载到对象存储中,从而加快拉取速度。当启用重定向且存储帐户为私有时,来自集群外部的用户无法从 registry 中拉取镜像。
在某些情况下,用户可能希望禁用重定向,以便集群外部的用户可以从 registry 中拉取镜像。
使用以下步骤禁用重定向。
先决条件
- 您已将镜像 registry 配置为在 Azure 上运行。
- 您已配置了路由。
流程
输入以下命令禁用镜像 registry 配置中的重定向:
$ oc patch configs.imageregistry cluster --type=merge -p '{"spec":{"disableRedirect": true}}'
验证
运行以下命令来获取 registry 服务名称:
$ oc registry info
输出示例
default-route-openshift-image-registry.<cluster_dns>
输入以下命令登录到容器 registry:
$ podman login --tls-verify=false -u unused -p $(oc whoami -t) default-route-openshift-image-registry.<cluster_dns>
输出示例
Login Succeeded!
输入以下命令验证您可以从 registry 中拉取镜像:
$ podman pull --tls-verify=false default-route-openshift-image-registry.<cluster_dns> /openshift/tools
输出示例
Trying to pull default-route-openshift-image-registry.<cluster_dns>/openshift/tools... Getting image source signatures Copying blob 6b245f040973 done Copying config 22667f5368 done Writing manifest to image destination Storing signatures 22667f53682a2920948d19c7133ab1c9c3f745805c14125859d20cede07f11f9