Partilhar via


Implementar no Azure Container Apps 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. À medida que as confirmações são enviadas por push para o repositório do Azure DevOps, um pipeline é acionado que atualiza a imagem do contêiner no registro do contêiner. Os Aplicativos de Contêiner do Azure criam uma nova revisão com base na imagem de contêiner atualizada.

Confirmações em uma ramificação específica em seu repositório acionam o pipeline. Ao criar o pipeline, você decide qual ramificação é o gatilho.

Tarefa Container Apps Azure Pipelines

A tarefa suporta os seguintes cenários:

  • Crie a partir de um Dockerfile e implante em aplicativos de contêiner
  • Crie a partir do código-fonte sem um Dockerfile e implante em aplicativos de contêiner. As linguagens suportadas incluem .NET, Java, Node.js, PHP e Python
  • Implantar uma imagem de contêiner existente em Aplicativos de Contêiner

Com a versão de produção, essa tarefa vem com o Azure DevOps e não requer mais instalação explícita. Para obter a documentação completa, consulte AzureContainerApps@1 tarefa - Azure Container Apps Deploy v1.

Exemplos de utilização

Aqui estão alguns cenários comuns para usar a tarefa. Para obter mais informações, consulte a documentação da tarefa.

Criar e implantar em aplicativos de contêiner

O trecho a seguir mostra como criar uma imagem de contêiner a partir do código-fonte e implantá-la em 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 para appSourcePath criar a imagem do contêiner. Se nenhum Dockerfile for encontrado, a tarefa tentará criar a imagem do contêiner a partir do código-fonte no appSourcePath.

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

O trecho a seguir mostra como implantar uma imagem de contêiner existente em 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 a AcrPush função para o registro, forneça as credenciais de administrador do registro usando os acrUsername parâmetros e acrPassword input.

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, certifique-se de usar uma tag exclusiva, como a ID de compilação, em vez de uma tag estável como latest. Para obter mais informações, consulte Práticas recomendadas de tags de imagem.

Autenticar com o 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 enviar por push a imagem do contêiner. O aplicativo de contêiner também precisa se autenticar com seu Registro de Contêiner do Azure para extrair a imagem do contêiner.

Para enviar imagens por push, a tarefa é autenticada automaticamente com o 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 a AcrPush função para o Registro, forneça as credenciais de administrador do Registro usando acrUsername e acrPassword.

Para extrair imagens, os Aplicativos de Contêiner do Azure usam identidade gerenciada (recomendada) ou credenciais de administrador para autenticar com o 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 tarefas acrUsername e acrPassword as entradas.

Configuração

Siga 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 seu aplicativo
  • Criar um aplicativo de contêiner com identidade gerenciada habilitada
  • Atribuir a AcrPull função do Registro de Contêiner do Azure à identidade gerenciada do aplicativo de contêiner
  • Instalar a tarefa Aplicativos de Contêiner do Azure a partir do Azure DevOps Marketplace
  • Configurar uma conexão de serviço do Azure DevOps para sua assinatura do Azure
  • Criar um pipeline do Azure DevOps

Pré-requisitos

Requisito Instruções
Conta do Azure Se você não tiver uma, crie uma conta gratuitamente. 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 Azure DevOps Vá para Azure DevOps e selecione Iniciar grátis. Em seguida, crie um novo 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 seu 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 Value
    Tipo de repositório Git
    Clone URL https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
    Nome my-container-app
  5. Selecione Clonar para visualizar o URL do repositório e copiá-lo.

  6. Abra um terminal e execute o seguinte comando:

    git clone <REPOSITORY_URL> my-container-app
    

    Substitua <REPOSITORY_URL> pelo URL copiado.

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

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

Depois que seu aplicativo for criado, você poderá adicionar uma identidade gerenciada ao seu aplicativo e atribuir a identidade à AcrPull função para permitir que a identidade extraia imagens do registro.

  1. Mude 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 az containerapp up comando.

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

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

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

    Substitua <ACR_NAME> pelo nome do seu registo.

  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
    

    Observe a ID principal da identidade gerenciada na saída do comando.

  6. Atribua a AcrPull função do 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 principal 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 extrair 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 do 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 Definiçõ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ática) e selecione Avançar.

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

    Campo Value
    Subscrição Selecione a subscrição do Azure.
    Grupo de recursos Selecione o grupo de recursos (my-container-app-rg) que contém seu aplicativo de contêiner e registro de contêiner.
    Nome da conexão de serviço my-subscription-service-connection

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

Criar um pipeline YAML do Azure DevOps

  1. No seu projeto do Azure DevOps, selecione Pipelines.

  2. Selecione Novo pipeline.

  3. Selecione Azure Repos Git.

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

  5. Selecione Pipeline inicial.

  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) que você criou na etapa anterior e <ACR_NAME> pelo nome do seu Registro de Contêiner do Azure.

  7. Selecione Guardar e executar.

Uma execução do Azure Pipelines começa a criar e implantar seu aplicativo de contêiner. Para verificar seu progresso, navegue até Pipelines e selecione a execução. Durante a primeira execução do pipeline, você pode ser solicitado a autorizar o pipeline a usar sua conexão de serviço.

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