Partilhar via


Implantando contêineres no Azure

Gorjeta

Este conteúdo é um excerto do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF transferível gratuito que pode ser lido offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Discutimos os contêineres neste capítulo e no capítulo 1. Vimos que os contêineres oferecem muitos benefícios aos aplicativos nativos da nuvem, incluindo a portabilidade. Na nuvem do Azure, você pode implantar os mesmos serviços em contêineres em ambientes de preparação e produção. O Azure fornece várias opções para hospedar essas cargas de trabalho em contêineres:

  • Azure Kubernetes Services (AKS)
  • Instância do Azure Container Instances (ACI)
  • Aplicativos Web do Azure para contêineres

Registo de Contentores do Azure

Ao criar um microsserviço em contêiner, você primeiro cria uma "imagem" de contêiner. A imagem é uma representação binária do código de serviço, dependências e tempo de execução. Embora você possa criar manualmente uma imagem usando o Docker Build comando da API do Docker, uma abordagem melhor é criá-la como parte de um processo de compilação automatizado.

Uma vez criadas, as imagens de contêiner são armazenadas em registros de contêiner. Eles permitem que você crie, armazene e gerencie imagens de contêiner. Existem muitos registos disponíveis, tanto públicos como privados. O Azure Container Registry (ACR) é um serviço de registro de contêiner totalmente gerenciado na nuvem do Azure. Ele persiste suas imagens dentro da rede do Azure, reduzindo o tempo para implantá-las em hosts de contêiner do Azure. Você também pode protegê-los usando os mesmos procedimentos de segurança e identidade que usa para outros recursos do Azure.

Você cria um Registro de Contêiner do Azure usando o portal do Azure, a CLI do Azure ou as ferramentas do PowerShell. Criar um registro no Azure é simples. Requer uma subscrição do Azure, um grupo de recursos e um nome exclusivo. A Figura 3-10 mostra as opções básicas para criar um registro, que será hospedado em registryname.azurecr.io.

Create container registry

Figura 3-10. Criar registo de contentor

Depois de criar o registro, você precisará autenticar com ele antes de poder usá-lo. Normalmente, você fará logon no Registro usando o comando da CLI do Azure:

az acr login --name *registryname*

Uma vez autenticado, você pode usar comandos docker para enviar imagens de contêiner para ele. Antes de fazer isso, no entanto, você deve marcar sua imagem com o nome totalmente qualificado (URL) do seu servidor de login ACR. Ele terá o formato registryname.azurecr.io.

docker tag mycontainer myregistry.azurecr.io/mycontainer:v1

Depois de marcar a imagem, use o docker push comando para enviá-la por push para sua instância ACR.

docker push myregistry.azurecr.io/mycontainer:v1

Depois de enviar uma imagem por push para o Registro, é uma boa ideia remover a imagem do seu ambiente Docker local, usando este comando:

docker rmi myregistry.azurecr.io/mycontainer:v1

Como prática recomendada, você não deve enviar imagens manualmente para um registro de contêiner. Em vez disso, use um pipeline de compilação definido em uma ferramenta como o GitHub ou o Azure DevOps. Saiba mais no capítulo DevOps nativo da nuvem.

Tarefas ACR

As Tarefas ACR são um conjunto de recursos disponíveis no Registro de Contêiner do Azure. Ele estende seu ciclo de desenvolvimento de loop interno criando e gerenciando imagens de contêiner na nuvem do Azure. Em vez de invocar um docker build e docker push localmente em sua máquina de desenvolvimento, eles são automaticamente manipulados por tarefas ACR na nuvem.

O comando AZ CLI a seguir cria uma imagem de contêiner e a envia por push para o ACR:

# create a container registry
az acr create --resource-group myResourceGroup --name myContainerRegistry008 --sku Basic

# build container image in ACR and push it into your container registry
az acr build --image sample/hello-world:v1  --registry myContainerRegistry008 --file Dockerfile .

Como você pode ver no bloco de comandos anterior, não há necessidade de instalar o Docker Desktop em sua máquina de desenvolvimento. Além disso, você pode configurar gatilhos de tarefa ACR para reconstruir imagens de contêineres em atualizações de código-fonte e imagem base.

Azure Kubernetes Service

Discutimos detalhadamente o Serviço Kubernetes do Azure (AKS) neste capítulo. Vimos que é o orquestrador de contêineres de fato gerenciando aplicativos nativos da nuvem em contêineres.

Depois de implantar uma imagem em um registro, como o ACR, você pode configurar o AKS para obtê-la e implantá-la automaticamente. Com um pipeline de CI/CD instalado, você pode configurar uma estratégia de liberação canária para minimizar o risco envolvido ao implantar rapidamente as atualizações. A nova versão do aplicativo é inicialmente configurada em produção sem tráfego roteado para ele. Em seguida, o sistema encaminhará uma pequena porcentagem de usuários para a versão recém-implantada. À medida que a equipe ganha confiança na nova versão, ela pode lançar mais instâncias e aposentar a antiga. O AKS suporta facilmente esse estilo de implantação.

Como acontece com a maioria dos recursos no Azure, você pode criar um cluster do Serviço Kubernetes do Azure usando o portal, a linha de comando ou ferramentas de automação como Helm ou Terraform. Para começar a usar um novo cluster, você precisa fornecer as seguintes informações:

  • Subscrição do Azure
  • Grupo de recursos
  • Nome do cluster do Kubernetes
  • País/Região
  • Versão do Kubernetes
  • Prefixo do nome do DNS
  • Tamanho do nó
  • Contagens de nós

Esta informação é suficiente para começar. Como parte do processo de criação no portal do Azure, você também pode configurar opções para os seguintes recursos do cluster:

  • Escala
  • Autenticação
  • Rede
  • Monitorização
  • Etiquetas

Este guia de início rápido mostra a implantação de um cluster AKS usando o portal do Azure.

Azure Bridge para Kubernetes

Os aplicativos nativos da nuvem podem crescer grandes e complexos, exigindo recursos de computação significativos para serem executados. Nesses cenários, o aplicativo inteiro não pode ser hospedado em uma máquina de desenvolvimento (especialmente um laptop). O Azure Bridge to Kubernetes resolve a lacuna. Ele permite que os desenvolvedores trabalhem com uma versão local de seu serviço enquanto hospedam todo o aplicativo em um cluster de desenvolvimento AKS.

Quando estiverem prontos, os desenvolvedores testam suas alterações localmente enquanto executam o aplicativo completo no cluster AKS - sem replicar dependências. Sob o capô, a ponte mescla o código da máquina local com os serviços em AKS. Os desenvolvedores podem iterar e depurar código rapidamente diretamente no Kubernetes usando Visual Studio ou Visual Studio Code.

Gabe Monroy, ex-vice-presidente de gerenciamento de produtos da Microsoft, descreve bem:

Imagine que você é um novo funcionário tentando corrigir um bug em um aplicativo complexo de microsserviços composto por dezenas de componentes, cada um com sua própria configuração e serviços de suporte. Para começar, você deve configurar seu ambiente de desenvolvimento local para que ele possa imitar a produção, incluindo a configuração do IDE, a criação da cadeia de ferramentas, dependências de serviço em contêineres, um ambiente Kubernetes local, simulações para serviços de suporte e muito mais. Com todo o tempo envolvido na configuração do seu ambiente de desenvolvimento, corrigir o primeiro bug pode levar dias! Ou você pode simplesmente usar o Bridge para Kubernetes e AKS.