Compartilhar via


Implantar nos Aplicativos de Contêiner do Azure a partir do Azure Pipelines

Os Aplicativos de Contêiner do Azure permitem que você use o Azure Pipelines para publicar revisões em seu aplicativo de contêiner. Conforme os commits são enviados por push ao repositório do Azure DevOps, um pipeline é disparado e atualiza a imagem de contêiner no registro de contêiner. Os Aplicativos de Contêiner do Azure criam uma nova revisão com base na imagem de contêiner atualizada.

O pipeline é disparado por commits para uma ramificação específica no repositório. Ao criar o pipeline, você decide qual ramificação é o gatilho.

Tarefa do Azure Pipelines dos Aplicativos de Contêiner

A tarefa é compatível com os seguintes cenários:

  • Compilar a partir de um Dockerfile e implantar em Aplicativos de Contêiner
  • Compilar a partir do código-fonte sem um Dockerfile e implantar nos Aplicativos de Contêiner. Os idiomas com suporte incluem .NET, Java, Node.js, PHP e Python
  • Implantar uma imagem de contêiner existente nos Aplicativos de Contêiner

Com a versão de produção, essa tarefa já vem com o Azure DevOps e não requer mais instalação explícita. Para obter a documentação completa, consulte AzureContainerApps@1 – Tarefa de implantação v1 dos Aplicativos de Contêiner do Azure.

Exemplos de uso

Veja aqui alguns cenários comuns para usar a tarefa. Para obter mais informações, confira a documentação da tarefa.

Compilar e implantar em Aplicativos de Contêiner

O snippet a seguir mostra como criar uma imagem de contêiner usando o código-fonte e implantá-la nos Aplicativos de Contêiner.

steps:
- task: AzureContainerApps@1
  inputs:
    appSourcePath: '$(Build.SourcesDirectory)/src'
    azureSubscription: 'my-subscription-service-connection'
    acrName: 'myregistry'
    containerAppName: 'my-container-app'
    resourceGroup: 'my-container-app-rg'

A tarefa usa o Dockerfile em appSourcePath para criar a imagem de contêiner. Se nenhum Dockerfile for encontrado, a tarefa tentará compilar a imagem de contêiner do código-fonte em appSourcePath.

Implantar uma imagem de contêiner existente nos Aplicativos de Contêiner

O snippet a seguir mostra como implantar uma imagem de contêiner existente nos Aplicativos de Contêiner. A tarefa é autenticada com o Registro usando a conexão de serviço. Se a identidade da conexão de serviço não for atribuída à função AcrPush para o registro, forneça as credenciais de administrador do Registro usando os parâmetros de entrada acrUsername e acrPassword.

steps:
  - task: AzureContainerApps@1
    inputs:
      azureSubscription: 'my-subscription-service-connection'
      containerAppName: 'my-container-app'
      resourceGroup: 'my-container-app-rg'
      imageToDeploy: 'myregistry.azurecr.io/my-container-app:$(Build.BuildId)'

Importante

Se você estiver criando uma imagem de contêiner em uma etapa separada, use uma marca exclusiva, como a ID do build, em vez de uma marca estável como latest. Para obter mais informações, consulte Melhores práticas de marca de imagem.

Autenticar com um Registro de Contêiner do Azure

A tarefa Aplicativos de Contêiner do Azure precisa ser autenticada com seu Registro de Contêiner do Azure para efetuar push da imagem do contêiner. O aplicativo de contêiner também precisa ser autenticado com o Registro de Contêiner do Azure para enviar por pull a imagem do contêiner.

Para efetuar push de imagens, a tarefa é autenticada automaticamente no registro de contêiner especificado em acrName usando a conexão de serviço fornecida em azureSubscription. Se a identidade da conexão de serviço não for atribuída à função AcrPush para o registro, forneça as credenciais de administrador do registro usando acrUsername e acrPassword.

Para efetuar pull de imagens, os Aplicativos de Contêiner do Azure usam a identidade gerenciada (recomendado) ou as credenciais de administrador para autenticar no Registro de Contêiner do Azure. Para usar a identidade gerenciada, o aplicativo de contêiner de destino para a tarefa deve ser configurado para usar a identidade gerenciada. Para autenticar com as credenciais de administrador do registro, defina as entradas acrUsername e acrPassword da tarefa.

Configuração

Execute as etapas a seguir para configurar um pipeline do Azure DevOps para implantar nos Aplicativos de Contêiner do Azure.

  • Criar um repositório do Azure DevOps para o aplicativo
  • Criar um aplicativo de contêiner com a identidade gerenciada habilitada
  • Atribuir a função AcrPull do Registro de Contêiner do Azure à identidade gerenciada do aplicativo de contêiner
  • Instalar a tarefa dos Aplicativos de Contêiner do Azure do Azure DevOps Marketplace
  • Configurar uma conexão de serviço do Azure DevOps para a assinatura do Azure
  • Criar um pipeline do Azure DevOps

Pré-requisitos

Requisito Instruções
Conta do Azure Se você não tiver, crie uma conta gratuita. Você precisa da permissão de Colaborador ou Proprietário na assinatura do Azure para continuar. Consulte Atribuir funções do Azure usando o portal do Azure para obter detalhes.
Projeto do Azure DevOps Vá para Azure DevOps e selecione Iniciar gratuitamente. Em seguida, crie um projeto.
CLI do Azure Instale a CLI do Azure.

Criar um repositório do Azure DevOps e clonar o código-fonte

Antes de criar um pipeline, o código-fonte do aplicativo deve estar em um repositório.

  1. Entre no Azure DevOps e navegue até seu projeto.

  2. Abra a página Repos.

  3. Na barra de navegação superior, selecione a lista suspensa de repositórios e selecione Importar repositório.

  4. Insira as seguintes informações e selecione Importar:

    Campo Valor
    Tipo do repositório Git
    Clonar URL https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
    Nome my-container-app
  5. Selecione Clonar para exibir a URL do repositório e copiá-la.

  6. Abra um terminal e execute o seguinte comando para clonar o repositório:

    git clone <REPOSITORY_URL> my-container-app
    

    Substitua <REPOSITORY_URL> pela URL copiada.

Criar um aplicativo de contêiner e configurar a identidade gerenciada

Crie seu aplicativo de contêiner usando o comando az containerapp up com as etapas a seguir. Esse comando cria recursos do Azure, compila a imagem de contêiner, armazena a imagem em um registro e implanta em um aplicativo de contêiner.

Após seu aplicativo ser criado, você pode adicionar a identidade gerenciada a ele e atribuir a identidade à função AcrPull para permitir que a identidade extraia imagens do registro.

  1. Altere-o para a pasta src do repositório clonado.

    cd my-container-app
    cd src
    
  2. Crie recursos do Azure e implante um aplicativo de contêiner com o comando az containerapp up.

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. Na saída do comando, observe o nome do Registro de Contêiner do Azure.

  4. Obtenha a ID do recurso completa do registro de contêiner.

    az acr show --name <ACR_NAME> --query id --output tsv
    

    Substitua o <ACR_NAME> pelo nome do seu registro.

  5. Habilite a identidade gerenciada para o aplicativo de contêiner.

    az containerapp identity assign \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --system-assigned \
      --output tsv
    

    Observe a ID da entidade de segurança da identidade gerenciada na saída do comando.

  6. Atribua a função AcrPull para o Registro de Contêiner do Azure à identidade gerenciada do aplicativo de contêiner.

    az role assignment create \
      --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \
      --role AcrPull \
      --scope <ACR_RESOURCE_ID>
    

    Substitua <MANAGED_IDENTITY_PRINCIPAL_ID> pela ID da entidade de segurança da identidade gerenciada e <ACR_RESOURCE_ID> pela ID do recurso do Registro de Contêiner do Azure.

  7. Configure o aplicativo de contêiner para usar a identidade gerenciada para efetuar pull de imagens do Registro de Contêiner do Azure.

    az containerapp registry set \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --server <ACR_NAME>.azurecr.io \
      --identity system
    

    Substitua <ACR_NAME> pelo nome de seu Registro de Contêiner do Azure.

Criar uma conexão de serviço do Azure DevOps

Para implantar nos Aplicativos de Contêiner do Azure, você precisa criar uma conexão de serviço do Azure DevOps para sua assinatura do Azure.

  1. No Azure DevOps, selecione Configurações do projeto.

  2. Selecione Conexões de serviço.

  3. Selecione Nova conexão de serviço.

  4. Selecione Azure Resource Manager.

  5. Selecione Entidade de serviço (automático) e, em seguida, Avançar.

  6. Insira as informações a seguir e selecione Salvar:

    Campo Valor
    Assinatura Selecione sua assinatura do Azure.
    Grupo de recursos Selecione o grupo de recursos (my-container-app-rg) que contém o aplicativo de contêiner e o registro de contêiner.
    Service connection name my-subscription-service-connection

Para saber mais sobre as conexões de serviço, confira Conectar-se ao Microsoft Azure.

Criar um pipeline YAML do Azure DevOps

  1. No projeto do Azure DevOps, selecione Pipelines.

  2. Selecione Novo pipeline.

  3. Selecionar Git do Azure Repos.

  4. Selecione o repositório que contém o código-fonte (my-container-app).

  5. Selecione Pipeline de início.

  6. No editor, substitua o conteúdo do arquivo pelo seguinte YAML:

    trigger:
      branches:
        include:
          - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
      - task: AzureContainerApps@1
        inputs:
          appSourcePath: '$(Build.SourcesDirectory)/src'
          azureSubscription: '<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>'
          acrName: '<ACR_NAME>'
          containerAppName: 'my-container-app'
          resourceGroup: 'my-container-app-rg'
    

    Substitua <AZURE_SUBSCRIPTION_SERVICE_CONNECTION> pelo nome da conexão de serviço do Azure DevOps (my-subscription-service-connection) criada na etapa anterior e <ACR_NAME> pelo nome do Registro de Contêiner do Azure.

  7. Selecione Salvar e executar.

Uma execução do Azure Pipelines começa a compilar e implantar o aplicativo de contêiner. Para verificar o progresso, navegue até Pipelines e selecione a execução. Durante a primeira execução de pipeline, talvez seja solicitado que você autorize o pipeline a usar sua conexão de serviço.

Para implantar uma nova revisão do aplicativo, envie por push uma nova confirmação para a ramificação principal.