Implantar nos Aplicativos de Contêiner do Azure com o GitHub Actions
Os Aplicativos de Contêiner do Azure permitem que você use GitHub Actions para publicar revisões em seu aplicativo de contêiner. À medida que as confirmações são enviadas por push a seu repositório do GitHub, um fluxo de trabalho é disparado e atualiza a imagem de 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 do GitHub Actions é disparado por confirmações de uma ramificação específica de seu repositório. Ao criar o fluxo de trabalho, você decide qual ramificação dispara o fluxo de trabalho.
Este artigo mostra como criar um fluxo de trabalho totalmente personalizável. Para gerar um fluxo de trabalho do GitHub Actions inicial com a CLI do Azure, consulte Gerar fluxo de trabalho do GitHub Actions com a CLI do Azure.
Ação do GitHub dos Aplicativos de Contêiner do Azure
Para criar e implantar seu aplicativo de contêiner, adicione a ação azure/container-apps-deploy-action
ao fluxo de trabalho GitHub Actions.
A ação oferece suporte aos 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
Exemplos de uso
Veja aqui alguns cenários comuns para usar a ação. Para obter mais informações, consulte a página do Marketplace do GitHub da ação.
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:
- 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 em appSourcePath
para criar a imagem de contêiner. Se nenhum Dockerfile for encontrado, a ação 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.
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, use uma marca exclusiva, como o SHA de confirmação, 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 ação Aplicativos de Contêiner do Azure precisa ser autenticada com o seu Registro de Contêiner do Azure para enviar por push a 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 enviar imagens por push, a ação é autenticada automaticamente com o registro de contêiner especificado em acrName
usando das credenciais fornecidas para a ação azure/login
.
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 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 entradas acrUsername
e acrPassword
da ação.
Configuração
Execute as etapas a seguir para configurar um fluxo de trabalho do GitHub Actions para implantar nos Aplicativos de Contêiner do Azure.
- Criar um repositório do GitHub para o seu 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 - Configurar segredos no repositório do GitHub
- Criar um fluxo de trabalho do GitHub Actions
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. |
Conta do GitHub | Inscreva-se gratuitamente. |
CLI do Azure | Instale a CLI do Azure. |
Criar um repositório do GitHub e clonar o código-fonte
Antes de criar o fluxo de trabalho, o código-fonte do 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 do GitHub, crie um com base em um exemplo.
- Navegue até a seguinte localização para criar um repositório:
- Nomeie seu repositório
my-container-app
.
Clone o repositório em seu computador local.
git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
Criar um aplicativo de contêiner com a identidade gerenciada habilitada
Crie seu aplicativo de contêiner usando o comando az containerapp up
nas 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.
Depois de criar seu aplicativo, você pode adicionar uma identidade gerenciada a ele e atribuir à identidade a função AcrPull
para permitir que a identidade extraia imagens do registro.
Altere-o 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 comando
az containerapp up
.az containerapp up \ --name my-container-app \ --source . \ --ingress external
Na saída do comando, observe o nome do Registro de Contêiner do Azure.
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.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 da entidade de segurança da identidade gerenciada na saída do comando.
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.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.
Configurar segredos no repositório do GitHub
O fluxo de trabalho do GitHub requer um segredo chamado AZURE_CREDENTIALS
para autenticar com o Azure. O segredo contém as credenciais de uma entidade de serviço com a função Colaborador no grupo de recursos que contém o aplicativo e o registro de contêiner.
Crie uma entidade de serviço com a função Colaborador no grupo de recursos que contém o aplicativo 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 grupos de recursos no parâmetro--scopes
.Copie a saída JSON do comando.
No repositório do GitHub, navegue até Configurações>Segredos>Ações e selecione Novo segredo do repositório.
Insira
AZURE_CREDENTIALS
como o nome e cole o conteúdo da saída JSON como o valor.Selecione Adicionar segredo.
Criar um fluxo de trabalho do GitHub Actions
No repositório do GitHub, navegue até Ações e selecione Novo fluxo de trabalho.
Escolha Configurar um fluxo de trabalho por conta própria.
Cole o YAML a seguir 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 de seu Registro de Contêiner do Azure. Confirme se o nome da ramificação embranches
e os valores deappSourcePath
,containerAppName
eresourceGroup
correspondem aos valores dos seus recursos do repositório e do Azure.Confirme as alterações na ramificação principal.
Uma execução de fluxo de trabalho do GitHub Actions deve começar a compilar e implantar seu aplicativo de contêiner. Para verificar seu progresso, navegue até Ações.
Para implantar uma nova revisão do aplicativo, envie por push uma nova confirmação para a ramificação principal.