Доступ к реестру контейнеров Azure (ACR) путем назначения роли для службы приложений Azure в Terraform

#azure #terraform #azure-container-registry #azure-appservice

#azure #terraform #azure-container-registry #azure-appservice

Вопрос:

У меня есть служба приложений Azure, которая предоставляется Terraform. Служба приложений запускает образ docker из Azure ACR, прежде чем ей потребуется доступ к ACR. В настоящее время я использую метод пароля и имени входа в моей конфигурации Terraform. Как я могу заставить службу приложений Azure получать доступ к реестру контейнеров Azure путем назначения роли по принципу службы в Terraform?

 resource "azurerm_app_service" "tf_app_service" {
  name                = var.application_name
  location            = azurerm_resource_group.tf_resource_group.location
  resource_group_name = azurerm_resource_group.tf_resource_group.name
  app_service_plan_id = azurerm_app_service_plan.tf_service_plan.id

  site_config {
    always_on        = true
    linux_fx_version = "DOCKER|${var.acr_name}.azurecr.io/${var.img_repo_name}:${var.tag}"
  }

  // How to use role assignment?
  app_settings = {
    DOCKER_REGISTRY_SERVER_URL          = // need to avoid docker URL
    WEBSITES_ENABLE_APP_SERVICE_STORAGE = "false"
    DOCKER_REGISTRY_SERVER_USERNAME     = // need to avoid user name
    DOCKER_REGISTRY_SERVER_PASSWORD     = // need to avoid PW
  }

  identity {
    type = "SystemAssigned"
  }

  tags = {
    environment = var.environment
    DeployedBy  = "terraform"
  }
}
  

Ответ №1:

Здесь описаны шаги по использованию принципа обслуживания для доступа к ACR.

Поэтому, чтобы сделать то же самое в Terraform, сначала необходимо создать новый принцип обслуживания. Затем назначьте ему пароль. После этого вы сможете использовать эти два для заполнения настроек приложения вашей службы приложений.

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

1. Я новичок в этой теме, зачем ему нужно назначать пароль для принципа обслуживания? Могу ли я просто установить для него значение image pull и передать его приложению? Я хочу избежать пароля.

2. что ж, службе приложений необходимо каким-то образом пройти проверку подлинности в ACR. Поскольку управляемая идентификация для этого не работает, для аутентификации используется принцип обслуживания и пароль