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

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

备注

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

方案概述

本示例假设:

  • AKS 群集位于租户 A 中,而 Azure 容器注册表位于租户 B 中 。
  • AKS 群集在 租户 A 中使用服务主体身份验证进行配置。有关详细信息,请参阅 为 AKS 群集创建和使用服务主体

在 AKS 群集订阅中,您至少需要拥有 参与者 角色。 还需要容器注册表订阅中至少具有基于角色的访问控制管理员和容器注册表参与者和数据访问配置管理员角色。

使用以下步骤:

  1. 在租户 A 中创建一个新的多租户应用(服务主体)。

  2. 在租户 B 中预配应用。

  3. 将服务主体配置为从租户 B 的注册表中拉取数据。

  4. 更新 租户 A 中的 AKS 群集,以使用新的服务主体进行身份验证。

分步说明

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

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

  2. 搜索并选择 Microsoft Entra ID

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

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

  5. 在“重定向 URI”中输入

  6. 选择“注册”。

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

    服务主体应用程序 ID

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

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

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

    配置客户端机密

步骤 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. 依次选择“代表组织同意”和“接受” 。

    向租户授予应用程序访问权限

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

租户 B 中,将正确的角色分配给服务主体,范围限定为目标容器注册表。 必须分配 Container Registry Repository Reader (对于 已启用 ABAC 的注册表)或 AcrPull (对于非 ABAC 注册表)。

多租户应用中角色分配的屏幕截图。

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

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

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

后续步骤