Partilhar via


Automatize as compilações e a manutenção de imagens de contêiner com tarefas do Registro de Contêiner do Azure

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 é a necessidade de abordar como essa virtualização de aplicativos é gerenciada e corrigida ao longo do ciclo de vida do contêiner.

As tarefas do Registro de Contêiner do Azure são um conjunto de recursos que:

  • Forneça a criação de imagens de contêiner baseadas em nuvem para plataformas como Linux, Windows e ARM.
  • Estenda as partes iniciais de um ciclo de desenvolvimento de aplicativos para a nuvem com compilações de imagens de contêiner sob demanda.
  • Habilite compilações automatizadas acionadas por atualizações de código-fonte, atualizações da imagem base de um contêiner ou temporizadores.

Por exemplo, com gatilhos para atualizações de uma imagem base, você pode automatizar patches de sistema operacional e estrutura para seus contêineres do Docker. Esses gatilhos podem ajudá-lo a manter ambientes seguros enquanto adere aos princípios de contêineres imutáveis.

Importante

As execuções de tarefas do Registro de Contêiner do Azure são pausadas temporariamente dos créditos gratuitos do Azure. Essa pausa 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.

Aviso

Qualquer informação fornecida na linha de comando ou como parte de um URI pode ser registrada como parte do rastreamento de diagnóstico do Registro de Contêiner do Azure. Essas informações incluem dados confidenciais, como credenciais e tokens de acesso pessoal do GitHub. Tenha cuidado para evitar potenciais riscos de segurança. Não inclua detalhes confidenciais em linhas de comando ou URIs sujeitos a log de diagnóstico.

Cenários de tarefas

As tarefas do Registro de Contêiner do Azure dão suporte a vários cenários para criar e manter imagens de contêiner e outros artefatos. Este artigo descreve tarefas rápidas, tarefas acionadas automaticamente e tarefas de várias etapas.

Cada tarefa tem um contexto de código-fonte associado, que é o local dos arquivos de origem que são usados para criar uma imagem de contêiner ou outro artefato. Exemplos de contextos incluem um repositório Git e 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.

Tarefas rápidas

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.

O recurso de tarefa rápida nas tarefas do Registro de Contêiner do Azure pode fornecer uma experiência de desenvolvimento integrada descarregando suas compilações de imagem de contêiner para o Azure. Você pode criar e enviar 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. 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 familiar docker build , o comando az acr build na CLI do Azure usa um contexto. Em seguida, o comando envia o contexto para o Registro de Contêiner do Azure e (por padrão) envia a imagem criada para seu Registro após a conclusão.

As tarefas do Registro de Contêiner do Azure são projetadas como uma primitiva do ciclo de vida do contêiner. Por exemplo, você pode integrar tarefas do Registro de Contêiner do Azure em sua solução de integração contínua e entrega contínua (CI/CD). Se você executar az login com uma entidade de serviço, sua solução CI/CD pode emitir comandos az acr build para iniciar compilações de imagem.

Para saber como usar tarefas rápidas, consulte o início rápido e o tutorial para criar e implantar imagens de contêiner usando 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 por push uma imagem do código-fonte do aplicativo usando Cloud Native Buildpacks.

Tarefas acionadas automaticamente

Habilite um ou mais gatilhos para criar uma imagem.

Disparar uma tarefa em uma atualização do código-fonte

Você pode acionar uma criação de imagem de contêiner ou uma tarefa de várias etapas quando o código é confirmado, ou uma solicitação pull é 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 nas tarefas do Registro de Contêiner do Azure dispara uma compilação da imagem de contêiner definida no repositório.

As tarefas do Registro de Contêiner do Azure dão suporte aos seguintes gatilhos quando você define um repositório Git como contexto de uma tarefa:

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

Nota

Atualmente, as tarefas do Registro de Contêiner do Azure não oferecem suporte a gatilhos de confirmação ou solicitação de recebimento nos repositórios do GitHub Enterprise.

Para saber como acionar compilações em confirmações de código-fonte, consulte Automatizar compilações de imagens de contêiner com tarefas do Registro de Contêiner do Azure.

Token de acesso pessoal

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

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

Para criar um token de acesso pessoal, 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 do Registro de Contêiner do Azure para aprimorar seu fluxo de trabalho de compilação de contêiner vem de sua capacidade de detetar uma atualização para uma imagem base. Uma imagem base é um recurso da maioria das imagens de contêiner. É 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 do Registro de Contêiner do Azure para controlar uma dependência em 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 do Registro de Contêiner do Azure podem criar automaticamente quaisquer imagens de aplicativo com base nela. Com essa deteção e reconstrução automáticas, as tarefas do Registro de Contêiner do Azure economizam 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.

Para obter mais informações, consulte Sobre atualizações de imagem base para tarefas do Registro de Contêiner do Azure e 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

Você pode agendar uma tarefa configurando um ou mais gatilhos de timer 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 mais informações, consulte Executar uma tarefa do Registro de Contêiner do Azure em uma agenda definida.

Tarefas com vários passos

Estenda a capacidade de compilação e envio de imagem única das tarefas do Registro de Contêiner do Azure com fluxos de trabalho de várias etapas baseados em vários contêineres.

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 as seguintes etapas:

  1. Crie uma imagem de aplicativo Web.
  2. Execute o contêiner do aplicativo Web.
  3. Crie 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. Execute uma helm upgrade tarefa 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 à dependência entre as etapas. Com tarefas de várias etapas nas tarefas do Registro de Contêiner do Azure, você tem um controle mais granular sobre fluxos de trabalho para criação de imagens, testes e patches de sistema operacional e estrutura.

Saiba mais sobre como executar tarefas de compilação, teste e patch em várias etapas nas tarefas do Registro de Contêiner do Azure.

Locais de contexto

A tabela a seguir mostra exemplos de locais de contexto com suporte para tarefas do Registro de Contêiner do Azure:

Localização do contexto Description Exemplo
Sistema de ficheiros 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. O 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 confirmação (SHA) e especificação de subpasta. 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. O 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

Quando você está usando um repositório Git como contexto para uma tarefa que é acionada por uma atualização de código-fonte, você precisa fornecer um token de acesso pessoal.

Plataformas de imagem

Por padrão, as tarefas do Registro de Contêiner do Azure criam 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, opcionalmente, especifique uma variante no formato OS/architecture/variant (por exemplo, --platform Linux/arm64/v8).

SO Arquitetura
Linux AMD64
ARM
ARM64
386
Windows AMD64

Saída da tarefa

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 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 .

Saiba mais sobre como visualizar e gerenciar logs de tarefas.

  • Quando estiver pronto para automatizar as compilações e a manutenção de imagens de contêiner na nuvem, consulte Tutorial: Criar e implantar imagens de contêiner na nuvem com tarefas do Registro de Contêiner do Azure.

  • Opcionalmente, saiba mais sobre a extensão do Docker e a extensão da Conta do Azure para Visual Studio Code. Você pode usar essas extensões para extrair imagens de um registro de contêiner, enviar imagens por push para um registro de contêiner ou executar tarefas do Registro de Contêiner do Azure, tudo dentro do Visual Studio Code.