Compartilhar via


Pull de imagem do Registro dos Aplicativos de Contêiner do Azure com identidade gerenciada

É possível efetuar pull de imagens de repositórios privados no Registro de Contêiner do Microsoft Azure usando identidades gerenciadas para autenticação e assim evitar o uso de credenciais administrativas.

Você pode usar uma identidade gerenciada atribuída pelo usuário ou atribuída pelo sistema para autenticar com o Registro de Contêiner do Azure.

  • Com uma identidade gerenciada atribuída pelo usuário, você cria e gerencia a identidade fora dos Aplicativos de Contêiner do Azure. Ela pode ser atribuída a vários recursos do Azure, incluindo os Aplicativos de Contêiner do Azure.
  • Com uma identidade gerenciada atribuída pelo sistema, a identidade é criada e gerenciada pelos Aplicativos de Contêiner do Azure. Ele está vinculado ao seu aplicativo de contêiner e é excluído quando o seu aplicativo é excluído.
  • Quando possível, você deve usar uma identidade gerenciada atribuída pelo usuário para efetuar pull de imagens.

Os Aplicativos de Contêiner verificam se há uma nova versão da imagem sempre que um contêiner é iniciado. Na terminologia do Docker ou do Kubernetes, os Aplicativos de Contêiner definem a política de pull de imagem de cada contêiner como always.

Este artigo descreve como usar o portal do Azure para configurar o aplicativo contêiner para usar identidades gerenciadas atribuídas pelo usuário e atribuídas pelo sistema para efetuar pull de imagens de repositórios privados no Registro de Contêiner do Azure.

Identidade gerenciada atribuída pelo usuário

As etapas a seguir descrevem o processo para configurar o aplicativo contêiner para usar uma identidade gerenciada atribuída pelo usuário para efetuar pull de imagens de repositórios privados no Registro de Contêiner do Azure.

  1. Crie um aplicativo contêiner com uma imagem pública.
  2. Adicione a identidade gerenciada atribuída pelo usuário ao aplicativo contêiner.
  3. Crie uma revisão de aplicativo contêiner com uma imagem privada e a identidade gerenciada atribuída pelo usuário.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa.

  • Um Registro de Contêiner do Azure privado contendo uma imagem que você deseja efetuar pull.

  • O Registro de Contêiner do Azure deve permitir tokens de audiência do ARM para autenticação para usar a identidade gerenciada para efetuar pull de imagens. Use o seguinte comando para verificar se os tokens ARM têm permissão para acessar o ACR:

    az acr config authentication-as-arm show -r <REGISTRY>
    

    Se os tokens ARM não forem permitidos, você poderá permitir com o seguinte comando:

    az acr config authentication-as-arm update -r <REGISTRY> --status enabled
    
  • Crie uma identidade gerenciada atribuída pelo usuário. Para obter mais informações, acesse Criar uma identidade gerenciada atribuída pelo usuário.

Criar um aplicativo de contêiner

Use as etapas a seguir para criar um aplicativo contêiner com a imagem de início rápido padrão.

  1. Navegue até a Home page do portal do Azure.

  2. Pesquise por Aplicativos de Contêiner na barra de pesquisa superior.

  3. Selecione Aplicativos de Contêiner nos resultados da pesquisa.

  4. Selecione o botão Criar.

  5. Na guia Básico, execute as ações a seguir.

    Configuração Ação
    Assinatura Selecione sua assinatura do Azure.
    Grupo de recursos Selecione um grupo de recursos existente ou crie um novo.
    Nome do aplicativo de contêiner Insira um nome do aplicativo contêiner.
    Localidade Selecione uma localização.
    Criar Ambiente do Aplicativo de Contêiner Crie um ambiente novo ou selecione um existente.
  6. Selecione o botão Revisar + Criar na parte inferior da página Criar Ambiente do Aplicativo de Contêiner.

  7. Selecione o botão Criar na parte inferior da janela Criar Ambiente do Aplicativo de Contêiner.

Aguarde alguns minutos para a conclusão da implantação do aplicativo contêiner. Após a conclusão da implantação, selecione Ir para o recurso.

Adicionar a identidade gerenciada atribuída pelo usuário

  1. Selecione Identidade no menu esquerdo.
  2. Selecionar a guia Atribuído pelo usuário.
  3. Selecione o botão Adicionar identidade gerenciada atribuída pelo usuário.
  4. Selecione sua assinatura.
  5. Selecione a identidade que você criou.
  6. Selecione Adicionar.

Criar uma revisão de aplicativo contêiner

Crie uma revisão de aplicativo contêiner com uma imagem privada e a identidade gerenciada atribuída pelo sistema.

  1. Selecione Gerenciamento de Revisão no menu esquerdo.

  2. Selecione Criar nova revisão.

  3. Selecione a imagem de contêiner na tabela Imagem de Contêiner.

  4. Insira as informações na caixa de diálogo Editar um contêiner.

    Campo Ação
    Nome Insira um nome do contêiner.
    Fonte da imagem Selecione Registro de Contêiner do Azure.
    Autenticação Selecione Identidade Gerenciada.
    Identidade Selecione a identidade que você criou no menu suspenso.
    Registro Selecione o registro que você quer usar no menu suspenso.
    Imagem Insira o nome da imagem que você quer usar.
    Marca de imagem Insira o nome e a marca da imagem que você quer efetuar pull.

    Captura de tela da caixa de diálogo Editar um contêiner inserindo a identidade gerenciada atribuída pelo usuário.

    Observação

    Se as credenciais administrativas não estiverem habilitadas no registro do Registro de Contêiner do Azure, uma mensagem de aviso será exibida e você precisará inserir manualmente o nome da imagem e as informações da marca.

  5. Selecione Salvar.

  6. Selecione Criar na página Criar e implantar nova revisão.

Uma nova revisão será criada e implantada. O portal tentará automaticamente adicionar a função acrpull à identidade gerenciada atribuída pelo usuário. Se a função não for adicionada, você poderá adicioná-la manualmente.

Você pode conferir se a função foi adicionada verificando a identidade no painel Identidade da página do aplicativo de contêiner.

  1. Selecione Identidade no menu esquerdo.
  2. Selecionar a guia Atribuído pelo usuário.
  3. Selecione a identidade gerenciada atribuída pelo usuário.
  4. Selecione Atribuições de função do Azure no menu na página de recursos de identidade gerenciada.
  5. Verifique se a função acrpull está atribuída à identidade gerenciada atribuída pelo usuário.

Criar um aplicativo contêiner com uma imagem particular

Se você não quiser começar criando um aplicativo de contêiner com uma imagem pública, também poderá fazer o seguinte.

  1. Crie uma identidade gerenciada atribuída pelo usuário.
  2. Adicione a função acrpull à identidade gerenciada atribuída pelo usuário.
  3. Crie um aplicativo contêiner com uma imagem privada e a identidade gerenciada atribuída pelo usuário.

Esse método é típico em cenários de IaC (Infraestrutura como Código).

Limpar os recursos

Se caso não pretende usar esse aplicativo, você pode excluir a instância de Aplicativos de Contêiner do Azure e todos os serviços associados removendo o grupo de recursos.

Aviso

Excluir o grupo de recursos excluirá todos os recursos do grupo. Se você tiver outros recursos no grupo, eles também serão excluídos. Se quiser manter os recursos, você pode excluir a instância do aplicativo contêiner e o ambiente do aplicativo contêiner.

  1. Selecione o grupo de recursos na seção Visão geral.
  2. Selecione o botão Excluir grupo de recursos na parte superior da Visão geral do grupo de recursos.
  3. Insira o nome do grupo de recursos na caixa de diálogo de confirmação.
  4. Selecione Excluir. O processo para excluir o grupo de recursos pode levar alguns minutos para ser concluído.

Identidade gerenciada atribuída pelo sistema

O método para configurar uma identidade gerenciada atribuída pelo sistema no portal do Azure é o mesmo que configurar uma identidade gerenciada atribuída pelo usuário. A única diferença é que você não precisa criar uma identidade gerenciada atribuída pelo usuário. Em vez disso, a identidade gerenciada atribuída pelo sistema é criada quando você cria o aplicativo contêiner.

O método para configurar uma identidade gerenciada atribuída pelo sistema no portal do Azure é:

  1. Crie um aplicativo contêiner com uma imagem pública.
  2. Crie uma revisão de aplicativo contêiner com uma imagem privada e a identidade gerenciada atribuída pelo sistema.

Pré-requisitos

Criar um aplicativo de contêiner

Siga estas etapas para criar um aplicativo contêiner com a imagem de início rápido padrão.

  1. Navegue até a Home page do portal do Azure.

  2. Pesquise por Aplicativos de Contêiner na barra de pesquisa superior.

  3. Selecione Aplicativos de Contêiner nos resultados da pesquisa.

  4. Selecione o botão Criar.

  5. Na guia Básico, execute as ações a seguir.

    Configuração Ação
    Assinatura Selecione sua assinatura do Azure.
    Grupo de recursos Selecione um grupo de recursos existente ou crie um novo.
    Nome do aplicativo de contêiner Insira um nome do aplicativo contêiner.
    Localidade Selecione uma localização.
    Criar Ambiente do Aplicativo de Contêiner Crie um ambiente novo ou selecione um existente.
  6. Selecione o botão Revisar + Criar na parte inferior da página Criar Ambiente do Aplicativo de Contêiner.

  7. Selecione o botão Criar na parte inferior da página Criar Ambiente do Aplicativo de Contêiner.

Aguarde alguns minutos para a conclusão da implantação do aplicativo contêiner. Após a conclusão da implantação, selecione Ir para o recurso.

Editar e implantar uma revisão

Edite o contêiner para usar a imagem do Registro de Contêiner do Azure privado e configure a autenticação para usar a identidade atribuída pelo sistema.

  1. Selecione Contêineres no menu lateral à esquerda.

  2. Selecione Editar e implantar.

  3. Selecione o contêiner de simple-hello-world-container lista.

    Configuração Ação
    Nome Insira o nome do aplicativo contêiner.
    Fonte da imagem Selecione Registro de Contêiner do Azure.
    Autenticação Selecione Identidade gerenciada.
    Identidade Selecione Atribuído pelo sistema.
    Registro Insira o nome do registro.
    Imagem Insira o nome da imagem.
    Marca de imagem Insira a marca.

    Captura de tela Editar um contêiner com identidade gerenciada atribuída pelo sistema.

    Observação

    Se as credenciais administrativas não estiverem habilitadas no registro do Registro de Contêiner do Azure, uma mensagem de aviso será exibida e você precisará inserir manualmente o nome da imagem e as informações da marca.

  4. Escolha Salvar na parte inferior da página.

  5. Selecione Criar na parte inferior da página Criar e implantar nova revisão

  6. Após alguns minutos, selecione Atualizar na página Gerenciamento de revisão para ver a nova revisão.

Uma nova revisão será criada e implantada. O portal tentará automaticamente adicionar a função acrpull à identidade gerenciada atribuída pelo usuário. Se a função não for adicionada, você poderá adicioná-la manualmente.

Você pode conferir se a função foi adicionada verificando a identidade no painel Identidade da página do aplicativo de contêiner.

  1. Selecione Identidade no menu esquerdo.
  2. Selecione a guia Atribuído pelo sistema.
  3. Escolha Atribuições de função do Azure.
  4. Verifique se a função acrpull está atribuída à identidade gerenciada atribuída pelo sistema.

Limpar os recursos

Se caso não pretende usar esse aplicativo, você pode excluir a instância de Aplicativos de Contêiner do Azure e todos os serviços associados removendo o grupo de recursos.

Aviso

Excluir o grupo de recursos excluirá todos os recursos do grupo. Se você tiver outros recursos no grupo, eles também serão excluídos. Se quiser manter os recursos, você pode excluir a instância do aplicativo contêiner e o ambiente do aplicativo contêiner.

  1. Selecione o grupo de recursos na seção Visão geral.
  2. Selecione o botão Excluir grupo de recursos na parte superior da Visão geral do grupo de recursos.
  3. Insira o nome do grupo de recursos na caixa de diálogo de confirmação.
  4. Selecione Excluir. O processo para excluir o grupo de recursos pode levar alguns minutos para ser concluído.

Este artigo descreve como configurar o aplicativo contêiner para usar identidades gerenciadas para efetuar pull de imagens de um repositório privado do Registro de Contêiner do Azure usando a CLI do Azure e o Azure PowerShell.

Pré-requisitos

Pré-requisito Descrição
Conta do Azure Uma conta do Azure com uma assinatura ativa. Se não tiver uma, poderá criar uma gratuitamente.
CLI do Azure Se estiver usando a CLI do Azure, instale a CLI do Azure no computador local.
PowerShell do Azure Se for necessário, instale o Azure PowerShell no PowerShell no computador local. Verifique se a versão mais recente do módulo Az.App está instalada executando o comando Install-Module -Name Az.App.
Registro de Contêiner do Azure Um Registro de Contêiner do Azure privado contendo uma imagem que você deseja efetuar pull. Início Rápido: criar um registro de contêiner privado usando a CLI do Azure ou Início Rápido: criar um registro de contêiner privado usando o Azure PowerShell

Instalação

Para entrar no Azure usando a CLIl, execute o comando a seguir e siga os prompts para concluir o processo de autenticação.

az login

Para garantir que você esteja executando a versão mais recente da CLI, execute o comando “upgrade”.

az upgrade

Em seguida, instale ou atualize a extensão dos Aplicativos de Contêiner do Azure para a CLI.

Se você receber erros sobre parâmetros ausentes ao executar comandos az containerapp na CLI do Azure ou cmdlets do módulo Az.App no Azure PowerShell, certifique-se de ter a última versão da extensão dos Aplicativos de Contêiner do Azure instalada.

az extension add --name containerapp --upgrade

Observação

A partir de maio de 2024, as extensões da CLI do Azure não habilitam mais recursos de visualização por padrão. Para acessar os recursos de visualização do Aplicativos de Contêiner, instale a extensão dos Aplicativos de Contêiner com --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Agora que a extensão ou módulo atual está instalado, registre os namespaces Microsoft.App e Microsoft.OperationalInsights.

Observação

Os recursos dos Aplicativos de Contêiner do Azure migraram do namespace Microsoft.Web para o namespace Microsoft.App. Consulte a migração de namespace de Microsoft.Web para Microsoft.App em março de 2022 para obter mais detalhes.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Em seguida, defina as seguintes variáveis de ambiente. Substitua os espaços reservados entre <> pelos seus valores.

RESOURCE_GROUP="<YOUR_RESOURCE_GROUP_NAME>"
LOCATION="<YOUR_LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<YOUR_ENVIRONMENT_NAME>"
REGISTRY_NAME="<YOUR_REGISTRY_NAME>"
CONTAINERAPP_NAME="<YOUR_CONTAINERAPP_NAME>"
IMAGE_NAME="<YOUR_IMAGE_NAME>"

Se você já tiver um grupo de recursos, ignore essa etapa. Caso contrário, crie um grupo de recursos.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

Criar um ambiente dos aplicativos de contêiner

Se o ambiente não existir, execute o comando a seguir:

Para criar o ambiente, execute o seguinte comando:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

Continue para a próxima seção para configurar a identidade gerenciada atribuída pelo usuário ou ignore e vá para a seção Identidade gerenciada atribuída pelo sistema.

Identidade gerenciada atribuída pelo usuário

Siga este procedimento para configurar a identidade gerenciada atribuída pelo usuário:

  1. Crie uma identidade gerenciada atribuída pelo usuário.
  2. Se você estiver usando o PowerShell, atribua uma função acrpull para o registro da identidade gerenciada. A CLI do Azure faz essa atribuição automaticamente.
  3. Crie um aplicativo contêiner com a imagem do registro privado autenticada com a identidade gerenciada atribuída pelo usuário.

Criar uma identidade gerenciada atribuída ao usuário

Crie uma identidade gerenciada atribuída pelo usuário. Antes de executar o comando a seguir, substitua os <ESPAÇOS RESERVADOS> pelo nome da sua identidade gerenciada.

IDENTITY="<YOUR_IDENTITY_NAME>"
az identity create \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP

Obtenha a ID do recurso da identidade.

IDENTITY_ID=`az identity show \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP \
  --query id`

Criar um aplicativo de contêiner

Crie o aplicativo contêiner com a imagem do registro privado autenticado com a identidade.

Copie a ID do recurso da identidade para colar nos espaços reservados <IDENTITY_ID> no comando abaixo. Se a marca de imagem não for latest, substitua 'latest' pela marca.

echo $IDENTITY_ID
az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --user-assigned <IDENTITY_ID> \
  --registry-identity <IDENTITY_ID> \
  --registry-server "$REGISTRY_NAME.azurecr.io" \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

Limpeza

Cuidado

O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Se existirem recursos fora do escopo deste guia de início rápido no grupo de recursos especificado, eles também serão excluídos.

az group delete --name $RESOURCE_GROUP

Identidade gerenciada atribuída pelo sistema

Para configurar uma identidade atribuída pelo sistema, você precisará:

  1. Crie um aplicativo contêiner com uma imagem pública.
  2. Atribuir uma identidade gerenciada atribuída pelo sistema ao aplicativo contêiner.
  3. Atualizar o aplicativo contêiner com a imagem privada.

Criar um aplicativo de contêiner

Criar um contêiner com uma imagem pública.

az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 80 \
  --ingress external

Atualizar o aplicativo contêiner

Atualize o aplicativo contêiner com a imagem do registro de contêiner privado e adicione uma identidade atribuída pelo sistema para autenticar o pull do Registro de Contêiner do Azure. Também é possível incluir outras configurações necessárias para o aplicativo contêiner, como entrada, escala e configurações de Dapr.

Defina o servidor do registro e ative a identidade gerenciada atribuída pelo sistema no aplicativo contêiner.

az containerapp registry set \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --identity system \
  --server "$REGISTRY_NAME.azurecr.io"
az containerapp update \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

Limpeza

Cuidado

O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Se existirem recursos fora do escopo deste guia de início rápido no grupo de recursos especificado, eles também serão excluídos.

az group delete --name $RESOURCE_GROUP

Este artigo descreve como usar um modelo do Bicep para configurar seu aplicativo de contêiner para usar identidades gerenciadas atribuídas pelo usuário para efetuar pull de imagens de repositórios privados do Registro de Contêiner do Azure.

Pré-requisitos

Instalação

Para entrar no Azure usando a CLIl, execute o comando a seguir e siga os prompts para concluir o processo de autenticação.

az login

Para garantir que você esteja executando a versão mais recente da CLI, execute o comando “upgrade”.

az upgrade

Em seguida, instale ou atualize a extensão dos Aplicativos de Contêiner do Azure para a CLI.

Se você receber erros sobre parâmetros ausentes ao executar comandos az containerapp na CLI do Azure ou cmdlets do módulo Az.App no Azure PowerShell, certifique-se de ter a última versão da extensão dos Aplicativos de Contêiner do Azure instalada.

az extension add --name containerapp --upgrade

Observação

A partir de maio de 2024, as extensões da CLI do Azure não habilitam mais recursos de visualização por padrão. Para acessar os recursos de visualização do Aplicativos de Contêiner, instale a extensão dos Aplicativos de Contêiner com --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Agora que a extensão ou módulo atual está instalado, registre os namespaces Microsoft.App e Microsoft.OperationalInsights.

Observação

Os recursos dos Aplicativos de Contêiner do Azure migraram do namespace Microsoft.Web para o namespace Microsoft.App. Consulte a migração de namespace de Microsoft.Web para Microsoft.App em março de 2022 para obter mais detalhes.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Instalar o Bicep

Se você não tiver o Bicep instalado, poderá instalá-lo da seguinte maneira.

az bicep install

Se você tiver o Bicep instalado, certifique-se de ter a versão mais recente.

az bicep upgrade

Para obter mais informações, confira Instalar o Bicep.

Definir variáveis de ambiente

Em seguida, defina as seguintes variáveis de ambiente. Substitua os espaços reservados entre <> pelos seus valores.

RESOURCE_GROUP="<RESOURCE_GROUP_NAME>"
LOCATION="<LOCATION>"
REGISTRY_NAME="<REGISTRY_NAME>"
IMAGE_NAME="<IMAGE_NAME>"
IMAGE_TAG="<IMAGE_TAG>"
BICEP_TEMPLATE="<BICEP_TEMPLATE>"
CONTAINERAPPS_ENVIRONMENT="<ENVIRONMENT_NAME>"
CONTAINER_NAME="<CONTAINER_NAME>"
CONTAINERAPP_NAME="<CONTAINERAPP_NAME>"
USER_ASSIGNED_IDENTITY_NAME="<USER_ASSIGNED_IDENTITY_NAME>"
LOG_ANALYTICS_WORKSPACE_NAME="<LOG_ANALYTICS_WORKSPACE_NAME>"
APP_INSIGHTS_NAME="<APP_INSIGHTS_NAME>"
ACR_PULL_DEFINITION_ID="7f951dda-4ed3-4680-a7ca-43fe172d538d"

A função AcrPull concede a sua permissão de identidade gerenciada atribuída pelo usuário para efetuar pull da imagem do registro.

Modelo do Bicep

Copie o seguinte modelo Bicep e salve-o como um arquivo com a extensão .bicep.

param environmentName string 
param logAnalyticsWorkspaceName string
param appInsightsName string
param containerAppName string 
param azureContainerRegistry string
param azureContainerRegistryImage string 
param azureContainerRegistryImageTag string
param acrPullDefinitionId string
param userAssignedIdentityName string
param location string = resourceGroup().location

resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2022-01-31-preview' = {
  name: userAssignedIdentityName
  location: location 
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(resourceGroup().id, azureContainerRegistry, 'AcrPullTestUserAssigned')
  properties: {
    principalId: identity.properties.principalId  
    principalType: 'ServicePrincipal'
    // acrPullDefinitionId has a value of 7f951dda-4ed3-4680-a7ca-43fe172d538d
    roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', acrPullDefinitionId)
  }
}

resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
  name: logAnalyticsWorkspaceName
  location: location
  properties: any({
    retentionInDays: 30
    features: {
      searchVersion: 1
    }
    sku: {
      name: 'PerGB2018'
    }
  })
}

resource appInsights 'Microsoft.Insights/components@2020-02-02' = {
  name: appInsightsName
  location: location
  kind: 'web'
  properties: {
    Application_Type: 'web'
    WorkspaceResourceId: logAnalyticsWorkspace.id
  }
}

resource appEnvironment 'Microsoft.App/managedEnvironments@2022-06-01-preview' = {
  name: environmentName
  location: location
  properties: {
    daprAIInstrumentationKey: appInsights.properties.InstrumentationKey
    appLogsConfiguration: {
      destination: 'log-analytics'
      logAnalyticsConfiguration: {
        customerId: logAnalyticsWorkspace.properties.customerId
        sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey
      }
    }
  }
}

resource containerApp 'Microsoft.App/containerApps@2022-06-01-preview' = {
  name: containerAppName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${identity.id}': {}
    }
  }
  properties: {
    environmentId: appEnvironment.id
    configuration: {
      ingress: {
        targetPort: 8080
        external: true
      }
      registries: [
        {
          server: '${azureContainerRegistry}.azurecr.io'
          identity: identity.id
        }
      ]
    }
    template: {
      containers: [
        {
          image: '${azureContainerRegistry}.azurecr.io/${azureContainerRegistryImage}:${azureContainerRegistryImageTag}'
          name: '${azureContainerName}'
          resources: {
            cpu: 1
            memory: '2Gi'
          }
        }
      ]
      scale: {
        minReplicas: 1
        maxReplicas: 1
      }
    }
  }
}

output location string = location
output environmentId string = appEnvironment.id

Implantar o aplicativo de contêiner

Implante seu aplicativo de contêiner com o comando a seguir.

az deployment group create \
  --resource-group "$RESOURCE_GROUP" \
  --template-file "$BICEP_TEMPLATE" \
  --parameters environmentName="$CONTAINERAPPS_ENVIRONMENT" \
  logAnalyticsWorkspaceName="$LOG_ANALYTICS_WORKSPACE_NAME" \
  appInsightsName="$APP_INSIGHTS_NAME" \
  containerAppName="$CONTAINERAPP_NAME" \
  azureContainerRegistry="$REGISTRY_NAME" \
  azureContainerRegistryImage="$IMAGE_NAME" \
  azureContainerRegistryImageTag="$IMAGE_TAG" \
  azureContainerName="$CONTAINER_NAME" \
  acrPullDefinitionId="$ACR_PULL_DEFINITION_ID" \
  userAssignedIdentityName="$USER_ASSIGNED_IDENTITY_NAME" \
  location="$LOCATION"

Este comando implanta o seguinte.

  • Um grupo de recursos do Azure.
  • Um ambiente dos Aplicativos de Contêiner.
  • Um workspace do Log Analytics associado ao ambiente dos Aplicativos de Contêiner.
  • Um recurso do Application Insights para rastreamento distribuído.
  • Uma identidade gerenciada atribuída pelo usuário.
  • Um contêiner para armazenar a imagem.
  • Um aplicativo de contêiner baseado na imagem.

Se você receber o erro Failed to parse '<YOUR_BICEP_FILE_NAME>', please check whether it is a valid JSON format, certifique-se de que o arquivo de modelo Bicep tenha a extensão .bicep.

Recursos adicionais

Para obter mais informações, consulte o seguinte.

Próximas etapas