Automatizar a compilação e a manutenção de imagem de contêiner usando as tarefas do Registro de Contêiner do Azure
Os contêineres fornecem novos níveis de virtualização, isolando as dependências de aplicativo e desenvolvedor dos requisitos de infraestrutura e operacionais. O que resta é a necessidade de abordar como essa virtualização de aplicativos é gerenciada e corrigida no 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 compilação de imagens de contêiner baseadas em nuvem para plataformas como Linux, Windows e ARM.
- Estenda as primeiras partes de um ciclo de desenvolvimento de aplicativos para a nuvem com compilações de imagem de contêiner sob demanda.
- Habilite compilações automatizadas disparadas por atualizações de código-fonte, atualizações de uma imagem base de um contêiner ou temporizadores.
Por exemplo, com gatilhos para atualizações em uma imagem base, você pode automatizar o Sistema operacional e a aplicação de patch de estrutura para seus contêineres do Docker. Esses gatilhos podem ajudar a manter ambientes seguros ao aderir aos princípios de contêineres imutáveis.
Importante
As execuções de tarefa do Registro de Contêiner do Azure são temporariamente pausadas a partir de créditos gratuitos do Azure. Essa pausa pode afetar as execuções de tarefas existentes. Se você tiver problemas, abra um caso de suporte para que a nossa equipe forneça mais orientações.
Aviso
Lembre-se de que todas as informações fornecidas na linha de comando ou como parte de um URI podem ser registradas como parte do rastreamento de diagnóstico do Registro de Contêiner do Azure (ACR). Isso inclui dados confidenciais, como credenciais, tokens de acesso pessoal do GitHub e outras informações seguras. Tenha cuidado para evitar possíveis riscos de segurança, é crucial evitar a inclusão de detalhes confidenciais em linhas de comando ou URIs que estejam sujeitos ao registro em 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 compilar e manter imagens de contêiner e outros artefatos. Este artigo descreve tarefas rápidas, tarefas disparadas automaticamente e tarefas de várias etapas.
Cada tarefa tem um contexto de código-fonte associado, que é o local de arquivos de origem usados para compilar uma imagem de contêiner ou outro artefato. Os contextos de exemplo incluem um repositório Git e um sistema de arquivos local.
As tarefas também podem aproveitar as variáveis de execução, para que você possa reutilizar as definições de tarefas e padronizar marcas para imagens e artefatos.
Tarefas rápidas
O ciclo de desenvolvimento loop interno é o processo iterativo de escrever código, compilar e testar seu aplicativo antes de confirmá-lo no controle do código-fonte. É de fato 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 no Azure. É possível compilar e enviar por push uma única imagem de contêiner para um registro de contêiner sob demanda, no Azure, sem a necessidade de uma instalação local do Docker Engine. Pense em docker build
, docker push
na nuvem. Com as tarefas rápidas, você pode verificar suas definições de compilação automatizadas e detectar possíveis problemas antes de confirmar o código.
Usando o formato familiar docker build
, o comando build az acr 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 por push a imagem compilada ao registro após a conclusão.
As tarefas do Registro de Contêiner do Azure são criadas como uma primitiva do ciclo de vida do contêiner. Por exemplo, você pode integrar tarefas do Registro de Contêiner do Azure à sua solução de CI/CD (integração contínua e entrega contínua). Se você executar az login com uma entidade de serviço, sua solução de CI/CD poderá 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.
Dica
Se você quiser compilar e enviar por push uma imagem diretamente do código-fonte, sem um Dockerfile, o Registro de Contêiner do Azure fornecerá o comando az acr pack build (versão preliminar). Essa ferramenta compila e envia por push uma imagem do código-fonte do aplicativo usando o Cloud Native Buildpacks.
Tarefas disparadas automaticamente
Habilite um ou mais gatilhos para compilar uma imagem.
Disparar uma tarefa em uma atualização de código-fonte
É possível acionar uma compilação de imagem de contêiner ou uma tarefa de várias etapas quando o código é confirmado ou uma solicitação de pull é realizada ou atualizada em 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 da CLI do Azure az acr task create especificando um repositório Git e, opcionalmente, um branch e 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 um contexto de uma tarefa:
Gatilho | Habilitado por padrão |
---|---|
Commit | Sim |
Solicitação de pull | Não |
Observação
Atualmente, as tarefas do Registro de Contêiner do Azure não dão suporte a gatilhos de confirmação ou solicitação de pull nos repositórios do GitHub Enterprise.
Para saber como disparar compilações em confirmações de código-fonte, consulte Automatizar compilações de imagem de contêiner com tarefas do Registro de Contêiner do Azure.
Token de acesso pessoal
Para configurar um gatilho de atualização de código-fonte, é necessário fornecer à tarefa um PAT (token de acesso pessoal) para definir o webhook no GitHub público ou privado, ou no repositório do Azure DevOps. Estes são os escopos necessários para o token de acesso pessoal:
Tipo de repositório | GitHub | Azure DevOps |
---|---|---|
Repositório público | repo:status public_repo |
Código (leitura) |
Repositório privado | repositório (controle completo) | Código (leitura) |
Para criar um token de acesso pessoal, consulte a documentação do GitHub ou do Azure DevOps.
Automatizar sistema operacional e aplicação de patch de estrutura
O poder das tarefas do Registro de Contêiner do Azure de aprimorar o fluxo de trabalho de compilação de contêiner vem da capacidade dele detectar 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 se baseiam. As imagens base normalmente contêm o sistema operacional e, às vezes, estruturas do aplicativo.
Você pode configurar uma tarefa do Registro de Contêiner do Azure para rastrear uma dependência em uma imagem base ao compilar uma imagem de aplicativo. Quando a imagem base atualizada é enviada por push para o 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 compilar automaticamente qualquer imagem de aplicativo baseada nela. Com essa detecção e recompilação automáticas, as tarefas do Registro de Contêiner do Azure economizam tempo e esforço que normalmente são necessários para acompanhar e atualizar manualmente as imagens de aplicativo que fazem referência à imagem base atualizada.
Para obter mais informações, consulte Sobre as atualizações de imagem base para tarefas do Registro de Contêiner do Azure e Tutorial: Automatizar compilações de imagem de contêiner quando uma imagem base é atualizada em um registro de contêiner do Azure.
Agendar uma tarefa
É possível agendar 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 agendamento definido ou executar operações de manutenção ou testes em imagens enviadas por push regularmente para o registro. Para obter mais informações, consulte Executar uma tarefa do Registro de Contêiner do Azure em um agendamento definido.
Tarefas de várias etapas
Estender a funcionalidade de compilar e efetuar push 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 uma definição de tarefas com base em etapa e execução 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 criação e envio por push para imagens de contêiner ou outros artefatos. Elas também podem definir a execução de um ou mais contêineres, com cada etapa usando o contêiner como seu ambiente de execução.
Por exemplo, você pode criar uma tarefa de várias etapas que automatiza as seguintes etapas:
- Compilar uma imagem do aplicativo Web.
- Executar o contêiner de aplicativo Web.
- Compilar uma imagem de teste do aplicativo Web.
- Executar o contêiner de teste de aplicativo Web que executa testes em relação à execução do contêiner de aplicativo.
- Quando os testes são aprovados, compilar um pacote de arquivo morto de gráfico do Helm.
- Executar uma tarefa
helm upgrade
usando o novo pacote de arquivo morto de gráfico do Helm.
As tarefas de várias etapas permitem que você divida a compilação, a execução e o teste de uma imagem em etapas mais combináveis, com suporte para dependência entre 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 compilação, testes e aplicação de patch de sistema operacional e estrutura.
Locais de contexto
A tabela a seguir mostra exemplos de locais de contexto com suporte para tarefas do Registro de Contêiner do Azure:
Local do contexto | Descrição | Exemplo |
---|---|---|
Sistema de arquivos local | Arquivos dentro de um diretório no sistema de arquivos local. | /home/user/projects/myapp |
Branch principal do GitHub | Arquivos dentro da ramificação principal (ou outro padrão) de um repositório do GitHub público ou privado. | https://github.com/gituser/myapp-repo.git |
Ramificação GitHub | Branch específico de um repositório do 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 do GitHub público ou privado. O exemplo mostra a combinação de uma especificação de subpasta e branch. | 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 especificação de subpasta e hash de confirmação (SHA). | https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder |
Subpasta do Azure DevOps | Arquivos em uma subpasta em um repositório do Azure público ou privado. O exemplo mostra a combinação de especificação de subpasta e branch. | https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder |
Tarball remoto | Arquivos em um arquivo compactado em um servidor remoto. | http://remoteserver/myapp.tar.gz |
Artefato no registro de contêiner | Arquivos de artefato de OCI em um repositório de registro de contêiner. | oci://myregistry.azurecr.io/myartifact:mytag |
Observação
Ao usar um repositório Git como um contexto para uma tarefa disparada por uma atualização do 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 compilam imagens para o sistema operacional Linux e a arquitetura AMD64. Especifique a marca --platform
para criar imagens do Windows ou do Linux para outras arquiteturas. Especifique o sistema operacional e, opcionalmente, uma arquitetura com suporte no formato de sistema operacional/arquitetura (por exemplo, --platform Linux/arm
). Para arquiteturas ARM, especifique opcionalmente uma variante no formato do sistema operacional/arquitetura/variante (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 a saída de log que você pode inspecionar para determinar se as etapas da tarefa foram executadas com êxito. Quando você dispara 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 é disparada automaticamente (por exemplo, por uma confirmação de código-fonte ou uma atualização de imagem base) os logs das tarefas são apenas armazenados. Exiba os logs de execução no portal do Azure ou use o comando az acr task logs.
Saiba mais sobre como exibição e gerenciamento de logs de tarefas.
Conteúdo relacionado
Quando estiver pronto para automatizar a compilação de imagem de contêiner e manutenção na nuvem, consulte Tutorial: Compilar e implantar imagens de contêiner na nuvem com tarefas do Registro de Contêiner do Azure.
Opcionalmente, saiba mais sobre a Extensão Docker e a Extensão de conta do Azure para o Visual Studio Code. Você pode usar essas extensões para extrair imagens de um registro de contêiner, enviar imagens para um registro de contêiner ou executar tarefas do Registro de Contêiner do Azure, tudo no Visual Studio Code.