Configurar uma imagem de contêiner para executar implantações

Nesse artigo, você aprenderá a criar imagens de contêiner Bicep personalizadas para implantar suas definições de ambiente no Ambientes de Implantação Azure (ADE).

Neste artigo, você aprenderá a criar imagens de contêiner Terraform personalizadas para implantar suas definições de ambiente no ADE (Ambientes de Implantação Azure). Você aprenderá a configurar uma imagem personalizada para provisionar a infraestrutura usando a estrutura IaC (Infraestrutura como Código) do Terraform.

Neste artigo, você aprenderá a utilizar o Pulumi para implantações nos Ambientes de Implantação Azure (ADE). Você aprenderá a usar uma imagem de amostra fornecida pela Pulumi ou como configurar uma imagem personalizada para provisionar 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 nas 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 Registro de Contêiner do Azure (ACR) ou o Docker Hub. Você pode então fazer referência a essas imagens em suas definições de ambiente para implementar 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 amostra 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 inclui pelo menos dois arquivos: um arquivo de projeto do Pulumi, Pulumi.yaml, e um arquivo de manifesto chamado environment.yaml. Ele também pode conter um programa de usuário escrito na sua linguagem de programação preferida: C#, TypeScript, Python, etc. O ADE usa contêineres para implantar definições de ambiente.

Pré-requisitos

Usar imagens de contêiner com a ADE

Você pode adotar uma das seguintes abordagens para usar imagens de contêiner com o ADE:

  • Use uma imagem de contêiner de amostra Para cenários simples, use a imagem de contêiner ARM-Bicep de amostra fornecida pelo ADE.
  • Crie uma imagem de contêiner personalizada Para cenários mais complexos, crie uma imagem de contêiner personalizada que atenda aos seus requisitos específicos.

As principais etapas que você seguirá ao usar uma imagem de contêiner são:

  1. Escolha o tipo de imagem que deseja usar: uma imagem de amostra ou uma imagem personalizada.
    • Se você usar uma imagem personalizada, comece com uma imagem de amostra e depois a personalize para atender às suas necessidades.
  2. Crie a imagem.
  3. Carregue a imagem em um registro privado ou público.
  4. Configure o acesso ao registro.
    • Para um registro público, configure o pull anônimo.
    • Para um registro privado, conceda permissões ACR ao DevCenter.
  5. Adicione a localização da sua imagem ao parâmetro runner na definição do seu ambiente
  6. Implante ambientes que usam sua imagem personalizada.

O primeiro passo do processo é escolher o tipo de imagem que você deseja usar. Selecione a aba correspondente para ver o processo.

Use uma imagem de contêiner de amostra

O ADE suporta ARM e Bicep sem exigir nenhuma configuração extra. Você pode criar uma definição de ambiente que implante recursos do Azure para um ambiente de implantação adicionando os arquivos de modelo (como azuredeploy.json e environment.yaml) ao seu catálogo. O ADE então usa a imagem de contêiner ARM-Bicep de amostra para criar o ambiente de implantação.

No arquivo environment.yaml, a propriedade runner especifica o local da imagem do contêiner que você deseja usar. Para usar a imagem de amostra publicada no Registro de Artefato da Microsoft, use os respectivos identificadores runner.

O exemplo a seguir mostra um runner que faz referência à imagem do contêiner ARM-Bicep de amostra:

    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 de exemplo do contêiner Bicep no repositório de exemplos 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 do Terraform.

Use uma imagem de contêiner de amostra fornecida por Pulumi

A equipe Pulumi fornece uma imagem predefinida para você começar, o que você pode ver na pasta Runner-Image. Esta imagem está disponível publicamente no Docker Hub do Pulumi como pulumi/azure-deployment-environments, para que você possa usá-la diretamente nas definições de ambiente do ADE.

Aqui está um exemplo de arquivo environment.yaml que utiliza a imagem pré-criada:

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 o Docker CLI. Certifique-se de que o Docker Engine esteja 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 customImagee fazer upload com a tag version de1.0.0, você executaria:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

Disponibilizar a imagem personalizada para o ADE

Para usar imagens personalizadas, é necessário armazená-las em um registro de contêiner. Você pode usar um registro de contêineres público ou um registro de contêineres privado. O Registro de Contêiner do Azure (ACR) é altamente recomendado, pois, devido à sua forte integração com o ADE, a imagem pode ser publicada sem permitir acesso público anônimo. Você deve criar sua imagem de contêiner personalizada e enviá-la 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.

Cuidado

Armazenar sua imagem de contêiner em um registro com acesso de pull anônimo (não autenticado) torna-a publicamente acessível. Não faça isso se a imagem contiver informações confidenciais. Em vez disso, armazena-a no Registro de Contêiner do Azure (ACR) com acesso de pull anônimo desabilitado.

Para usar uma imagem personalizada armazenada no ACR, é necessário garantir que o ADE tenha as permissões adequadas para acessar a imagem. Ao criar uma instância do ACR, ela é segura por padrão e só permite o acesso de usuários autenticados.

Você pode usar o Pulumi para criar um Registro de Contêiner do Azure e publicar sua imagem nele. Confira o exemplo de Provisionamento/imagem personalizada para um projeto Pulumi autocontido que cria todos os recursos necessários em sua conta do Azure.

Selecione a guia apropriada para saber mais sobre cada abordagem.

Use um registro privado com acesso seguro

Por padrão, o acesso para efetuar pull ou push de conteúdo 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, de comandos do PowerShell e outros, siga um dos inícios rápidos.

Limitar o acesso à rede

Para proteger o acesso à rede do ACR, você pode limitar o acesso às suas próprias redes ou desabilitar totalmente o acesso à rede pública. Se você limitar o acesso à rede, deverá habilitar a exceção de firewall Permitir que serviços Microsoft confiáveis acessem esse registro de contêiner.

Para desabilitar o acesso de redes públicas:

  1. Crie uma instância do ACR ou use uma existente.

  2. No portal do Azure, acesse o ACR que você quer configurar.

  3. No menu à esquerda, em Configurações, selecione Rede.

  4. Na página Rede, na guia Acesso público, em Acesso público à rede, selecione Desabilitado.

    Captura de tela do portal do Azure, mostrando as configurações de rede do ACR, com Acesso público e Desabilitado realçados.

  5. Em Exceção de firewall, verifique se a opção Permitir que serviços Microsoft confiáveis acessem esse registro de contêiner está selecionada e, em seguida, selecione Salvar.

    Captura de tela das configurações de rede do ACR, com Permitir que serviços Microsoft confiáveis acessem esse registro de contêiner e Salvar realçados.

Atribuir a função AcrPull

A criação de ambientes por meio de imagens de contêiner usa a infraestrutura do 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 do contêiner que define o ambiente a ser implantado. Para acessar as imagens no 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:

  1. No portal do Azure, acesse o ACR que você quer configurar.

  2. No menu à esquerda, selecione Controle de Acesso (IAM).

  3. Selecione Adicionar>Adicionar atribuição de função.

  4. Atribua a função a seguir. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

    Configuração Valor
    Função Selecione AcrPull.
    Atribuir acesso a Selecione Usuário, grupo ou entidade de serviço.
    Membros Insira o nome do tipo de ambiente de projeto que precisa acessar a imagem no contêiner.

    O tipo de ambiente do projeto é exibido como no exemplo a seguir:

    Captura de tela do painel Selecionar membros, mostrando uma lista de tipos de ambiente de projeto com parte do nome realçada.

Nessa configuração, o ADE usa a Identidade Gerenciada para o PET, seja o sistema atribuído ou o usuário atribuído.

Dica

Essa atribuição de função deve ser feita para cada tipo de ambiente de projeto. Ela pode ser automatizado por meio da CLI do Azure.

Quando estiver pronto para enviar sua 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 para um registro de contêiner, você pode usar um script para criá-la e enviá-la para um registro de contêiner especificado.

A Microsoft fornece um script de início rápido para ajudar você a criar sua imagem personalizada e enviá-la para um registro. O script cria sua imagem e a envia por push para um ACR (Registro de Contêiner do Azure) especificado no repositório ade e na marca latest.

Para usar o script, você deve:

  1. Crie um Dockerfile e uma pasta de scripts para dar suporte ao modelo de extensibilidade do ADE.
  2. Fornecer um nome e diretório do Registro para sua imagem personalizada.
  3. Ter a CLI do Azure e o Docker Desktop instalados e em suas variáveis PATH.
  4. Tenha o Docker Desktop em execução.
  5. Ter permissões para enviar por push para o registro especificado.

Você pode exibir 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 um nome de marca, poderá executar:

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'

Conecte a imagem à definição do seu ambiente

Ao criar definições de ambiente para usar sua imagem personalizada em sua implantação, edite a propriedade runner 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.