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

将 Azure 容器注册表与 Azure Red Hat OpenShift (ARO) 配合使用

Azure 容器注册表 (ACR) 是一项托管容器注册表服务,可用于存储具有企业功能(如异地复制)的专用 Docker 容器映像。 如果要从 ARO 群集访问 ACR,群集可以通过将 Docker 登录凭据存储在 Kubernetes 机密中来使用 ACR 进行身份验证。 同样,在拉取映像时,ARO 群集可以使用 pod 规范中的 imagePullSecret 对注册表进行身份验证。 在本文中,你将了解如何使用 Azure Red Hat OpenShift 群集设置 Azure 容器注册表,以存储和拉取专用 Docker 容器映像。

先决条件

本指南假定你已有 Azure 容器注册表。 若没有,请使用 Azure 门户或按照 Azure CLI 说明创建容器注册表。

本文还假定你已有一个 Azure Red Hat OpenShift 群集并安装了 oc CLI。 如果没有,请按照创建 ARO 群集教程中的说明进行操作。

获取拉取机密

要从 ARO 群集访问注册表,需要从 ACR 获取一个拉取机密。

可以使用 Azure 门户或 Azure CLI 来获取拉取机密凭据。

如果使用 Azure 门户,请导航到 ACR 实例,然后选择“访问密钥”docker-username 是容器注册表的名称,请为 docker-password 使用 password 或 password2。

访问密钥

可以使用 Azure CLI 获取这些凭据:

az acr credential show -n <your registry name>

创建 Kubernetes 机密

现在,我们将使用这些凭据创建 Kubernetes 机密。 使用 ACR 凭据执行以下命令:

oc create secret docker-registry \
    --docker-server=<your registry name>.azurecr.io \
    --docker-username=<your registry name> \
    --docker-password=******** \
    --docker-email=unused \
    acr-secret

注意

此机密将存储在当前 OpenShift 项目(Kubernetes 命名空间)中,并且只能由在该项目中创建的 pod 引用。 请参阅此文档,获取有关创建群集范围内的拉取机密的进一步说明。

接下来,将机密链接到 Pod 将使用的服务帐户,以便 Pod 可以访问容器注册表。 服务帐户的名称应与 Pod 使用的服务帐户的名称一致。 default 是默认服务帐户:

oc secrets link default <pull_secret_name> --for=pull

使用专用注册表映像创建 pod

现在,我们已将你的 ARO 群集连接到 ACR,接下来让我们从 ACR 中拉取一个图像来创建一个 pod。

从 podSpec 开始,并指定作为 imagePullSecret 创建的机密:

apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  containers:
  - name: hello-world
    image: <your registry name>.azurecr.io/hello-world:v1
  imagePullSecrets:
  - name: acr-secret

要测试 pod 是否已启动并正在运行,请执行此命令并等待,直到状态为“正在运行”

$ oc get pods --watch
NAME         READY   STATUS    RESTARTS   AGE
hello-world  1/1     Running   0          30s

后续步骤