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
Esteja ciente de que 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 Azure Container Registry (ACR). Isso inclui dados confidenciais, como credenciais, tokens de acesso pessoal do GitHub e outras informações seguras. Tenha cuidado para evitar riscos potenciais à segurança, é crucial evitar incluir detalhes confidenciais em linhas de comando ou URIs sujeitos a registro 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:
- Crie uma imagem de aplicativo Web.
- Execute o contêiner do aplicativo Web.
- Crie uma imagem de teste de aplicativo Web.
- Execute o contêiner de teste do aplicativo Web, que executa testes no contêiner do aplicativo em execução.
- Se os testes forem aprovados, crie um pacote de arquivo gráfico Helm.
- 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.
Conteúdos relacionados
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.