【问题标题】:What is the expected way to integrate ACR to AKS?将 ACR 集成到 AKS 的预期方式是什么?
【发布时间】:2021-10-17 20:24:41
【问题描述】:

寻找将 ACR 与 AKS for Production 环境集成的最佳方法,似乎有多种方法,例如在安装期间和安装后,使用服务主体,以及使用图像拉取密钥等。

所以为我们的生产环境寻找最推荐的选项,这里的要求如下。

  • 在创建 aks 期间是否必须附加 acr
  • 如果我们将 ACR 与 AKS 安装本身集成在一起会有什么优势。 (似乎,在这种情况下,我们不想将图像拉取秘密传递给 pod 规范以及我们需要的其他选项)
  • 在这种情况下,将 ACR 与 AKS (az aks update) 命令集成的另一种方法是什么?如果是,与我们在 AKS 安装期间集成的先前方法有什么不同。
  • 如果我想在另一个区域设置辅助 AKS 集群,但需要连接 ACR 主实例的 ACR 地理复制实例,我该如何完成?在这种情况下,是否必须在 AKS 安装期间附加 tge ACR 或稍后安装后也可以?

【问题讨论】:

    标签: kubernetes azure-aks azure-container-registry azure-acr


    【解决方案1】:

    恕我直言,最好的方法是 Azure RBAC。创建 AKS 时无需附加 ACR。您可以利用 Azure RBAC 并将角色“AcrPull”分配给节点池的 Kubelet 标识。这可以为您拥有的每个 ACR 完成:

    export KUBE_ID=$(az aks show -g <resource group> -n <aks cluster name> --query identityProfile.kubeletidentity.objectId -o tsv)
    export ACR_ID=$(az acr show -g <resource group> -n <acr name> --query id -o tsv)
    az role assignment create --assignee $KUBE_ID --role "AcrPull" --scope $ACR_ID
    

    地形:

      resource "azurerm_role_assignment" "example" {
        scope                            = azurerm_container_registry.acr.id
        role_definition_name             = "AcrPull"
        principal_id                     = azurerm_kubernetes_cluster.aks.kubelet_identity[0].object_id
      }
    

    【讨论】:

    • 太棒了.. 听起来不错.. 在 AKS 安装过程中我使用了服务主体与 Terraform.. 如果我手动将相同的服务主体“ACRPull”角色授予现有 ACR,此 AKS 将获得直接拉取图片的权限?
    猜你喜欢
    • 2021-11-06
    • 2019-03-01
    • 2020-11-07
    • 1970-01-01
    • 2012-10-21
    • 2021-03-26
    • 2012-08-16
    • 2013-06-29
    • 2021-02-06
    相关资源
    最近更新 更多