将映像从容器注册表拉取到另一个 Microsoft Entra 租户中的 AKS 群集

在某些情况下,Azure AKS 群集可能位于一个 Microsoft Entra 租户中,而 Azure 容器注册表位于另一个租户中。 本文介绍了使用 AKS 服务主体凭据从容器注册表中进行拉取以启用跨租户身份验证的步骤。

注意

如果群集和容器注册表位于不同租户中,则不能附加注册表并使用 AKS 托管标识进行身份验证。

方案概述

本示例假设:

  • AKS 群集位于租户 A 中,而 Azure 容器注册表位于租户 B 中 。
  • 在租户 A 中为 AKS 群集配置了服务主体身份验证。详细了解如何为 AKS 群集创建和使用服务主体

至少需要 AKS 群集订阅中的“参与者”角色和容器注册表订阅中的“所有者”角色。

可执行下文中的步骤来完成以下操作:

  • 在租户 A 中创建一个新的多租户应用(服务主体)。
  • 在租户 B 中预配应用。
  • 将服务主体配置为从租户 B 中的注册表中拉取
  • 更新租户 A 中的 AKS 群集,以使用新的服务主体进行身份验证

分步说明

步骤 1:创建多租户 Microsoft Entra 应用程序

  1. 登录到租户 A 中的 Azure 门户

  2. 搜索并选择 Microsoft Entra ID

  3. 在“管理”下,选择“应用注册”>“+ 新建注册”。

  4. 在“支持的帐户类型”中,选择“任何组织目录中的帐户”。

  5. 在“重定向 URI”中输入 https://www.microsoft.com

  6. 选择“注册”。

  7. 在“概述”页上,记下应用程序(客户端)ID 。 将在步骤 2 和步骤 4 中使用该 ID。

    Service principal application ID

  8. 在“证书和机密”中的“客户端机密”下,选择“+ 新建客户端机密”

  9. 输入说明(例如“密码”),然后选择“添加”。

  10. 在“客户端机密”中,记下客户端机密的值。 在步骤 4 中将使用该值更新 AKS 群集的服务主体。

    Configure client secret

步骤 2:在 ACR 租户中预配服务主体

  1. 使用租户 B 中的管理员帐户打开以下链接。如有指示,请插入租户 B 的 ID 和多租户应用的应用程序 ID(客户端 ID) 。

    https://login.chinacloudapi.cn/<Tenant B ID>/oauth2/authorize?client_id=<Multitenant application ID>&response_type=code&redirect_uri=<redirect url>
    
  2. 依次选择“代表组织同意”和“接受” 。

    Grant tenant access to application

步骤 3:向服务主体授予从注册表拉取的权限

在租户 B中,将 AcrPull 角色分配给服务主体,范围限定为目标容器注册表。 可以使用 Azure 门户或其他工具来分配角色。 有关使用 Azure CLI 的示例步骤,请参阅使用服务主体进行 Azure 容器注册表身份验证

Assign acrpull role to multitenant app

步骤 4:使用 Microsoft Entra 应用程序机密更新 AKS

使用在步骤 1 中收集的多租户应用程序(客户端)ID 和客户端机密更新 AKS 服务主体凭据

更新服务主体可能需要几分钟时间。

后续步骤