Configurar imagem de contêiner para executar implantações
Neste artigo, você aprenderá a criar imagens de contêiner Bicep personalizadas para implantar suas definições de ambiente nos Ambientes de Implantação do Azure (ADE).
Neste artigo, você aprenderá a criar imagens de contêiner personalizadas do Terraform para implantar suas definições de ambiente nos Ambientes de Implantação do Azure (ADE). Você aprende a configurar uma imagem personalizada para provisionar a infraestrutura usando a estrutura Terraform Infrastructure-as-Code (IaC).
Neste artigo, você aprenderá a utilizar o Pulumi para implantações em Ambientes de Implantação do Azure (ADE). Você aprende como usar uma imagem de exemplo fornecida pelo Pulumi ou como configurar uma imagem personalizada para provisionar a infraestrutura usando a estrutura Pulumi Infrastructure-as-Code (IaC).
O ADE oferece suporte a um modelo de extensibilidade que permite criar imagens personalizadas que podem ser usadas em suas definições de ambiente. Para usar esse modelo de extensibilidade, crie suas próprias imagens personalizadas e armazene-as em um registro de contêiner como o Azure Container Registry (ACR) ou o Docker Hub. Em seguida, você pode fazer referência a essas imagens em suas definições de ambiente para implantar seus ambientes.
Uma definição de ambiente compreende pelo menos dois arquivos: um arquivo de modelo, como azuredeploy.json ou main.bicep, e um arquivo de manifesto chamado environment.yaml. O ADE usa contêineres para implantar definições de ambiente.
A equipe do ADE fornece uma seleção de imagens para você começar, incluindo uma imagem principal e uma imagem do Azure Resource Manager (ARM)-Bicep. Você pode acessar essas imagens de exemplo na pasta Runner-Images .
Uma definição de ambiente compreende pelo menos dois arquivos: um arquivo de modelo, como main.tf, e um arquivo de manifesto chamado environment.yaml. Você usa um contêiner para implantar a definição de ambiente que usa o Terraform.
Uma definição de ambiente compreende pelo menos dois arquivos: um arquivo de projeto Pulumi, Pulumi.yaml, e um arquivo de manifesto chamado environment.yaml. Ele também pode conter um programa de usuário escrito em sua linguagem de programação preferida: C#, TypeScript, Python, etc. O ADE usa contêineres para implantar definições de ambiente.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Ambientes de Implantação do Azure configurados em sua assinatura do Azure.
- Para configurar o ADE, siga o Guia de início rápido: configurar ambientes de implantação do Azure.
Usar imagens de contêiner com o ADE
Você pode adotar uma das seguintes abordagens para usar imagens de contêiner com o ADE:
- Usar uma imagem de contêiner de amostra Para cenários simples, use a imagem de contêiner ARM-Bicep de exemplo fornecida pelo ADE.
- Criar uma imagem de contêiner personalizada Para cenários mais complexos, crie uma imagem de contêiner personalizada que atenda às suas necessidades específicas.
As principais etapas que você seguirá ao usar uma imagem de contêiner são:
- Escolha o tipo de imagem que deseja usar: uma imagem de exemplo ou uma imagem personalizada.
- Se você usar uma imagem personalizada, começará com uma imagem de exemplo e, em seguida, personalizá-la para atender às suas necessidades.
- Construa a imagem.
- Carregue a imagem para um registo privado ou público.
- Configure o acesso ao Registro.
- Para um registro público, configure o pull anônimo.
- Para um registro privado, conceda permissões ao DevCenter ACR.
- Adicione a localização da imagem ao parâmetro na definição do
runner
ambiente - Implante ambientes que usam sua imagem personalizada.
O primeiro passo no processo é escolher o tipo de imagem que deseja usar. Selecione a guia correspondente para ver o processo.
Usar uma imagem de contêiner de amostra
O ADE suporta ARM e Bicep sem exigir qualquer configuração extra. Você pode criar uma definição de ambiente que implanta recursos do Azure para um ambiente de implantação adicionando os arquivos de modelo (como azuredeploy.json e environment.yaml) ao seu catálogo. Em seguida, o ADE usa a imagem de contêiner ARM-Bicep de exemplo para criar o ambiente de implantação.
No arquivo environment.yaml, a runner
propriedade especifica o local da imagem de contêiner que você deseja usar. Para usar a imagem de exemplo publicada no Microsoft Artifact Registry, use os respetivos identificadores runner
.
O exemplo a seguir mostra um runner
que faz referência à imagem de contêiner ARM-Bicep de exemplo:
name: WebApp
version: 1.0.0
summary: Azure Web App Environment
description: Deploys a web app in Azure without a datastore
runner: Bicep
templatePath: azuredeploy.json
Você pode ver a imagem do contêiner Bicep de exemplo no repositório de exemplo do ADE na pasta Runner-Images para a imagem ARM-Bicep .
Para obter mais informações sobre como criar definições de ambiente que usam as imagens de contêiner do ADE para implantar seus recursos do Azure, consulte Adicionar e configurar uma definição de ambiente.
Use uma imagem personalizada para configurar uma imagem Terraform.
Use uma imagem de contêiner de amostra fornecida pela Pulumi
A equipe do Pulumi fornece uma imagem pré-construída para você começar, que você pode ver na pasta Runner-Image . Esta imagem está disponível publicamente no Docker Hub da Pulumi como , para pulumi/azure-deployment-environments
que você possa usá-la diretamente de suas definições de ambiente ADE.
Aqui está um arquivo environment.yaml de exemplo que utiliza a imagem pré-construída:
name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml
Você pode encontrar algumas definições de ambiente de exemplo na pasta Ambientes.
Criar uma imagem
Você pode criar sua imagem usando a CLI do Docker. Verifique se o Docker Engine está instalado no seu computador. Em seguida, navegue até o diretório do seu Dockerfile e execute o seguinte comando:
docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}
Por exemplo, se você quiser salvar sua imagem em um repositório dentro do seu registro chamado customImage
, e carregar com a versão da tag do 1.0.0
, você deve executar:
docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0
Disponibilizar a imagem personalizada para o ADE
Para usar imagens personalizadas, você precisa armazená-las em um registro de contêiner. Você pode usar um registro de contêiner público ou um registro de contêiner privado. O Azure Container Registry (ACR) é altamente recomendado, devido à sua forte integração com o ADE, a imagem pode ser publicada sem permitir acesso pull anônimo público. Você deve criar sua imagem de contêiner personalizada e enviá-la por push para um registro de contêiner para disponibilizá-la para uso no ADE.
Também é possível armazenar a imagem em um registro de contêiner diferente, como o Docker Hub, mas, nesse caso, ela precisa ser acessível publicamente.
Atenção
O armazenamento da imagem do contêiner em um registro com acesso pull anônimo (não autenticado) a torna acessível publicamente. Não faça isso se a sua imagem contiver informações confidenciais. Em vez disso, armazene-o no Azure Container Registry (ACR) com o acesso pull anônimo desabilitado.
Para usar uma imagem personalizada armazenada no ACR, você precisa garantir que o ADE tenha as permissões apropriadas para acessar sua imagem. Quando você cria uma instância ACR, ela é segura por padrão e só permite que usuários autenticados obtenham acesso.
Você pode usar o Pulumi para criar um Registro de Contêiner do Azure e publicar sua imagem nele. Consulte o exemplo Provisionamento/imagem personalizada para um projeto Pulumi autônomo que cria todos os recursos necessários em sua conta do Azure.
Selecione a guia apropriada para saber mais sobre cada abordagem.
Utilizar um registo privado com acesso seguro
Por padrão, o acesso para receber ou enviar conteúdo por push de um Registro de Contêiner do Azure só está disponível para usuários autenticados. Você pode proteger ainda mais o acesso ao ACR limitando o acesso de determinadas redes e atribuindo funções específicas.
Para criar uma instância do ACR, o que pode ser feito por meio da CLI do Azure, do portal do Azure, dos comandos do PowerShell e muito mais, siga um dos inícios rápidos.
Limitar o acesso à rede
Para proteger o acesso à rede ao seu ACR, pode limitar o acesso às suas próprias redes ou desativar totalmente o acesso à rede pública. Se você limitar o acesso à rede, deverá habilitar a exceção de firewall Permitir que serviços confiáveis da Microsoft acessem esse registro de contêiner.
Para desativar o acesso de redes públicas:
No portal do Azure, vá para o ACR que você deseja configurar.
No menu à esquerda, em Configurações, selecione Rede.
Na página Rede, na guia Acesso público , em Acesso à rede pública, selecione Desabilitado.
Em Exceção de firewall, verifique se a opção Permitir que serviços confiáveis da Microsoft acessem este registro de contêiner está selecionada e selecione Salvar.
Atribuir a função AcrPull
A criação de ambientes usando imagens de contêiner usa a infraestrutura ADE, incluindo projetos e tipos de ambiente. Cada projeto tem um ou mais tipos de ambiente de projeto, que precisam de acesso de leitura à imagem de contêiner que define o ambiente a ser implantado. Para acessar as imagens dentro do seu ACR com segurança, atribua a função AcrPull a cada tipo de ambiente de projeto.
Para atribuir a função AcrPull ao Tipo de Ambiente do Projeto:
No portal do Azure, vá para o ACR que você deseja configurar.
No menu à esquerda, selecione Controle de acesso (IAM).
Selecione Adicionar>Adicionar atribuição de função.
Atribua a seguinte função. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Definição Value Função Selecione AcrPull. Atribuir acesso a Selecione Usuário, grupo ou entidade de serviço. Membros Digite o nome do tipo de ambiente de projeto que precisa acessar a imagem no contêiner. O tipo de ambiente do projeto é exibido como o exemplo a seguir:
Nessa configuração, o ADE usa a Identidade Gerenciada para o PET, seja atribuído pelo sistema ou atribuído pelo usuário.
Gorjeta
Essa atribuição de função deve ser feita para cada tipo de ambiente de projeto. Ele pode ser automatizado por meio da CLI do Azure.
Quando estiver pronto para enviar a imagem para o Registro, execute o seguinte comando:
docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}
Criar uma imagem de contêiner com um script
Em vez de criar sua imagem personalizada e enviá-la por conta própria para um registro de contêiner, você pode usar um script para compilá-la e enviá-la por push para um registro de contêiner especificado.
A Microsoft fornece um script de início rápido para ajudá-lo a criar sua imagem personalizada e enviá-la por push para um registro. O script cria sua imagem e a envia por push para um Registro de Contêiner do Azure (ACR) especificado no repositório ade
e na tag latest
.
Para usar o script, você deve:
- Crie uma pasta Dockerfile e scripts para dar suporte ao modelo de extensibilidade do ADE.
- Forneça um nome de registro e um diretório para sua imagem personalizada.
- Tenha a CLI do Azure e o Docker Desktop instalados e em suas variáveis PATH.
- Ter o Docker Desktop em execução.
- Ter permissões para enviar por push para o registro especificado.
Você pode ver o script aqui.
Você pode chamar o script usando o seguinte comando no PowerShell:
.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'
Além disso, se você quiser enviar por push para um repositório específico e nome de tag, você pode executar:
.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'
Conecte a imagem à sua definição de ambiente
Ao criar definições de ambiente para usar sua imagem personalizada em sua implantação, edite a runner
propriedade no arquivo de manifesto (environment.yaml ou manifest.yaml).
runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"
Para saber mais sobre como criar definições de ambiente que usam as imagens de contêiner do ADE para implantar seus recursos do Azure, consulte Adicionar e configurar uma definição de ambiente.