Editar

Arquitetura de linha de base para AKS no Azure Stack HCI

Azure Stack
Windows Server

Este cenário ilustra como projetar e implementar uma arquitetura de linha de base para o Serviço Kubernetes do Microsoft Azure (AKS) em execução no Azure Stack HCI (AKS híbrido).

Este artigo inclui recomendações para rede, segurança, identidade, gerenciamento e monitoramento do cluster com base nos requisitos de negócios de uma organização. Faz parte de um conjunto de orientações de linha de base arquitetónica de dois artigos. Veja as recomendações para design de rede aqui.

Arquitetura

A imagem a seguir mostra a arquitetura de linha de base do Serviço Kubernetes do Azure no cluster de failover de datacenter do Azure Stack HCI ou Windows Server 2019/2022:

Conceptual image of Baseline architecture for Azure Kubernetes Service on Azure Stack HCI.

Transfira um ficheiro do Visio desta arquitetura.

A arquitetura consiste nos seguintes componentes e capacidades:

  • Azure Stack HCI (20H2). Uma solução de cluster de infraestrutura hiperconvergente (HCI) que hospeda cargas de trabalho virtualizadas do Windows e Linux e seu armazenamento em um ambiente local híbrido. Um cluster HCI do Azure Stack é implementado como um cluster de 2 a 8 nós.
  • Serviço Kubernetes do Azure no Azure Stack HCI (AKS híbrido). Uma implementação local do AKS, que automatiza a execução de aplicativos em contêineres em escala.
  • Azure Arc. Um serviço baseado em nuvem que estende o modelo de gerenciamento baseado no Azure Resource Manager para recursos que não são do Azure, incluindo máquinas virtuais (VMs) não Azure, clusters Kubernetes e bancos de dados em contêineres.
  • Política do Azure. Um serviço baseado em nuvem que ajuda a impor padrões organizacionais e avaliar a conformidade em escala, avaliando os recursos do Azure (incluindo os habilitados para Arc) para as propriedades desses recursos para as regras de negócios. Esses padrões também incluem a Política do Azure para Kubernetes, que aplica políticas às cargas de trabalho em execução dentro do cluster.
  • Azure Monitor. Um serviço baseado em nuvem que maximiza a disponibilidade e o desempenho de seus aplicativos e serviços, fornecendo uma solução abrangente para coletar, analisar e agir em telemetria de seus ambientes locais e de nuvem.
  • Microsoft Defender para Cloud. Um sistema unificado de gerenciamento de segurança de infraestrutura que fortalece a postura de segurança de seus data centers e fornece proteção avançada contra ameaças em suas cargas de trabalho híbridas na nuvem e no local.
  • Automatização do Azure. Fornece um serviço de automação e configuração baseado na nuvem que dá suporte ao gerenciamento consistente em seus ambientes Azure e não Azure.
  • Velero. Uma ferramenta de código aberto que suporta backup sob demanda e backup agendado e restaura todos os objetos no cluster Kubernetes.
  • Armazenamento de Blobs do Azure. Armazenamento de objetos massivamente escalável e seguro para cargas de trabalho nativas da nuvem, arquivos, data lakes, computação de alto desempenho e aprendizado de máquina.

Componentes

Detalhes do cenário

Potenciais casos de utilização

  • Implemente cargas de trabalho altamente disponíveis e baseadas em contêiner em uma implementação local do Kubernetes do AKS.
  • Automatize a execução de aplicativos em contêineres em escala.
  • Reduza o custo total de propriedade (TCO) por meio de soluções certificadas pela Microsoft, automação baseada em nuvem, gerenciamento centralizado e monitoramento centralizado.

Hardware certificado

Use o hardware certificado pelo Azure Stack HCI, que fornece configurações de Inicialização Segura, UEFI (United Extensible Firmware Interface) e TPM (Trusted Platform Module) prontas para uso. Os requisitos de computação dependem do aplicativo e do número de nós de trabalho executados no AKS no cluster HCI do Azure Stack. Use vários nós físicos para implantação do Azure Stack HCI ou pelo menos um cluster de failover de dois nós do Windows Server Datacenter para obter alta disponibilidade. É necessário que todos os servidores tenham o mesmo fabricante e modelo, usando Intel Nehalem de 64 bits, AMD EPYC ou processadores compatíveis posteriores com SLAT (conversão de endereços de segundo nível).

Estratégias de implantação de cluster

O AKS simplifica a implantação do Kubernetes local fornecendo assistentes ou cmdlets do PowerShell que você pode usar para configurar o Kubernetes e complementos essenciais do Azure Stack HCI. Um cluster do Serviço Kubernetes do Azure tem os seguintes componentes no Azure Stack HCI:

  • Cluster de gestão. Implante o cluster de gerenciamento em uma máquina virtual (VM) altamente disponível em execução no Azure Stack HCI ou em um cluster de failover do Windows Server 2019/2022 Datacenter. O cluster de gerenciamento é responsável pela implantação e gerenciamento de vários clusters de carga de trabalho e inclui os seguintes componentes:
    • Servidor de API. Interage com as ferramentas de gestão.
    • Balanceador de carga. Gerencia regras de balanceamento de carga para o servidor de API do cluster de gerenciamento.
  • Clusters de carga de trabalho. Implemente componentes de plano de controle altamente disponíveis e componentes de nó de trabalho. Os aplicativos em contêineres são executados em um cluster de carga de trabalho. Para obter o isolamento de aplicativos, você pode implantar até oito clusters de carga de trabalho. O cluster de carga de trabalho consiste nos seguintes componentes:
    • Plano de controlo. É executado em uma distribuição Linux e contém componentes de servidor de API para interação com a API do Kubernetes e um armazenamento de chave-valor distribuído, etcd, para armazenar toda a configuração e dados do cluster.
    • Balanceador de carga. É executado em uma VM Linux e fornece serviços com balanceamento de carga para o cluster de carga de trabalho.
    • Nós de trabalho. Execute em um sistema operacional Windows ou Linux que hospede aplicativos em contêineres.
    • Recursos do Kubernetes. Os pods representam uma única instância do seu aplicativo, que geralmente tem um mapeamento 1:1 com um contêiner, mas certos pods podem conter vários contêineres. As implantações representam um ou mais pods idênticos. Pods e implantações são agrupados logicamente em um namespace que controla o acesso ao gerenciamento dos recursos.

Requisitos de rede

O Kubernetes fornece uma camada de abstração para a rede virtual conectando os nós do Kubernetes à rede virtual. Ele também fornece conectividade de entrada e saída para pods através do componente kube-proxy . A plataforma HCI do Azure Stack fornece maior simplificação da implantação configurando a VM do balanceador de carga HAProxy .

Nota

Para obter informações sobre como projetar e implementar conceitos de rede para implantar nós AKS no Azure Stack HCI e clusters do Windows Server, consulte o segundo artigo desta série, Arquitetura de rede.

A arquitetura usa uma rede virtual que aloca endereços IP usando uma das seguintes opções de rede:

  • Rede IP estática. Usa um pool de endereços estático e definido para todos os objetos na implantação. Ele adiciona benefícios extras e garante que a carga de trabalho e o aplicativo estejam sempre acessíveis. Este é o método recomendado.
  • Rede DHCP. Aloca endereços IP dinâmicos para os nós do Kubernetes, VMs subjacentes e balanceadores de carga usando um servidor DHCP (Dynamic Host Configuration Protocol).

Um pool de IP virtual é um intervalo de endereços IP reservados usado para alocar endereços IP para o servidor de API de cluster do Kubernetes e para serviços do Kubernetes.

Use o Project Calico for Kubernetes para obter outros recursos de rede, como política de rede e controle de fluxo.

Requisitos de armazenamento

Para cada servidor no cluster, use os mesmos tipos de unidades que são do mesmo tamanho e modelo. O Azure Stack HCI funciona com SATA (Serial Advanced Technology Attachment) de conexão direta, SAS (Serial Attached SCSI), NVMe (Non-Volatile Memory Express) ou unidades de memória persistente fisicamente conectadas a um servidor cada. Para volumes de cluster, o HCI usa tecnologia de armazenamento definida por software (Storage Spaces Direct) para combinar os drives físicos no pool de armazenamento para tolerância a falhas, escalabilidade e desempenho. Os aplicativos executados no Kubernetes no Azure Stack HCI geralmente esperam que as seguintes opções de armazenamento estejam disponíveis para eles:

  • Volumes. Represente uma maneira de armazenar, recuperar e persistir dados em pods e durante o ciclo de vida do aplicativo.
  • Volumes persistentes. Um recurso de armazenamento que é criado e gerenciado pela API do Kubernetes e pode existir além do tempo de vida de um pod individual.

Considere a definição de classes de armazenamento para diferentes níveis e locais para otimizar o custo e o desempenho. As classes de armazenamento oferecem suporte ao provisionamento dinâmico de volumes persistentes e definem a reclaimPolicy para especificar a ação do recurso de armazenamento subjacente para gerenciar volumes persistentes quando o pod é excluído.

Gerenciar AKS no Azure Stack HCI

Você pode gerenciar o AKS no Azure Stack HCI usando as seguintes opções de gerenciamento:

  • Centro de Administração do Windows. Oferece uma interface do usuário intuitiva para o operador Kubernetes gerenciar o ciclo de vida dos clusters do Serviço Kubernetes do Azure no Azure Stack HCI.
  • PowerShell. Facilita o download, a configuração e a implantação do AKS no Azure Stack HCI. O módulo PowerShell também oferece suporte à implantação, configuração de outros clusters de carga de trabalho e reconfiguração dos existentes.

Requisitos do Ative Directory

Integre o AKS no cluster de failover do Azure Stack HCI ou do Windows Server Datacenter com um ambiente dos Serviços de Domínio Ative Directory (AD DS) para um gerenciamento ideal. Quando possível, use unidades organizacionais separadas para os servidores e serviços do AKS no Azure Stack HCI para fornecer acesso e permissões de controle mais granulares. A integração do Ative Directory com o Serviço Kubernetes do Azure no Azure Stack HCI permite que um usuário em uma máquina associada ao domínio do Windows se conecte ao servidor de API (com kubectl) usando suas credenciais de logon único (SSO).

Recomendações

As recomendações seguintes aplicam-se à maioria dos cenários. Siga as recomendações, a menos que tenha um requisito específico que as substitua.

Integrar implantações híbridas do AKS com o Azure Arc

Para minimizar o TCO, integre implantações híbridas do AKS com o Azure Arc. Considere usar os seguintes serviços do Azure:

  • Azure Monitor Container Insights. Monitora o desempenho de cargas de trabalho de contêiner que estão sendo executadas em clusters Linux e Windows. Ele coleta métricas de memória e processador, de controladores, nós e contêineres por meio da API métrica. Com informações de contêiner, você pode identificar a utilização da memória e do processador, detetar o desempenho geral do pod, entender o comportamento do cluster e configurar alertas para monitoramento proativo.
  • Capacidades de automação. O AKS híbrido fornece uma ampla gama de recursos de automação, com atualizações do sistema operacional combinadas com atualizações de pilha completa, incluindo firmware e drivers fornecidos por fornecedores e parceiros do Azure Stack HCI. Você pode executar o Windows PowerShell localmente a partir de um dos servidores HCI do Azure Stack ou remotamente a partir de um computador de gerenciamento. A integração com a Automação do Azure e o Azure Arc facilita uma ampla variedade de cenários de automação para cargas de trabalho virtualizadas e conteinerizadas .
  • Velero e Azure Blob Storage. O Velero é uma ferramenta de código aberto que suporta backup sob demanda, backup agendado e restauração de todos os objetos no cluster Kubernetes para quaisquer recursos definidos e armazenados em um banco de dados etcd como uma CRD (Definição de Recursos Personalizados) do Kubernetes. Ele fornece backup de recursos e volumes do Kubernetes para um cluster inteiro ou parte de um cluster usando namespaces ou seletores de rótulo. Armazene o conjunto de backup criado com a ferramenta Velero em uma conta de armazenamento do Azure em um contêiner de blob.
  • Serviço Kubernetes habilitado para Azure Arc. Fornece a representação do AKS do Azure Resource Manager no cluster HCI do Azure Stack. Implante agentes habilitados para Azure Arc em um namespace Kubernetes para coletar logs e métricas, coletar metadados de cluster, versão de cluster e contagem de nós e garantir que os agentes estejam exibindo o desempenho ideal.
  • Política do Azure. Implante e aplique políticas de segurança internas no cluster AKS usando a Política do Azure. Você também pode usar a definição de política personalizada para impor o GitOps, que é a prática de declarar o estado desejado da configuração do Kubernetes (implantações, namespaces e assim por diante) em um repositório Git.
  • Política do Azure para Kubernetes. Gerencie políticas internas de cluster implementadas pelo Gatekeeper, implante a definição de política no cluster como modelo de restrição e informe sobre o estado de conformidade de seus clusters Kubernetes de um só lugar.
  • Azure RBAC. Use para atribuição de função e para gerenciar o acesso ao Kubernetes habilitado para Azure Arc.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

Fiabilidade

  • Implemente uma VM altamente disponível para o Cluster de Gerenciamento e vários hosts no Cluster Kubernetes para atender ao nível mínimo de disponibilidade para cargas de trabalho.
  • Backup e restauração de clusters de carga de trabalho usando Velero e Armazenamento de Blob do Azure. Defina metas de disponibilidade e recuperação para atender aos requisitos de negócios.
  • As implantações híbridas do AKS usam clustering de failover e migração ao vivo para alta disponibilidade e tolerância a falhas. A migração ao vivo é um recurso do Hyper-V que permite mover máquinas virtuais em execução de forma transparente de um host Hyper-V para outro sem tempo de inatividade percebido.
  • Configure implantações para usar recursos do Kubernetes, como Implantações, Mapeamento de Afinidade e ReplicaSets, para garantir que os pods sejam resilientes em cenários de interrupção.
  • Você deve garantir que os serviços referenciados na seção Arquitetura tenham suporte na região na qual o Azure Arc está implantado.
  • Considere limitar o uso de imagens de contêiner público e extrair apenas de registros de contêiner para os quais você tem controle sobre o SLA, como o ACR.

Segurança

Concentre-se em toda a pilha protegendo o host e os contêineres.

Segurança de infraestrutura

  • Use o hardware certificado HCI do Azure Stack que fornece configurações de Inicialização Segura, UEFI e TPM prontas para uso. Essas tecnologias, combinadas com a segurança baseada em virtualização (VBS), ajudam a proteger cargas de trabalho sensíveis à segurança. Visite as soluções HCI do Azure Stack para obter soluções validadas.
  • Use a Inicialização Segura para garantir que o servidor inicialize apenas o software confiável por um Fabricante de Equipamento Original.
  • Use UEFI para controlar o processo de inicialização do servidor.
  • Use o TPM para armazenar chaves criptográficas e isolar todas as funções relacionadas à segurança baseadas em hardware.
  • A Encriptação de Unidade BitLocker permite-lhe encriptar volumes Diretos de Espaços de Armazenamento em repouso.
  • Configure as políticas de rede do Calico para definir regras de isolamento de rede entre contêineres.
  • Para maiores requisitos de segurança, considere implantar um cluster de carga de trabalho em um servidor Windows dedicado.
  • Utilize o Microsoft Defender for Cloud, disponível através do Windows Admin Center, para gerir centralmente as definições de segurança para servidores e clusters. Ele fornece proteção contra ameaças para seus clusters Kubernetes habilitados para Arc. A extensão do Microsoft Defender for Cloud coleta dados de nós no cluster e os envia para o back-end do Azure Defender for Kubernetes na nuvem para análise posterior.
  • Comunicação segura com certificados.
  • Gire as chaves de criptografia do armazenamento secreto do Kubernetes (etcd) usando o plug-in KMS (Key Management Server).

Segurança de aplicações

  • Use a extensão de provedor Azure Key Vault Secrets em seu AKS no Azure Stack HCI para proteger ainda mais seus segredos que são usados por aplicativos diferentes, armazenando-os no serviço Azure Key Vault.
  • Use o complemento Open Service Mesh AKS para proteger a comunicação serviço-a-serviço habilitando o TLS mútuo (mTLS). Você também pode usar esse complemento para definir e executar políticas refinadas de controle de acesso para serviços.
  • Use a Política do Azure para Kubernetes para impor políticas de segurança de cluster, como nenhum pod privilegiado.
  • Use um Registro de Contêiner do Azure que contenha a verificação de vulnerabilidades em seu repositório de contêiner.
  • Use contas de segurança gerenciadas por grupo para cargas de trabalho do Windows com um host que não ingressou no domínio. (Aplicável apenas para Windows Server.)

Segurança do contentor

  • Proteja o ambiente de host e daemon removendo serviços desnecessários.
  • Mantenha os segredos fora das imagens e monte-os apenas através do mecanismo de orquestração de contêineres.
  • Proteja as imagens em um Registro de Contêiner do Azure que ofereça suporte à verificação de vulnerabilidades e RBAC.
  • Use o isolamento de contêineres e evite executar contêineres no modo privilegiado para evitar que invasores escalem os privilégios se o contêiner for comprometido.

Otimização de custos

Excelência operacional

  • Assistente para Criar Cluster. Experimente uma experiência simplificada de provisionamento e gerenciamento com o Windows Admin Center. O assistente Criar Cluster no Windows Admin Center fornece uma interface orientada por assistente que o orienta na criação de um cluster HCI do Azure Stack. O Assistente para Criar Cluster é uma compensação pela facilidade versus a criação de scripts de implantação que você pode controlar no código-fonte para auditoria e repetibilidade em várias implantações. Da mesma forma, o Windows Admin Center simplifica o processo de gerenciamento de VMs HCI do Azure Stack.
  • Azure Arc. Integre com o Azure Arc ou uma variedade de serviços do Azure que fornecem recursos adicionais de gerenciamento, manutenção e resiliência (por exemplo, Azure Monitor e análise de log).
  • GitOps. Em vez de configurar manualmente os componentes do Kubernetes, use ferramentas automatizadas para aplicar configurações a um cluster do Kubernetes, pois essas configurações são verificadas em um repositório de origem. Este processo é muitas vezes referido como GitOps, e as soluções populares de GitOps para Kubernetes incluem Flux e Argo CD. Nessa arquitetura, recomendamos o uso da extensão GitOps fornecida pela Microsoft, que é baseada no Flux.
  • Azure Arc-enabled Open Service Mesh (OSM). Uma malha de serviço leve, extensível e nativa da nuvem que permite aos usuários gerenciar uniformemente, ajudar a proteger e obter recursos de observabilidade prontos para uso em ambientes de microsserviços altamente dinâmicos.

Eficiência de desempenho

  • Use o hardware certificado HCI do Azure Stack para melhorar o tempo de atividade e o desempenho do aplicativo, simplificar o gerenciamento e as operações e reduzir o custo total de propriedade.
  • Entenda os limites de HCI do AKS no Azure Stack. A Microsoft oferece suporte ao AKS em implantações do Azure Stack com um máximo de oito servidores físicos por cluster, oito clusters Kubernetes e 200 VMs.
  • O dimensionamento do AKS no Azure Stack HCI depende do número de nós de trabalho e clusters de destino. Para dimensionar corretamente o hardware para os nós de trabalho, você precisa antecipar o número de pods, contêineres e nós de trabalho em um cluster de destino. Você deve garantir que pelo menos 15% da capacidade do Azure Stack HCI esteja reservada para falhas planejadas e não planejadas. Para obter eficiência de desempenho, use recursos de computação de forma eficiente para atender aos requisitos do sistema e para manter essa eficiência à medida que a demanda muda e as tecnologias evoluem. A regra geral é que, se um nó ficar offline durante a manutenção ou durante uma falha não planejada, os nós restantes podem ter capacidade suficiente para gerenciar o aumento da carga.
  • Considere aumentar o tamanho da VM do balanceador de carga se você estiver executando muitos serviços Kubernetes em cada cluster de destino.
  • O AKS no Azure Stack HCI distribui os nós de trabalho para cada pool de nós em um cluster de destino usando a lógica de posicionamento do Azure Stack HCI.
  • Planeje reservas de endereços IP para configurar hosts AKS, clusters de carga de trabalho, servidores de API de cluster, serviços Kubernetes e serviços de aplicativos. A Microsoft recomenda reservar um mínimo de 256 endereços IP para implantação do AKS no Azure Stack HCI.
  • Considere a implementação de um controlador de entrada que funcione na Camada 7 e use regras mais inteligentes para distribuir o tráfego do aplicativo.
  • Implemente a otimização do desempenho da rede para alocação de largura de banda de tráfego.
  • Use a aceleração da unidade de processamento gráfico (GPU) para cargas de trabalho extensas.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

  • Lisa DenBeste - Brasil | Gerente do Programa de Gerenciamento de Projetos
  • Kenny Harder - Brasil | Gestor de Projeto
  • Mike Kostersitz - Brasil | Gerente Principal de Programa Líder
  • Meg Olsen - Brasil | Mandante
  • Nate Águas | Gerente de Marketing de Produto

Outros contribuidores:

Próximos passos