Automatize a criação e manutenção de imagens de contêiner com tarefas ACR

Os contêineres fornecem novos níveis de virtualização, isolando as dependências de aplicativos e desenvolvedores dos requisitos operacionais e de infraestrutura. O que permanece, no entanto, é a necessidade de abordar como essa virtualização de aplicativos é gerenciada e corrigida ao longo do ciclo de vida do contêiner.

O que é ACR Tasks?

As Tarefas ACR são um conjunto de recursos dentro do Registro de Contêiner do Azure. Ele fornece criação de imagens de contêiner baseadas em nuvem para plataformas, incluindo Linux, Windows e ARM, e pode automatizar o sistema operacional e a aplicação de patches de estrutura para seus contêineres Docker. O ACR Tasks não apenas estende seu ciclo de desenvolvimento de "loop interno" para a nuvem com compilações de imagens de contêiner sob demanda, mas também permite compilações automatizadas acionadas por atualizações de código-fonte, atualizações para a imagem base de um contêiner ou temporizadores. Por exemplo, com gatilhos de atualização de imagem base, você pode automatizar seu fluxo de trabalho de aplicação de patches de sistema operacional e estrutura de aplicativos, mantendo ambientes seguros enquanto adere aos princípios de contêineres imutáveis.

[! IMPORTANTE] O ACR está pausando temporariamente as execuções de Tarefas ACR a partir de créditos gratuitos do Azure. Isso pode afetar as execuções de tarefas existentes. Se você encontrar problemas, abra um caso de suporte para nossa equipe para fornecer orientações adicionais. Tenha em atenção que os clientes existentes não serão afetados por esta pausa. Atualizaremos nosso aviso de documentação aqui sempre que a pausa for suspensa.

Cenários de tarefas

O ACR Tasks suporta vários cenários para criar e manter imagens de contêiner e outros artefatos. Consulte as seções a seguir neste artigo para obter detalhes.

  • Tarefa rápida - Crie e envie por push uma única imagem de contêiner para um registro de contêiner sob demanda, no Azure, sem precisar de uma instalação local do Docker Engine. docker push Pense docker build, na nuvem.
  • Tarefas acionadas automaticamente - Habilite um ou mais gatilhos para criar uma imagem:
  • Tarefa de várias etapas - Estenda a capacidade de compilação e envio de imagem única das Tarefas ACR com fluxos de trabalho baseados em várias etapas e vários contêineres.

Cada tarefa ACR tem um contexto de código-fonte associado - o local de um conjunto de arquivos de origem usados para criar uma imagem de contêiner ou outro artefato. Exemplos de contextos incluem um repositório Git ou um sistema de arquivos local.

As tarefas também podem tirar proveito das variáveis de execução, para que você possa reutilizar definições de tarefas e padronizar tags para imagens e artefatos.

Tarefa rápida

O ciclo de desenvolvimento de loop interno, o processo iterativo de escrever código, criar e testar seu aplicativo antes de se comprometer com o controle do código-fonte, é realmente o início do gerenciamento do ciclo de vida do contêiner.

Antes de confirmar sua primeira linha de código, o recurso de tarefas rápidas do ACR Tasks pode fornecer uma experiência de desenvolvimento integrada descarregando suas compilações de imagem de contêiner para o Azure. Com tarefas rápidas, você pode verificar suas definições de compilação automatizadas e detetar possíveis problemas antes de confirmar seu código.

Usando o formato familiardocker build, o comando az acr build na CLI do Azure usa um contexto (o conjunto de arquivos a serem compilados), envia-o para Tarefas ACR e, por padrão, envia a imagem construída para seu registro após a conclusão.

Para obter uma introdução, consulte o início rápido para criar e executar uma imagem de contêiner no Registro de Contêiner do Azure.

O ACR Tasks foi projetado como uma primitiva do ciclo de vida do contêiner. Por exemplo, integre tarefas ACR na sua solução de CI/CD. Ao executar az login com uma entidade de serviço, sua solução de CI/CD pode então emitir comandos az acr build para iniciar compilações de imagem.

Saiba como usar tarefas rápidas no primeiro tutorial Tarefas do ACR, Criar imagens de contêiner na nuvem com as Tarefas do Registro de Contêiner do Azure.

Gorjeta

Se você quiser criar e enviar por push uma imagem diretamente do código-fonte, sem um Dockerfile, o Registro de Contêiner do Azure fornece o comando az acr pack build (visualização). Esta ferramenta cria e envia uma imagem do código-fonte do aplicativo usando Cloud Native Buildpacks.

Tarefa de disparo na atualização do código-fonte

Acione uma criação de imagem de contêiner ou uma tarefa de várias etapas quando o código for confirmado, ou uma solicitação pull for feita ou atualizada, para um repositório Git público ou privado no GitHub ou no Azure DevOps. Por exemplo, configure uma tarefa de compilação com o comando az acr task create da CLI do Azure especificando um repositório Git e, opcionalmente, uma ramificação e um Dockerfile. Quando sua equipe atualiza o código no repositório, um webhook criado por Tarefas ACR aciona uma compilação da imagem de contêiner definida no repositório.

As Tarefas ACR suportam os seguintes gatilhos quando você define um repositório Git como contexto da tarefa:

Acionador Ativado por predefinição
Consolidação Sim
Pedido Pull Não

Nota

Atualmente, o ACR Tasks não suporta gatilhos de solicitação commit ou pull nos repositórios do GitHub Enterprise.

Saiba como acionar compilações na confirmação do código-fonte no segundo tutorial Tarefas do ACR, Automatizar compilações de imagens de contêiner com as Tarefas do Registro de Contêiner do Azure.

Token de acesso pessoal

Para configurar um gatilho de atualização de código-fonte, você precisa fornecer à tarefa um token de acesso pessoal (PAT) para definir o webhook no repositório público ou privado do GitHub ou do Azure DevOps. Os âmbitos necessários para a PAT são os seguintes:

Tipo de repositório GitHub DevOps
Repositório público repo:status
public_repo
Código (Ler)
Repositório privado repo (Controle total) Código (Ler)

Para criar um PAT, consulte a documentação do GitHub ou do Azure DevOps.

Automatize o sistema operacional e a aplicação de patches de estrutura

O poder das Tarefas ACR para realmente aprimorar seu fluxo de trabalho de construção de contêiner vem de sua capacidade de detetar uma atualização para uma imagem base. Um recurso da maioria das imagens de contêiner, uma imagem base é uma imagem pai na qual uma ou mais imagens de aplicativo são baseadas. As imagens de base normalmente contêm o sistema operacional e, às vezes, estruturas de aplicativos.

Você pode configurar uma tarefa ACR para controlar uma dependência de uma imagem base quando ela cria uma imagem de aplicativo. Quando a imagem base atualizada é enviada por push para o seu registro, ou uma imagem base é atualizada em um repositório público, como no Docker Hub, as Tarefas ACR podem criar automaticamente quaisquer imagens de aplicativo com base nela. Com essa deteção e reconstrução automáticas, o ACR Tasks economiza o tempo e o esforço normalmente necessários para rastrear e atualizar manualmente cada imagem de aplicativo que faz referência à sua imagem base atualizada.

Saiba mais sobre os gatilhos de atualização de imagem base para tarefas ACR. E saiba como acionar uma compilação de imagem quando uma imagem base é enviada por push para um registro de contêiner no tutorial Automatizar compilações de imagens de contêiner quando uma imagem base é atualizada em um registro de contêiner do Azure

Agendar uma tarefa

Opcionalmente, agende uma tarefa configurando um ou mais gatilhos de temporizador ao criar ou atualizar a tarefa. Agendar uma tarefa é útil para executar cargas de trabalho de contêiner em um cronograma definido ou executar operações de manutenção ou testes em imagens enviadas regularmente para o seu registro. Para obter detalhes, consulte Executar uma tarefa ACR em um cronograma definido.

Tarefas com vários passos

As tarefas de várias etapas fornecem definição e execução de tarefas com base em etapas para criar, testar e aplicar patches em imagens de contêiner na nuvem. As etapas de tarefa definidas em um arquivo YAML especificam operações individuais de compilação e envio para imagens de contêiner ou outros artefatos. Também podem definir a execução de um ou mais contentores, com cada passo a utilizar o contentor como o seu ambiente de execução.

Por exemplo, você pode criar uma tarefa de várias etapas que automatiza o seguinte:

  1. Criar uma imagem de aplicativo Web
  2. Executar o contêiner do aplicativo Web
  3. Criar uma imagem de teste de aplicativo Web
  4. Execute o contêiner de teste do aplicativo Web, que executa testes no contêiner do aplicativo em execução
  5. Se os testes forem aprovados, crie um pacote de arquivo gráfico Helm
  6. Executar um helm upgrade usando o novo pacote de arquivo de gráfico Helm

As tarefas de várias etapas permitem dividir a construção, a execução e o teste de uma imagem em etapas mais combináveis, com suporte a dependência entre etapas. Com tarefas de várias etapas no ACR Tasks, você tem um controle mais granular sobre a criação de imagens, testes e fluxos de trabalho de aplicação de patches de SO e estrutura.

Saiba mais sobre tarefas de várias etapas em Executar tarefas de compilação, teste e patch em várias etapas em Tarefas ACR.

Locais de contexto

A tabela a seguir mostra exemplos de locais de contexto suportados para tarefas ACR:

Localização do contexto Description Exemplo
Sistema de arquivos local Arquivos dentro de um diretório no sistema de arquivos local. /home/user/projects/myapp
Filial principal do GitHub Arquivos dentro da ramificação principal (ou outro padrão) de um repositório GitHub público ou privado. https://github.com/gituser/myapp-repo.git
Filial do GitHub Ramo específico de um repositório GitHub público ou privado. https://github.com/gituser/myapp-repo.git#mybranch
Subpasta do GitHub Arquivos dentro de uma subpasta em um repositório GitHub público ou privado. Exemplo mostra a combinação de uma especificação de ramificação e subpasta. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Confirmação do GitHub Confirmação específica em um repositório GitHub público ou privado. O exemplo mostra a combinação de um hash de consolidação (SHA) e uma especificação de subpastas. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Subpasta do Azure DevOps Arquivos dentro de uma subpasta em um repositório público ou privado do Azure. Exemplo mostra a combinação de especificação de ramificação e subpasta. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Tarball remoto Arquivos em um arquivo compactado em um servidor web remoto. http://remoteserver/myapp.tar.gz
Artefato no registro de contêiner Arquivos de artefato OCI em um repositório de registro de contêiner. oci://myregistry.azurecr.io/myartifact:mytag

Nota

Ao usar um repositório Git como contexto para uma tarefa acionada por uma atualização de código-fonte, você precisa fornecer um token de acesso pessoal (PAT).

Plataformas de imagem

Por padrão, o ACR Tasks cria imagens para o sistema operacional Linux e a arquitetura amd64. Especifique a --platform tag para criar imagens do Windows ou imagens do Linux para outras arquiteturas. Especifique o SO e, opcionalmente, uma arquitetura suportada no formato OS/architecture (por exemplo, --platform Linux/arm). Para arquiteturas ARM, especifique opcionalmente uma variante no formato OS/architecture/variant (por exemplo, --platform Linux/arm64/v8):

SO Arquitetura
Linux AMD64
braço
braço64
386
Windows AMD64

Ver resultado das tarefas

Cada execução de tarefa gera saída de log que você pode inspecionar para determinar se as etapas da tarefa foram executadas com êxito. Quando você aciona uma tarefa manualmente, a saída de log para a execução da tarefa é transmitida para o console e também armazenada para recuperação posterior. Quando uma tarefa é acionada automaticamente, por exemplo, por uma confirmação de código-fonte ou uma atualização de imagem base, os logs de tarefas são armazenados apenas. Exiba os logs de execução no portal do Azure ou use o comando az acr task logs .

Veja mais sobre como visualizar e gerenciar logs de tarefas.

Próximos passos

Quando estiver pronto para automatizar as compilações e a manutenção de imagens de contêiner na nuvem, confira a série de tutoriais Tarefas do ACR.

Opcionalmente, instale a Extensão do Docker para Visual Studio Code e a extensão da Conta do Azure para trabalhar com seus registros de contêiner do Azure. Extraia e envie imagens por push para um registro de contêiner do Azure ou execute Tarefas ACR, tudo dentro do Visual Studio Code.