Каков ожидаемый способ интеграции ACR в AKS?

#kubernetes #azure-aks #azure-container-registry #azure-acr

Вопрос:

В поисках наилучшего способа интеграции ACR с AKS для производственной среды, похоже, существует несколько способов, например, во время установки и после установки, с помощью принципала службы,а также с помощью секретного извлечения изображений и т. Д..

Поэтому для нашей производственной среды ищем наиболее рекомендуемый вариант, где требования следующие.

  • Обязательно ли прикреплять acr во время самого создания aks
  • В чем будет преимущество, если мы интегрируем ACR вместе с самой установкой AKS. (похоже , в этом случае мы не хотим передавать секрет извлечения изображения в спецификацию модуля, а для других опций нам нужно)
  • Какой еще способ интеграции ACR с командой AKS ( az aks update) поможет в этом случае? если да, то в чем будет отличие от предыдущего метода, в котором мы интегрировались во время установки AKS.
  • ЕСЛИ я хочу настроить вторичный кластер AKS в другом регионе, но мне нужно подключить геореплицированный экземпляр ACR основного экземпляра ACR , как я могу это сделать? В этом случае обязательно ли подключать tge ACR во время установки AKS или позже после установки также хорошо?

Ответ №1:

ИМХО, лучший способ-это Azure RBAC. Вам не нужно присоединять ACR при создании AK. Вы можете использовать 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
  }
 

Комментарии:

1. Здорово.. Звучит хорошо.. Я использовал принципала обслуживания во время установки AKS с Terraform.. Если я предоставлю ту же роль serviceprincipal «ACRPull» вручную существующему ACR, получит ли этот AKS доступ для прямого извлечения изображения?