你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 Azure Red Hat OpenShift 4 配置内置容器注册表

Azure Red Hat OpenShift 提供了集成容器映像注册表,该注册表增加了按需自动预配新映像存储库的功能。 它为用户提供一个内置位置,以便用户的应用程序内部版本推送生成的映像。

本文介绍如何为 Azure Red Hat OpenShift (ARO) 4 群集配置该内置容器映像注册表。 将了解如何执行以下操作:

  • 授权标识访问注册表
  • 从群集内部访问内置容器映像注册表
  • 从群集外部访问内置容器映像注册表

开始之前

本文假定你有一个现有的 ARO 群集(请参阅创建 Azure Red Hat OpenShift 4 群集)。 如果要配置 Microsoft Entra 集成,请确保使用 az aro create--pull-secret 参数创建群集。

注意

为群集配置 Microsoft Entra 身份验证是从群集外部与内部注册表进行交互的最简单方法。

拥有群集后,通过以 kubeadmin 用户身份进行身份验证来连接到群集

为注册表配置身份验证

对于访问内部注册表的任何标识(群集用户、Microsoft Entra 用户或 ServiceAccount),都必须在群集内授予该标识权限:

作为 kubeadmin,执行以下命令:

# Note: replace "<user>" with the identity you need to access the registry
oc policy add-role-to-user -n openshift-image-registry registry-viewer <user>
oc policy add-role-to-user -n openshift-image-registry registry-editor <user>

注意

对于群集用户和 Microsoft Entra 用户,这与用于在群集中进行身份验证的名称相同。 对于 OpenShift ServiceAccounts,将名称格式改为 system:serviceaccount:<project>:<name>

访问注册表

为注册表配置身份验证后,可以与之交互:

从群集内部

如果需要从群集内部访问注册表(例如,将 CI/CD 平台作为 Pod 运行,该平台将向注册表推送/拉取映像),则可以通过其 ClusterIP 服务访问注册表,网址为完全限定域名 image-registry.openshift-image-registry.svc.cluster.local:5000(群集内的所有 Pod 都可以访问)。

从群集外部

如果工作流要求从群集外部访问内部注册表(例如,要从开发人员的笔记本电脑、外部 CI/CD 平台和/或其他 ARO 群集推送/拉取映像),则需要执行几个额外步骤:

作为 kubeadmin,执行以下命令以通过路由群集外部公开内置注册表:

oc patch config.imageregistry.operator.openshift.io/cluster --patch='{"spec":{"defaultRoute":true}}' --type=merge
oc patch config.imageregistry.operator.openshift.io/cluster --patch='[{"op": "add", "path": "/spec/disableRedirect", "value": true}]' --type=json

然后,可以找到注册表可外部路由的完全限定域名:

作为 kubeadmin,执行:

oc get route -n openshift-image-registry default-route --template='{{ .spec.host }}'

后续步骤

现在,你已经设置了内置容器映像注册表,接下来可以通过在 OpenShift 上部署应用程序来开始使用了。 对于 Java 应用程序,请查阅在 Azure Red Hat OpenShift 4 群集上使用 Open Liberty/WebSphere Liberty 部署 Java 应用程序