Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Dica
Esse conteúdo é um trecho do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.
Discutimos contêineres neste capítulo e no capítulo 1. Vimos que os contêineres fornecem muitos benefícios para aplicativos nativos de nuvem, incluindo portabilidade. Na nuvem do Azure, você pode implantar os mesmos serviços em contêineres em ambientes de preparo e produção. O Azure fornece várias opções para hospedar essas cargas de trabalho em contêineres:
- AKS (Serviços do Kubernetes do Azure)
- ACI (Instância de Contêiner do Azure)
- Aplicativos Web do Azure para contêineres
Registro de Contêiner do Azure
Ao colocar um microsserviço em contêiner, primeiro você cria uma "imagem" de contêiner. A imagem é uma representação binária do código de serviço, das dependências e do runtime. 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 build automatizado.
Depois de criadas, as imagens de contêiner são armazenadas em registros de contêiner. Elas permitem que você crie, armazene e gerencie imagens de contêiner. Há muitos registros disponíveis, públicos e privados. O ACR (Registro de Contêiner do Azure) é um serviço de registro de contêiner totalmente gerenciado na nuvem do Azure. Ele mantém 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 você 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. A criação de um registro no Azure é simples. Ele requer uma assinatura 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 um registro de contêiner
Depois de criar o registro, você precisará autenticar com ele antes de usá-lo. Normalmente, você fará logon no Registro usando o comando da CLI do Azure:
az acr login --name *registryname*
Depois de autenticado, você pode usar comandos do Docker para enviar imagens de contêiner para ele. No entanto, para fazer isso, você deve marcar sua imagem com o nome totalmente qualificado (URL) do servidor de logon do ACR. Ele terá o formato registryname.azurecr.io.
docker tag mycontainer myregistry.azurecr.io/mycontainer:v1
Depois de marcar a imagem, use o comando docker push para empurrar a imagem para 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 ambiente local do Docker usando este comando:
docker rmi myregistry.azurecr.io/mycontainer:v1
Como prática recomendada, você não deve subir manualmente imagens para um registro de contêiner. Em vez disso, use um pipeline de build definido em uma ferramenta como o GitHub ou o Azure DevOps. Saiba mais no capítuloCloud-Native DevOps.
Tarefas do ACR
As Tarefas do ACR são um conjunto de recursos disponíveis no Registro de Contêiner do Azure. Ele amplia seu ciclo de desenvolvimento interno criando e gerenciando imagens de contêiner na nuvem do Azure. Em vez de invocar um docker build e docker push localmente em seu computador de desenvolvimento, eles são tratados automaticamente pelas Tarefas do ACR na nuvem.
O seguinte comando da CLI do AZ 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 é necessário instalar o Docker Desktop em seu computador de desenvolvimento. Além disso, você pode configurar gatilhos da Tarefa ACR para recriar imagens de contêineres durante atualizações do código-fonte e das imagens base.
Serviço de Kubernetes do Azure
Discutimos longamente o AKS (Serviço de Kubernetes do Azure) neste capítulo. Vimos que é o orquestrador de contêineres que de fato gerencia os aplicativos nativos de nuvem em contêineres.
Depois de implantar uma imagem em um registro, como o ACR, você poderá configurar o AKS para efetuar pull e implantá-la automaticamente. Com um pipeline de CI/CD implementado, será possível configurar uma estratégia de versão canário para minimizar o risco envolvido ao implantar as atualizações rapidamente. A nova versão do aplicativo é inicialmente configurada em produção sem que nenhum tráfego seja roteado para ela. Em seguida, o sistema roteará 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 implantar mais instâncias e desativar a antiga. O AKS dá suporte facilmente a esse estilo de implantação.
Assim como acontece com a maioria dos recursos no Azure, você pode criar um cluster do Serviço de Kubernetes do Azure usando o portal, a linha de comando ou as ferramentas de automação, como Helm ou Terraform. Para começar a usar um novo cluster, você precisa fornecer as seguintes informações:
- Assinatura do Azure
- Grupo de recursos
- Nome do cluster do Kubernetes
- Região
- Versão do Kubernetes
- Prefixo do nome DNS
- Tamanho de nó
- Contagem de nós
Essas informações são suficientes 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 explica como implantar um cluster do AKS usando o portal do Azure.
Ponte do Azure para Kubernetes
Aplicativos nativos de nuvem podem crescer grandes e complexos, exigindo recursos de computação significativos para execução. Nesses cenários, todo o aplicativo não pode ser hospedado em um computador de desenvolvimento (especialmente um laptop). A Ponte do Azure para Kubernetes aborda a deficiência. 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 do AKS.
Quando estiverem prontos, os desenvolvedores testarão suas alterações localmente durante a execução no aplicativo completo no cluster do AKS sem replicar dependências. De maneira subjacente, a ponte mescla o código do computador local com os serviços no AKS. Os desenvolvedores podem iterar e depurar rapidamente o código diretamente no Kubernetes usando o Visual Studio ou o Visual Studio Code.
Gabe Monroy, ex-VP de Gerenciamento de Produtos da Microsoft, descreve bem:
Imagine que você é um novo funcionário tentando corrigir um bug em um aplicativo de microsserviços complexo que consiste em dezenas de componentes, cada um com seus próprios serviços de configuração e backup. Para começar, você deve configurar seu ambiente de desenvolvimento local para que ele possa imitar a produção, incluindo configurar seu IDE, criar cadeia de ferramentas, dependências de serviço em contêineres, um ambiente local do Kubernetes, simular serviços de backup e muito mais. Com todo o tempo envolvido na configuração do seu ambiente de desenvolvimento, corrigir esse primeiro bug pode levar dias! Ou você pode usar o Bridge para Kubernetes e AKS.