Partilhar via


Implementar no Azure Container Apps com o GitHub Actions

Os Aplicativos de Contêiner do Azure permitem que você use as Ações do GitHub para publicar revisões em seu aplicativo de contêiner. À medida que as confirmações são enviadas por push para o repositório GitHub, um fluxo de trabalho é 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.

Alterações em um repositório do GitHub acionam uma ação para criar uma nova revisão.

O fluxo de trabalho de Ações do GitHub é acionado por confirmações em uma ramificação específica em seu repositório. Ao criar o fluxo de trabalho, você decide qual ramificação aciona o fluxo de trabalho.

Este artigo mostra como criar um fluxo de trabalho totalmente personalizável. Para gerar um fluxo de trabalho inicial de Ações do GitHub com a CLI do Azure, consulte Gerar fluxo de trabalho de Ações do GitHub com a CLI do Azure.

Ação GitHub dos Aplicativos de Contêiner do Azure

Para criar e implantar seu aplicativo de contêiner, adicione a ação ao fluxo de trabalho de Ações do azure/container-apps-deploy-action GitHub.

A ação 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

Exemplos de utilização

Aqui estão alguns cenários comuns para usar a ação. Para obter mais informações, consulte a página do GitHub Marketplace da ação.

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:

  - name: Log in to Azure
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}

  - name: Build and deploy Container App
    uses: azure/container-apps-deploy-action@v1
    with:
      appSourcePath: ${{ github.workspace }}/src
      acrName: myregistry
      containerAppName: my-container-app
      resourceGroup: my-rg

A ação usa o Dockerfile para appSourcePath criar a imagem do contêiner. Se nenhum Dockerfile for encontrado, a ação 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.

steps:

  - name: Log in to Azure
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}

  - name: Build and deploy Container App
    uses: azure/container-apps-deploy-action@v1
    with:
      acrName: myregistry
      containerAppName: my-container-app
      resourceGroup: my-rg
      imageToDeploy: myregistry.azurecr.io/app:${{ github.sha }}

Importante

Se você estiver criando uma imagem de contêiner em uma etapa separada, certifique-se de usar uma tag exclusiva, como a commit SHA, 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 ação 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 ação é autenticada automaticamente com o registro de contêiner especificado em acrName usando as credenciais fornecidas para a azure/login ação.

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 que a ação está implantando deve ser configurado para usar a identidade gerenciada. Para autenticar com as credenciais de administrador do Registro, defina as ações acrUsername e acrPassword as entradas.

Configuração

Você executa as etapas a seguir para configurar um fluxo de trabalho de Ações do GitHub para implantar nos Aplicativos de Contêiner do Azure.

  • Criar um repositório GitHub 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
  • Configurar segredos em seu repositório GitHub
  • Criar um fluxo de trabalho de Ações do GitHub

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.
Conta GitHub Registe-se gratuitamente.
CLI do Azure Instale a CLI do Azure.

Criar um repositório GitHub e clonar o código-fonte

Antes de criar o fluxo de trabalho, o código-fonte do seu aplicativo deve estar em um repositório do GitHub.

  1. Entre no Azure com a CLI do Azure.

    az login
    
  2. Em seguida, instale a extensão mais recente dos Aplicativos de Contêiner do Azure para a CLI.

    az extension add --name containerapp --upgrade
    
  3. Se você não tiver seu próprio repositório GitHub, crie um a partir de uma amostra.

    1. Navegue até o seguinte local para criar um novo repositório:
    2. Nomeie seu repositório my-container-app.
  4. Clone o repositório para o seu computador local.

    git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
    

Criar um aplicativo de contêiner com identidade gerenciada habilitada

Crie seu aplicativo de contêiner usando o az containerapp up comando nas 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 de criar seu aplicativo, você pode adicionar uma identidade gerenciada ao 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.

Configurar segredos em seu repositório GitHub

O fluxo de trabalho do GitHub requer um segredo nomeado AZURE_CREDENTIALS para autenticar com o Azure. O segredo contém as credenciais de uma entidade de serviço com a função de Colaborador no grupo de recursos que contém o aplicativo de contêiner e o registro de contêiner.

  1. Crie uma entidade de serviço com a função de Colaborador no grupo de recursos que contém o aplicativo de contêiner e o registro de contêiner.

    az ad sp create-for-rbac \
      --name my-app-credentials \
      --role contributor \
      --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/my-container-app-rg \
      --json-auth \
      --output json
    

    Substitua <SUBSCRIPTION_ID> pela ID da sua assinatura do Azure. Se o registro de contêiner estiver em um grupo de recursos diferente, especifique ambos os --scopes grupos de recursos no parâmetro.

  2. Copie a saída JSON do comando.

  3. No repositório GitHub, navegue até Settings>Secrets>Actions e selecione New repository secret.

  4. Digite AZURE_CREDENTIALS como o nome e cole o conteúdo da saída JSON como o valor.

  5. Selecione Add secret (Adicionar segredo).

Criar um fluxo de trabalho de Ações do GitHub

  1. No repositório GitHub, navegue até Ações e selecione Novo fluxo de trabalho.

  2. Selecione Configurar um fluxo de trabalho você mesmo.

  3. Cole o seguinte YAML no editor.

    name: Azure Container Apps Deploy
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - uses: actions/checkout@v3
    
          - name: Log in to Azure
            uses: azure/login@v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
          - name: Build and deploy Container App
            uses: azure/container-apps-deploy-action@v1
            with:
              appSourcePath: ${{ github.workspace }}/src
              acrName: <ACR_NAME>
              containerAppName: my-container-app
              resourceGroup: my-container-app-rg
    

    Substitua <ACR_NAME> pelo nome do seu Registro de Contêiner do Azure. Confirme se o nome da ramificação está abaixo branches e os valores de appSourcePath, containerAppNamee resourceGroup correspondem aos valores do repositório e dos recursos do Azure.

  4. Confirme as alterações na ramificação principal .

Um fluxo de trabalho de Ações do GitHub deve começar a criar e implantar seu aplicativo de contêiner. Para verificar seu progresso, navegue até Ações.

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