Orquestre microsserviços e aplicativos de vários contêineres para alta escalabilidade e disponibilidade
Gorjeta
Este conteúdo é um trecho do eBook, .NET Microservices Architecture for Containerized .NET Applications, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.
O uso de orquestradores para aplicativos prontos para produção é essencial se seu aplicativo for baseado em microsserviços ou simplesmente dividido em vários contêineres. Como introduzido anteriormente, em uma abordagem baseada em microsserviços, cada microsserviço possui seu modelo e dados para que seja autônomo do ponto de vista de desenvolvimento e implantação. Mas mesmo que você tenha um aplicativo mais tradicional composto por vários serviços (como SOA), também terá vários contêineres ou serviços que compõem um único aplicativo de negócios que precisam ser implantados como um sistema distribuído. Esses tipos de sistemas são complexos de expandir e gerenciar; Portanto, você precisa absolutamente de um orquestrador se quiser ter um aplicativo multicontêiner pronto para produção e escalável.
A Figura 4-23 ilustra a implantação em um cluster de um aplicativo composto por vários microsserviços (contêineres).
Figura 4-23. Um grupo de contentores
Você usa um contêiner para cada instância de serviço. Os contêineres do Docker são "unidades de implantação" e um contêiner é uma instância de uma imagem do Docker. Um host lida com muitos contêineres. Parece uma abordagem lógica. Mas como você está lidando com o balanceamento de carga, roteamento e orquestração desses aplicativos compostos?
O mecanismo Docker simples em hosts Docker únicos atende às necessidades de gerenciamento de instâncias de imagem única em um host, mas fica aquém quando se trata de gerenciar vários contêineres implantados em vários hosts para aplicativos distribuídos mais complexos. Na maioria dos casos, você precisa de uma plataforma de gerenciamento que inicie automaticamente os contêineres, dimensione os contêineres com várias instâncias por imagem, suspenda-os ou desligue-os quando necessário e, idealmente, também controle como eles acessam recursos como a rede e o armazenamento de dados.
Para ir além do gerenciamento de contêineres individuais ou aplicativos compostos simples e migrar para aplicativos corporativos maiores com microsserviços, você deve recorrer a plataformas de orquestração e clustering.
Do ponto de vista da arquitetura e do desenvolvimento, se você estiver criando uma grande empresa composta por aplicativos baseados em microsserviços, é importante entender as seguintes plataformas e produtos que suportam cenários avançados:
Clusters e orquestradores. Quando você precisa expandir aplicativos em muitos hosts Docker, como quando um grande aplicativo baseado em microsserviços, é fundamental ser capaz de gerenciar todos esses hosts como um único cluster abstraindo a complexidade da plataforma subjacente. É isso que os clusters de contêineres e orquestradores fornecem. O Kubernetes é um exemplo de um orquestrador e está disponível no Azure por meio do Serviço Kubernetes do Azure.
Agendadores. Agendamento significa ter a capacidade de um administrador iniciar contêineres em um cluster para que eles também forneçam uma interface do usuário. Um agendador de cluster tem várias responsabilidades: usar os recursos do cluster de forma eficiente, definir as restrições fornecidas pelo usuário, balancear a carga de contêineres de forma eficiente entre nós ou hosts e ser robusto contra erros enquanto fornece alta disponibilidade.
Os conceitos de um cluster e um agendador estão intimamente relacionados, portanto, os produtos fornecidos por fornecedores diferentes geralmente fornecem ambos os conjuntos de recursos. A lista a seguir mostra as opções de plataforma e software mais importantes que você tem para clusters e agendadores. Esses orquestradores geralmente são oferecidos em nuvens públicas como o Azure.
Plataformas de software para clustering, orquestração e agendamento de contêineres
Plataforma | Description |
---|---|
Kubernetes |
O Kubernetes é um produto de código aberto que fornece funcionalidades que vão desde a infraestrutura de cluster e agendamento de contêineres até recursos de orquestração. Ele permite automatizar a implantação, o dimensionamento e as operações de contêineres de aplicativos em clusters de hosts. O Kubernetes fornece uma infraestrutura centrada em contêineres que agrupa contêineres de aplicativos em unidades lógicas para facilitar o gerenciamento e a descoberta. O Kubernetes está maduro no Linux, menos maduro no Windows. |
Azure Kubernetes Service (AKS) |
O AKS é um serviço gerenciado de orquestração de contêineres do Kubernetes no Azure que simplifica o gerenciamento, a implantação e as operações do cluster Kubernetes. |
Aplicativos de contêiner do Azure |
Os Aplicativos de Contêiner do Azure são um serviço de contêiner gerenciado sem servidor para criar e implantar aplicativos modernos em escala. |
Usando orquestradores baseados em contêiner no Microsoft Azure
Vários fornecedores de nuvem oferecem suporte a contêineres do Docker, além de clusters do Docker e suporte à orquestração, incluindo Microsoft Azure, Amazon EC2 Container Service e Google Container Engine. O Microsoft Azure fornece suporte a cluster e orquestrador do Docker por meio do Serviço Kubernetes do Azure (AKS).
Usando o Serviço Kubernetes do Azure
Um cluster Kubernetes agrupa vários hosts do Docker e os expõe como um único host virtual do Docker, para que você possa implantar vários contêineres no cluster e expandir com qualquer número de instâncias de contêiner. O cluster lidará com todo o encanamento de gerenciamento complexo, como escalabilidade, integridade e assim por diante.
O AKS fornece uma maneira de simplificar a criação, configuração e gerenciamento de um cluster de máquinas virtuais no Azure que são pré-configuradas para executar aplicativos em contêineres. Usando uma configuração otimizada de ferramentas populares de agendamento e orquestração de código aberto, o AKS permite que você use suas habilidades existentes ou aproveite um grande e crescente corpo de experiência da comunidade para implantar e gerenciar aplicativos baseados em contêiner no Microsoft Azure.
O Serviço Kubernetes do Azure otimiza a configuração de ferramentas e tecnologias de código aberto de cluster populares do Docker especificamente para o Azure. Obtém uma solução aberta que oferece portabilidade para os seus contentores e a configuração da sua aplicação. Você seleciona o tamanho, o número de hosts e as ferramentas do orquestrador, e o AKS lida com todo o resto.
Figura 4-24. Estrutura simplificada e topologia do cluster Kubernetes
Na figura 4-24, você pode ver a estrutura de um cluster Kubernetes onde um nó mestre (VM) controla a maior parte da coordenação do cluster e você pode implantar contêineres para o resto dos nós, que são gerenciados como um único pool do ponto de vista do aplicativo e permitem dimensionar para milhares ou até dezenas de milhares de contêineres.
Ambiente de desenvolvimento para Kubernetes
No ambiente de desenvolvimento, o Docker anunciou em julho de 2018 que o Kubernetes também pode ser executado em uma única máquina de desenvolvimento (Windows 10 ou macOS) instalando o Docker Desktop. Mais tarde, você pode implantar na nuvem (AKS) para testes de integração adicionais, como mostra a figura 4-25.
Figura 4-25. Executando o Kubernetes na máquina de desenvolvimento e na nuvem
Introdução ao Serviço Kubernetes do Azure (AKS)
Para começar a usar o AKS, implante um cluster AKS a partir do portal do Azure ou usando a CLI. Para obter mais informações sobre como implantar um cluster Kubernetes no Azure, consulte Implantar um cluster do Serviço Kubernetes do Azure (AKS).
Não há taxas para nenhum dos softwares instalados por padrão como parte do AKS. Todas as opções padrão são implementadas com software de código aberto. O AKS está disponível para várias máquinas virtuais no Azure. Você é cobrado apenas pelas instâncias de computação escolhidas e pelos outros recursos de infraestrutura subjacentes consumidos, como armazenamento e rede. Não há taxas incrementais para o AKS em si.
A opção de implantação de produção padrão para o Kubernetes é usar gráficos Helm, que são introduzidos na próxima seção.
Implantar com gráficos Helm em clusters do Kubernetes
Ao implantar um aplicativo em um cluster Kubernetes, você pode usar a ferramenta kubectl.exe CLI original usando arquivos de implantação baseados no formato nativo (arquivos .yaml), conforme mencionado na seção anterior. No entanto, para aplicativos Kubernetes mais complexos, como ao implantar aplicativos complexos baseados em microsserviços, é recomendável usar o Helm.
O Helm Charts ajuda você a definir, versionar, instalar, compartilhar, atualizar ou reverter até mesmo o aplicativo Kubernetes mais complexo.
Indo além, o uso do Helm também é recomendado porque outros ambientes do Kubernetes no Azure, como os Espaços de Desenvolvimento do Azure, também são baseados em gráficos Helm.
O Helm é mantido pela Cloud Native Computing Foundation (CNCF) - em colaboração com a Microsoft, Google, Bitnami e a comunidade de colaboradores do Helm.
Para obter mais informações de implementação sobre gráficos Helm e Kubernetes, consulte a postagem Usando gráficos Helm para implantar eShopOnContainers no AKS .
Recursos adicionais
Introdução ao Serviço Kubernetes do Azure (AKS)
https://learn.microsoft.com/azure/aks/kubernetes-walkthrough-portalAzure Dev Spaces
https://learn.microsoft.com/azure/dev-spaces/azure-dev-spacesKubernetes O site oficial.
https://kubernetes.io/