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.
Entre no Azure DevOps e navegue até seu projeto.
Abra a página Repos .
Na barra de navegação superior, selecione a lista suspensa de repositórios e selecione Importar repositório.
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
Selecione Clonar para visualizar o URL do repositório e copiá-lo.
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.
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.
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.
No Azure DevOps, selecione Definições do projeto.
Selecione Conexões de serviço.
Selecione Nova conexão de serviço.
Selecione Azure Resource Manager.
Selecione Entidade de serviço (automática) e selecione Avançar.
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
No seu projeto do Azure DevOps, selecione Pipelines.
Selecione Novo pipeline.
Selecione Azure Repos Git.
Selecione o repositório que contém o código-fonte (
my-container-app
).Selecione Pipeline inicial.
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.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 .