Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Sugestão
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.
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:
- Serviços Kubernetes do Azure (AKS)
- Instância de Contêiner do Azure (ACI)
- Aplicativos Web do Azure para contêineres
Registo de Contêineres 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
.
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 transferir a imagem para a sua instância do 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ítuloCloud-Native DevOps.
Tarefas ACR
As Tarefas ACR são um conjunto de recursos disponíveis no Registro de Contêiner do Azure. Ele estende o seu ciclo de desenvolvimento interno criando e gerindo imagens de contentores na nuvem da 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.
Serviço Kubernetes do Azure
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 da aplicação está inicialmente configurada em produção, sem que o tráfego lhe seja direcionado. Em seguida, o sistema encaminhará uma pequena porcentagem de usuários para a versão recém-implantada. Quando a equipa ganhar mais confiança na nova versão, poderá lançar mais instâncias e retirar 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
- Região
- Versão do Kubernetes
- Prefixo do nome do DNS
- Tamanho do nó
- Número 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
- Ligação em 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 limitação. 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.