#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. Поскольку управляемая идентификация для этого не работает, для аутентификации используется принцип обслуживания и пароль