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.
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.
Entre no Azure com a CLI do Azure.
az login
Em seguida, instale a extensão mais recente dos Aplicativos de Contêiner do Azure para a CLI.
az extension add --name containerapp --upgrade
Se você não tiver seu próprio repositório GitHub, crie um a partir de uma amostra.
- Navegue até o seguinte local para criar um novo repositório:
- Nomeie seu repositório
my-container-app
.
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.
Mude para a pasta src do repositório clonado.
cd my-container-app cd src
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
Na saída do comando, anote o nome do Registro de Contêiner do Azure.
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.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.
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.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.
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.Copie a saída JSON do comando.
No repositório GitHub, navegue até Settings>Secrets>Actions e selecione New repository secret.
Digite
AZURE_CREDENTIALS
como o nome e cole o conteúdo da saída JSON como o valor.Selecione Add secret (Adicionar segredo).
Criar um fluxo de trabalho de Ações do GitHub
No repositório GitHub, navegue até Ações e selecione Novo fluxo de trabalho.
Selecione Configurar um fluxo de trabalho você mesmo.
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á abaixobranches
e os valores deappSourcePath
,containerAppName
eresourceGroup
correspondem aos valores do repositório e dos recursos do Azure.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 .