Linha de base do AKS para clusters de várias regiões
Essa arquitetura detalha como executar várias instâncias de um cluster ASK (Serviço de Kubernetes do Azure) em várias regiões em uma configuração ativa/ativa e altamente disponível.
Essa arquitetura se baseia na arquitetura da linha de base do AKS, o ponto de partida recomendado pela Microsoft para a infraestrutura do AKS. A linha de base do AKS detalha recursos de infraestrutura como o Microsoft Entra Workload ID, restrições de entrada e saída, limites de recursos e outras configurações seguras de infraestrutura do AKS. Esses detalhes de infraestrutura não são abordados neste documento. Recomendamos que você se familiarize com a linha de base do AKS antes de prosseguir com o conteúdo de várias regiões.
Arquitetura
Baixe um Arquivo Visio dessa arquitetura.
Componentes
Muitos componentes e serviços do Azure são usados nesta arquitetura do AKS de várias regiões. Somente esses componentes exclusivos para essa arquitetura de vários clusters estão listados aqui. Para o restante, faça referência à arquitetura da Linha de Base do AKS.
clusters regionais do AKS: vários clusters do AKSsão implantados, cada um em uma região separada do Azure. Durante as operações normais, o tráfego de rede é roteado entre todas as regiões. Se uma região ficar indisponível, o tráfego será roteado para uma região restante mais próxima do usuário que emitiu a solicitação. - Redes hub-spoke regionais: Uma rede virtual hub-spoke regional é implantada para cada instância regional do AKS. políticas de do Gerenciador de Firewall do Azure são usadas para gerenciar políticas de firewall em todas as regiões.
- cofre de chaves regional: do Azure Key Vault é provisionado em cada região. Os cofres de chaves são usados para armazenar valores confidenciais e chaves específicas para o cluster do AKS e dar suporte aos serviços que estão nessa região.
Vários workspaces de log: os workspaces do Log Analyticsregionais são usados para armazenar métricas de rede regionais e logs de diagnóstico. Além disso, uma instância compartilhada do Log Analytics é usada para armazenar métricas e logs de diagnóstico para todas as instâncias do AKS. - Frota do AKS: Um Gerenciador de Frotas do Kubernetes do Azure é implantado para coordenar atualizações de versão de cluster do Kubernetes e atualizações de versão de imagem de nó em cada um dos clusters regionais do AKS.
- Cluster de hub de frota (gerenciado pela Microsoft):opcionalmente, um único cluster do Hub do Fleet Manager do Kubernetes do Azure pode ser implantado para dar suporte a recursos específicos de frotas, como a propagação de carga de trabalho. O cluster de hub é um recurso do Azure com escopo regional que ajuda a gerenciar a propagação de carga de trabalho e o balanceamento de carga em vários clusters de membros. É melhor implantar o cluster de hub como um cluster de hub privado, que deve ser acessível de clusters membros para dar suporte a sinais de pulsação e executar processos de reconciliação de configuração.
- perfil global do Azure Front Door:a do Azure Front Door é usada para balancear a carga e rotear o tráfego para uma instância regional do Gateway de Aplicativo do Azure, que fica na frente de cada cluster do AKS. O Azure Front Door permite o roteamento global da camada 7, ambos necessários para essa arquitetura.
- Registro de contêiner global: As imagens de contêiner da carga de trabalho são armazenadas em um registro de contêiner gerenciado. Nesta arquitetura, um único Registro de Contêiner do Azure é usado para todas as instâncias do Kubernetes no cluster. A replicação geográfica para Registro de Contêiner do Azure permite replicar imagens para as regiões selecionadas do Azure e fornecer acesso contínuo às imagens mesmo que uma região esteja enfrentando uma interrupção.
Alternativas
Essa solução usa o Gerenciador de Frotas de Kubernetes do Azure. As frotas permitem uma variedade de recursos para gerenciar vários clusters, com foco na simplificação das operações do dia 2, fornecendo um plano de controle que pode orquestrar atividades em vários clusters. Os benefícios do Fleet Manager aumentam à medida que o número de clusters em sua frota aumenta.
Nesta solução, a frota orquestra atualizações de versão do Kubernetes em vários clusters, bem como atualizações de versão de imagem de nó. Esses recursos não exigem que um cluster de hub seja implantado. Você pode optar por fazer com que cada cluster execute atualizações de versão e imagem de nó do Kubernetes de forma independente, o que não requer uma frota. No entanto, se você fizer isso, é provável que os clusters obtenham atualizações de versão em momentos diferentes e pode se tornar difícil validar sua carga de trabalho e configuração com várias versões em seu ambiente de produção simultaneamente.
Opcionalmente, você também pode usar uma frota para coordenação de implantação de carga de trabalho, o que exige que você adicione um cluster de hub. As implantações de carga de trabalho são discutidas com mais detalhes mais adiante neste artigo.
Padrões de design
Essa arquitetura usa dois padrões de design de nuvem:
- Nós geográficos (Geodes), onde qualquer região pode atender a qualquer solicitação.
- Carimbos de implantação, em que várias cópias independentes de um aplicativo ou componente de aplicativo são implantadas a partir de uma única fonte, como um modelo de implantação.
Considerações sobre o padrão de geodo
Ao selecionar regiões para implantação nas quais cada cluster do AKS será implantado, considere as regiões próximas aos clientes das cargas de trabalho ou seus clientes. Além disso, considere utilizar a replicação entre regiões. A replicação entre regiões replica de modo assíncrono os mesmos aplicativos e dados em outras regiões do Azure para proteção de recuperação de desastre. Conforme o cluster é escalado além de duas regiões, continue planejando a replicação entre regiões para cada par de clusters do AKS.
Em cada região, os nós nos pools de nós do AKS são distribuídos em várias zonas de disponibilidade para ajudar a evitar problemas devido a falhas zonais. Há suporte para zonas de disponibilidade em um conjunto limitado de regiões, o que influencia o posicionamento regional do cluster. Para obter mais informações sobre o AKS e as zonas de disponibilidade, incluindo uma lista de regiões com suporte, confira Zonas de disponibilidade do AKS.
Considerações sobre selo de implantação
Ao gerenciar uma solução do AKS de várias regiões, você implanta vários clusters do AKS em várias regiões. Cada um desses clusters é considerado um carimbo. Se houver uma falha regional ou se você precisar adicionar mais capacidade ou presença regional para seus clusters, talvez seja necessário criar uma nova instância de carimbo. Ao selecionar um processo para criar e gerenciar selos de implantação, será importante considerar o seguinte:
- Selecione a tecnologia apropriada para as definições de selo que permite a configuração generalizada. Por exemplo, você pode usar o Bicep para definir a infraestrutura como código.
- Fornecer valores específicos da instância usando um mecanismo de entrada de implantação, como variáveis ou arquivos de parâmetro.
- Selecionar ferramentas de implantação que permitem implantação flexível, repetível e idempotente.
- Em uma configuração de selo ativo/ativo, considere como o tráfego é equilibrado em cada selo. Esta arquitetura usa o Azure Front Door para balanceamento de carga global.
- Conforme os selos são adicionados e removidos da coleção, considere as preocupações de capacidade e custo.
- Considere como obter visibilidade e/ou monitorar a coleção de selos como uma única unidade.
Cada um desses itens é detalhado com diretrizes específicas nas seções a seguir.
Considerações
Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Implantação e inicialização de cluster
Ao implantar vários clusters do Kubernetes em configurações altamente disponíveis e geograficamente distribuídas, será fundamental considerar a soma de cada cluster do Kubernetes como uma unidade acoplada. Talvez você queira desenvolver estratégias controladas por código para a implantação e a configuração automatizadas a fim de garantir que cada instância do Kubernetes seja a mais idêntica possível. Considere estratégias de expansão e redução, inclusive adicionando ou removendo outros clusters do Kubernetes. Seu design, plano de implantação e configuração devem levar em conta interrupções da zona de disponibilidade, falhas regionais e outros cenários comuns.
Definição do cluster
Você tem muitas opções para implantar um cluster do Serviço de Kubernetes do Azure. O portal do Azure, a CLI do Azure e o módulo do Azure PowerShell são opções adequadas para implantar os clusters de AKS individuais ou não acoplados. No entanto, esses métodos poderão apresentar desafios ao trabalhar-se com muitos clusters de AKS bem acoplados. Por exemplo, usar o portal do Azure abre a oportunidade de configuração incorreta devido a etapas perdidas ou opções de configuração indisponíveis. Além disso, a implantação e a configuração de muitos clusters usando o portal é um processo demorado que exige o foco de um ou mais engenheiros. Se você usar a CLI do Azure ou o Azure PowerShell, poderá construir um processo repetível e automatizado usando as ferramentas de linha de comando. No entanto, a responsabilidade da idempotência, do controle de falhas da implantação e da recuperação de falhas sua e dos scripts que você criar.
Ao trabalhar com várias instâncias do AKS, recomendamos considerar a infraestrutura como soluções de código, como modelos do Azure Resource Manager, modelos Bicep ou configurações do Terraform. As soluções de infraestrutura como código fornecem uma solução de implantação automatizada, escalonável e idempotente. Por exemplo, é possível usar um arquivo Bicep para os serviços compartilhados da solução e outro para os clusters do AKS e outros serviços regionais. Se você usar a infraestrutura como código, um carimbo de implantação pode ser definido com as configurações generalizadas, como rede, autorização e diagnóstico. Um arquivo de parâmetro de implantação pode ser fornecido com valores específicos da região. Com essa configuração, um único modelo pode ser usado para implantar um carimbo quase idêntico em qualquer região.
O custo de desenvolver e manter a infraestrutura como ativos de código pode ser caro. Em alguns casos, a sobrecarga de definir a infraestrutura como código pode superar os benefícios, como quando você tem um número muito pequeno (digamos, 2 ou 3) e inalterável de instâncias do AKS. Para esses casos, é aceitável usar uma abordagem mais imperativa, como com ferramentas de linha de comando ou até mesmo abordagens manuais com o portal do Azure.
Implantação de cluster
Depois que a definição de selo de cluster tiver sido definida, você terá muitas opções para implantar instâncias de carimbo individuais ou múltiplas. Nossa recomendação é usar a tecnologia de integração contínua moderna, como GitHub Actions ou a Azure Pipelines. Os benefícios das soluções de implantação contínuas baseadas em integração incluem:
- Implantações baseadas em código que permitem que selos sejam adicionados e removidos usando código
- Recursos de teste integrados
- Funcionalidades de ambiente e preparo integradas
- Soluções de gerenciamento de segredos integradas
- Integração com o controle do código-fonte, tanto para o código do aplicativo quanto para scripts e modelos de implantação
- Histórico de implantação e registro
- Recursos de controle de acesso e auditoria, para controlar quem pode fazer alterações e em que condições
Conforme novos selos são adicionados ou removidos do cluster global, o pipeline de implantação precisa ser atualizado para permanecer consistente. Uma abordagem é implantar os recursos de cada região como uma etapa individual em um fluxo de trabalho do GitHub Actions. Essa configuração é simples porque cada instância do cluster é claramente definida dentro do pipeline de implantação. No entanto, essa configuração inclui alguma sobrecarga administrativa na adição e na remoção de clusters da implantação.
Outra opção seria criar lógica de negócios para criar clusters com base em uma lista de locais desejados ou outros pontos de dados indicadores. Por exemplo, o pipeline de implantação pode conter uma lista de regiões desejadas. Uma etapa dentro do pipeline poderia fazer loop por meio dessa lista, implantando um cluster em cada região encontrada na lista. A desvantagem dessa configuração é a complexidade na generalização da implantação e que cada selo de cluster não é explicitamente detalhado no pipeline de implantação. O benefício positivo é que adicionar ou remover selos de cluster do pipeline se torna uma atualização simples para a lista de regiões desejadas.
Após a criação de um cluster, ele precisa ser registrado na frota como um cluster membro. Essa etapa pode ser concluída implantando um recurso de tipo Microsoft.ContainerService/fleets/members
do Resource Manager, que faz referência à ID de recurso do cluster membro. Depois que o cluster membro é registrado na frota, ele pode ser adicionado para atualizar as execuções e usar outros recursos de frota configurados.
Além disso, a remoção de um carimbo de cluster do pipeline de implantação nem sempre desativa os recursos do carimbo. Dependendo da sua solução de implantação e configuração, pode ser necessária uma etapa extra para desativar as instâncias do AKS e outros recursos do Azure. Considere usar pilhas de implantação para habilitar o gerenciamento completo do ciclo de vida dos recursos do Azure, incluindo a limpeza quando você não precisar mais deles.
Inicialização do cluster
Depois que cada instância ou carimbo do Kubernetes tiver sido implantado, componentes de cluster precisam ser implantados e configurados, como controladores de entrada, soluções de identidade e componentes de carga de trabalho. Talvez seja necessário criar namespaces do Kubernetes e também é necessário considerar a aplicação de políticas de segurança, acesso e governança em todo o cluster. Essas operações são conhecidas como inicialização do cluster para se preparar para cargas de trabalho que serão implantadas nele.
Semelhante à implantação, as configurações de inicialização podem se tornar desafiadoras para gerenciar em várias instâncias do Kubernetes manualmente. Se você usar um cluster de hub com o Gerenciador de Frotas do Kubernetes do Azure, poderá implantar algumas das configurações de inicialização em sua frota, como namespaces. No entanto, outros componentes de inicialização exigem uma abordagem de implantação diferente.
Você deve considerar uma das opções a seguir para aplicar a configuração de inicialização e a política em escala.
GitOps
Em vez de configurar manualmente os componentes do Kubernetes em cada cluster, é recomendável usar métodos automatizados para aplicar configurações a um cluster do Kubernetes, pois essas configurações são verificadas em um repositório de origem. Esse processo geralmente é chamado de GitOps e as soluções populares do GitOps para Kubernetes incluem Flux e Argo CD. Por exemplo, a extensão Flux para AKS permite a inicialização dos clusters de forma automática e imediata após a implantação dos clusters.
O GitOps é detalhado com mais detalhamento em Arquitetura de referência de linha de base do AKS. Ao usar uma abordagem baseada em GitOps para configuração você garante que cada instância do Kubernetes seja configurada da mesma forma sem esforço sob medida. Um processo de configuração simplificado torna-se ainda mais importante à medida que o tamanho da sua frota cresce.
Você pode usar uma abordagem do GitOps para implantar a configuração do cluster base. Você pode registrar o cluster na frota para participar de atividades de toda a frota, como distribuições de atualização automatizadas.
Opcionalmente, você também pode usar o GitOps para implantar suas cargas de trabalho. Para saber mais, consulte a seção de implantação de carga de trabalho abaixo.
Azure Policy
Conforme várias instâncias do Kubernetes são adicionadas, o benefício da governança, conformidade e configuração controladas por políticas aumenta. Utilizar políticas, especificamente o Azure Policy, fornece um método centralizado e escalável para controle de cluster. O benefício das políticas do AKS é detalhado em Arquitetura de referência de linha de base do AKS.
O Azure Policy deve estar habilitado quando os clusters do AKS forem criados. As iniciativas devem ser atribuídas no modo de auditoria para obter visibilidade da não conformidade. Você também pode definir mais políticas que não façam parte de nenhuma iniciativa interna. Essas políticas são definidas no modo Negar. Por exemplo, há uma política em vigor para garantir que apenas imagens de contêiner aprovadas sejam executadas no cluster. Considere criar suas próprias iniciativas personalizadas. Combine as políticas aplicáveis à carga de trabalho em uma única atribuição.
O escopo da política refere-se ao destino de cada política e iniciativa política. Você pode usar o Bicep para atribuir políticas ao grupo de recursos no qual cada cluster do AKS é implantado. Conforme o volume do cluster global aumenta, muitas políticas são duplicadas. Você também pode definir o escopo das políticas para uma assinatura do Azure ou um grupo de gerenciamento do Azure. Esse método permite aplicar um único conjunto de políticas a todos os clusters de AKS dentro do escopo de uma assinatura ou todas as assinaturas encontradas em um grupo de gerenciamento.
Ao elaborar a política para vários clusters do AKS, considere os seguintes itens:
- Aplique políticas que devem ser aplicadas globalmente a todas as instâncias do AKS em um grupo de gerenciamento ou assinatura.
- Coloque cada cluster regional em seu grupo de recursos permite que políticas específicas da região sejam aplicadas ao grupo de recursos.
Consulte Organização de recursos do Cloud Adoption Framework para obter materiais que ajudarão você a estabelecer uma estratégia de gerenciamento de políticas.
Registro de frota
Depois que um cluster é implantado e configurado, você o registra na frota como um cluster membro. Cada cluster membro pode ser atribuído a um grupo de atualizações, que pode ser usado como parte de uma estratégia de atualização para determinar onde em uma execução de atualização o cluster é atualizado. Para saber mais sobre o registro de cluster, grupos e estratégias de atualização, consulte Definir estratégias de atualização reutilizáveis usando o Gerenciador de Frotas do Kubernetes do Azure.
Implantação da carga de trabalho
Cada cluster do AKS em sua arquitetura executa aplicativos que dão suporte à carga de trabalho. É importante planejar como você implantará e atualizará seus componentes de carga de trabalho de maneira segura e controlada e como manterá a consistência das versões do aplicativo entre cada cluster. Portanto, além da configuração da instância do AKS, considere as cargas de trabalho implantadas em cada instância regional ou carimbo. Suas soluções de implantação ou pipelines exigem configuração para acomodar cada selo regional. Conforme mais selos são adicionados ao cluster global, o processo de implantação precisa ser estendido ou flexível o suficiente para acomodar as novas instâncias regionais.
Há várias abordagens de implantação que você pode considerar, incluindo:
Pipelines: Para cenários com um pequeno número de clusters e implantações relativamente poucas e simples, geralmente é melhor usar pipelines de CD (entrega contínua) leve dedicada.
Um único pipeline normalmente implanta uma carga de trabalho em um ou mais clusters. Essa abordagem minimiza a sobrecarga operacional e permanece gerenciável em ambientes de baixa escala. Ao mover de um único cluster para um modelo de poucos clusters, você pode evoluir os pipelines de implantação já existentes.
Propagação de carga de trabalho do Gerenciador de Frotas do Kubernetes do Azure: A propagação da carga de trabalho da frota simplifica a tarefa de orquestrar definições de carga de trabalho em vários clusters de membros de um plano de controle centralizado. As frotas dão suporte a uma abordagem confiável e escalonável para implantações de carga de trabalho, permitindo um grande número de cargas de trabalho e clusters membros.
A propagação de carga de trabalho requer o uso de um cluster de hub, que é um cluster AKS gerenciado pela Microsoft que ajuda a acompanhar o estado esperado dos clusters membros. Esse cluster de hub é um recurso regional. Se uma interrupção regional afetar o cluster do hub, a propagação da carga de trabalho poderá sofrer interrupções temporárias.
GitOps: À medida que sua infraestrutura amadurece ainda mais, a adoção de uma estratégia baseada em GitOps torna-se cada vez mais benéfica. O GitOps permite mecanismos de implantação declarativos, auditáveis e baseados em pull, oferecendo escalabilidade, governança e colaboração em equipe. A transição para esse modelo é especialmente recomendada ao gerenciar uma grande e dinâmica frota de clusters em várias regiões.
Para saber mais, consulte GitOps para o Serviço de Kubernetes do Azure.
Para decidir qual abordagem faz sentido para sua solução, considere estas perguntas:
- Você espera que o número de clusters permaneça fixo ou aumente ao longo do tempo? Se você planeja expandir o número de clusters ou se planeja ajustar o número de clusters dinamicamente, ele pode se tornar desordado rapidamente para manter a configuração de cada cluster em seus pipelines de implantação.
- Quantas unidades implantáveis você precisa gerenciar? Se você tiver um pequeno número de aplicativos monolíticos, terá apenas um pequeno número de implantações individuais para coordenar. No entanto, se você tiver uma arquitetura baseada em microsserviços distribuída, um grande número de cargas de trabalho ou ambas. em seguida, isso pode crescer rapidamente em centenas de unidades implantáveis. A criação de um pipeline para cada implantação pode se tornar inviável.
- De que tipo de estratégias de implantação você precisa? As estratégias comuns incluem atualizações sem interrupção, implantações azul-verde e implantações canárias. Algumas abordagens de implantação devem permitir o "tempo de bake" entre as distribuições, com monitoramento próximo para verificar se há regressões introduzidas pela implantação. Avalie cada abordagem de implantação para determinar se ela dá suporte a seus requisitos específicos.
- Em quais restrições de segurança de rede seus clusters funcionam? O Gerenciador de Frotas do Kubernetes do Azure opera em uma topologia de cluster hub-and-spoke, em que os clusters membros mantêm conexões de saída para um cluster de hub central para reconciliação de carga de trabalho e monitoramento de pulsação. Uma estratégia baseada em GitOps requer que os clusters participantes estabeleçam acesso de saída a um repositório Git. Quando você usa pipelines, o agente de pipeline normalmente requer conectividade com cada cluster para executar operações de implantação.
Independentemente de como você orquestrará suas implantações, procure generalizar cada implantação, como com um gráfico do Helm, para garantir que uma única configuração de implantação possa ser usada em vários clusters (selos). Além disso, considere como o log de diagnóstico do aplicativo e o rastreamento distribuído podem ser configurados para a observabilidade em todo o aplicativo em cada um dos clusters.
Fiabilidade
A confiabilidade garante que seu aplicativo possa atender aos compromissos que você faz aos seus clientes. Para obter mais informações, consulte Lista de verificação de revisão de design parade confiabilidade.
Uma motivação significativa para escolher uma arquitetura do Kubernetes de várias regiões é a disponibilidade do serviço. Ou seja, se um componente de serviço ou um serviço ficar indisponível em uma região, o tráfego deverá ser roteado para uma região em que uma outra instância esteja disponível. Uma arquitetura de várias regiões inclui muitos pontos de falha diferentes. Nesta seção, cada um desses possíveis pontos de falha é discutido.
Falhas no pod do aplicativo
Um objeto de implantação do Kubernetes é usado para criar um ReplicaSet, que gerencia várias réplicas de um pod. Se um pod não estiver disponível, o tráfego será roteado entre os restantes. O ReplicaSet do Kubernetes tenta manter o número especificado de réplicas em funcionamento. Se uma instância for inativa, uma nova instância deverá ser recriada automaticamente. As investigações de atividade podem ser usadas para verificar o estado do aplicativo ou o processo em execução no pod. Se o serviço não responder adequadamente, a investigação de atividade removerá o pod, o que forçará o ReplicaSet a criar uma nova instância.
Para obter mais informações, confira ReplicaSet de Kubernetes.
Falhas de hardware do datacenter
Ocasionalmente, pode ocorrer falha localizada. Por exemplo, a energia pode ficar indisponível para um único rack de servidores do Azure. Para proteger os nós do AKS de se tornarem uma falha regional de ponto único, utilize zonas de Disponibilidade do Azure. Ao usar zonas de disponibilidade, você garante que os nós do AKS em uma zona de disponibilidade sejam fisicamente separados daqueles nós definidos em outra zona de disponibilidade.
Para obter mais informações, confira AKS e Zonas de disponibilidade do Azure.
Falhas na região do Azure
Quando uma região inteira fica indisponível, os pods no cluster não estão mais disponíveis para atender às solicitações. Nesse caso, o Azure Front Door roteia todo o tráfego para as regiões íntegras restantes. Os clusters e pods do Kubernetes nas regiões íntegras continuam atendendo às solicitações.
Tome cuidado nessa situação para compensar o aumento do tráfego/solicitações para o cluster restante. Considere os seguintes pontos:
- Verifique se os recursos de rede e computação têm o tamanho certo para absorver qualquer aumento repentino no tráfego devido ao failover de região. Por exemplo, ao usar a CNI do Azure, verifique se você tem uma sub-rede grande o suficiente para dar suporte a todos os endereços IP do pod enquanto o tráfego está aumentando.
- Use o Dimensionador Automático de Pod Horizontal para aumentar a contagem de réplicas de pod, a fim de compensar o aumento da demanda regional.
- Use o Dimensionador Automático de Cluster do AKS para aumentar a contagem de nós da instância do Kubernetes, a fim de compensar o aumento da demanda regional.
Para obter mais informações, confira Dimensionador Automático do Pod Horizontal e Dimensionador automático de cluster do AKS.
Topologia de rede
Semelhante à arquitetura de referência de linha de base do AKS, essa arquitetura usa uma topologia de rede hub-spoke. Além das considerações especificadas em arquitetura de referência de linha de base do AKS, considere as seguintes práticas recomendadas:
- Implemente um conjunto hub-spoke de redes virtuais para cada instância regional do AKS. Em cada região, emparelhe cada spoke com a rede virtual do hub.
- Roteie todo o tráfego de saída por meio de uma instância de Firewall do Azure encontrada em cada rede de hub regional. As políticas do Gerenciador de Firewall do Azure são usadas para gerenciar políticas de firewall em todas as regiões.
- Siga o dimensionamento de IP encontrado na arquitetura de referência de linha de base do AKS e permita mais endereços IP para operações de escala de nó e pod caso você experimente uma falha regional em outra região e o tráfego para as regiões restantes aumente substancialmente.
Gerenciamento de tráfego
Com a arquitetura de referência da linha de base do AKS, o tráfego de carga de trabalho é roteado diretamente para uma instância de Gateway de Aplicativo do Azure e encaminhado para os recursos de entrada do balanceador de carga de back-end/AKS. Ao trabalhar-se com vários clusters, as solicitações de cliente são roteadas por meio de uma instância do Azure Front Door, que roteia para a instância Gateway de Aplicativo do Azure.
Baixe um Arquivo do Visio desse diagrama.
O usuário envia uma solicitação para um nome de domínio (como, por exemplo,
https://contoso-web-a1bc2de3fh4ij5kl.z01.azurefd.net
), que é resolvido para perfil do Azure Front Door. Essa solicitação é criptografada com um certificado curinga (*.azurefd.net
) emitido para todos os subdomínios do Azure Front Door. O Azure Front Door valida a solicitação em relação às políticas de firewall de aplicativo Web, seleciona a origem mais rápida (com base na integridade e latência) e usa DNS público para resolver o endereço IP de origem (instância do Azure Application Gateway).O Azure Front Door encaminha a solicitação para a instância de Gateway de Aplicativo apropriada selecionada, que serve como o ponto de entrada do selo regional. O tráfego flui pela internet. O Azure Front Door garante que o tráfego para a origem seja criptografado.
Considere um método para garantir que a instância do Gateway de Aplicativo aceite apenas o tráfego da instância do Front Door. Uma abordagem é usar um grupo de segurança de rede na sub-rede que contém o Application Gateway. As regras podem filtrar o tráfego de entrada (ou saída) com base em propriedades como Origem, Porta, Destino. A propriedade Origem permite definir uma marca de serviço interna que indica endereços IP para um recurso do Azure. Essa abstração facilita a configuração e a manutenção da regra e o controle de endereços IP. Além disso, considere utilizar o cabeçalho
X-Azure-FDID
, que o Azure Front Door adiciona à solicitação antes de enviá-la para a origem, para garantir que a instância do Gateway de Aplicativo aceite apenas o tráfego da instância do Front Door. Para obter mais informações sobre cabeçalhos do Front Door, confira Suporte de protocolo para cabeçalhos HTTP no Azure Front Door.
Considerações sobre recursos compartilhados
Embora o foco desse cenário seja o uso de várias instâncias do Kubernetes espalhadas por várias regiões do Azure, faz sentido ter alguns recursos compartilhados em todas as instâncias. Uma abordagem possível é usar um único arquivo Bicep para implantar todos os recursos compartilhados e então outro para implantar cada selo regional. Esta seção detalha cada um desses recursos compartilhados e considerações para usar cada um em várias instâncias do AKS.
Registro de Contêiner
O Registro de Contêiner do Azure é usado nesta arquitetura para fornecer serviços de imagem de contêiner. O cluster extrai imagens de contêiner do registro. Considere os itens a seguir ao trabalhar com Registro de Contêiner do Azure em uma implantação de cluster de várias regiões.
Disponibilidade geográfica
Posicione um registro de contêiner em cada região na qual um cluster do AKS é implantado. Essa abordagem permite operações de rede de baixa latência, possibilitando transferências de camadas de imagem rápidas e confiáveis. Isso também significa que você tem vários pontos de extremidade de serviço de imagem para fornecer disponibilidade quando os serviços regionais não estiverem disponíveis. Usar a funcionalidade de replicação geográfica do Registro de Contêiner do Azure permite que você gerencie um registro de contêiner que é replicado automaticamente para várias regiões.
Considere criar um único registro, com réplicas em cada região do Azure que contém clusters. Para obter mais informações sobre replicação do Registro de Contêiner do Azure, confira Replicação geográfica no Registro de Contêiner do Azure.
Imagem mostrando várias réplicas do Registro de Contêiner do Azure de dentro do portal do Azure.
Acesso ao cluster
Cada cluster do AKS requer acesso ao registro de contêiner para que ele possa efetuar pull de camadas de imagem de contêiner. Há várias maneiras de estabelecer o acesso ao Registro de Contêiner do Azure. Nesta arquitetura, uma identidade gerenciada é criada para cada cluster, que recebe a função AcrPull
no registro de contêiner. Para obter mais informações e recomendações sobre o uso de identidades gerenciadas para acesso ao Registro de Contêiner do Azure, consulte arquitetura de referência de linha de base do AKS.
ssa configuração é definida no arquivo Bicep do carimbo do cluster, para que cada vez que um novo carimbo for implantado, a nova instância do AKS receba acesso. Como o registro de contêiner é um recurso compartilhado, certifique-se de que suas implantações incluam a ID do recurso do registro de contêiner como um parâmetro.
Azure Monitor
Ao projetar uma solução de monitoramento para uma arquitetura de várias regiões, é importante considerar o acoplamento entre cada carimbo. Você pode implantar um único workspace do Log Analytics, compartilhado por cada cluster do Kubernetes. Assim como com os outros recursos compartilhados, defina seu carimbo regional para consumir informações sobre o único espaço de trabalho do Log Analytics compartilhado globalmente e conecte cada cluster regional a esse espaço de trabalho compartilhado. Quando cada cluster regional emite logs de diagnóstico para esse único workspace do Log Analytics, você pode usar os dados, juntamente com as métricas de recursos, para criar relatórios e painéis com mais facilidade que ajudam a entender como toda a solução multirregional está sendo executada.
Porta da frente do Azure
O Azure Front Door é usado para balancear a carga e rotear o tráfego para cada cluster do AKS. O Azure Front Door também habilita o roteamento global de camada 7. Esses recursos são necessários para esse cenário.
Configuração do cluster
À medida que cada instância regional do AKS é adicionada, o Gateway de Aplicativo implantado junto com o cluster do Kubernetes precisa ser registrado como uma origem no Azure Front Door, o que o torna disponível para roteamento. Essa operação requer uma atualização para sua infraestrutura como ativos de código. Como alternativa, essa operação pode ser desacoplada da configuração de implantação e gerenciada usando ferramentas como a CLI do Azure.
Certificados
O Azure Front Door não dá suporte a origens usando certificados autoassinados, mesmo em ambientes de desenvolvimento ou teste. Para habilitar o tráfego HTTPS, você precisa criar seu certificado TLS/SSL assinado por uma AC (autoridade de certificação). Para obter informações sobre outras ACs compatíveis com o Front Door, confira Autoridades de certificado permitidas para habilitar HTTPS personalizado no Azure Front Door.
Para testes ou para clusters de não produção, considere o uso do Certbot para criar um certificado Let's Encrypt Authority X3 para cada um dos gateways de aplicativo.
Ao planejar um cluster de produção, use o método preferido da sua organização para obter certificados TLS.
Segurança
A segurança fornece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Lista de verificação de revisão de design parade segurança.
Controle de acesso do cluster
Conforme discutido na arquitetura de referência de linha de base do AKS, recomendamos que você use o Microsoft Entra ID como provedor de identidade para seus clusters. Os grupos do Microsoft Entra podem ser usados para controlar o acesso aos recursos de cluster.
Ao gerenciar-se vários clusters, é preciso decidir sobre um esquema de acesso. As opções incluem:
- Crie um grupo de acesso global em todo o cluster em que os membros possam acessar todos os objetos em todas as instâncias do Kubernetes no cluster. Essa opção fornece necessidades de administração mínimas. No entanto, concede privilégios significativos a qualquer membro do grupo.
- Crie um grupo de acesso individual para cada instância do Kubernetes que seja usada para conceder acesso a objetos em uma instância de cluster individual. Com essa opção, a sobrecarga administrativa aumenta. No entanto, ele também fornece acesso de cluster mais granular.
- Defina os controles de acesso granulares para tipos de objeto e namespaces do Kubernetes e correlacione os resultados a uma estrutura de grupo Microsoft Entra. Com essa opção, a sobrecarga administrativa aumenta significativamente. No entanto, ele fornece acesso granular não apenas a cada cluster, mas aos namespaces e APIs do Kubernetes encontrados em cada cluster.
Para acesso administrativo, considere criar um grupo do Microsoft Entra para cada região. Conceda a cada grupo acesso total ao selo de cluster correspondente nessa região. Feito isso, os membros de cada grupo terão acesso administrativo aos clusters correspondentes.
Para obter mais informações sobre como gerenciar o acesso ao cluster do AKS com o Microsoft Entra ID, consulte Integração do Microsoft Entra com o AKS.
Segurança dos recursos da frota
Quando você usa uma frota para centralizar aspectos do gerenciamento de cluster, é importante proteger os recursos da frota para evitar o uso indevido. Os recursos de frota usam o controle de acesso baseado em função do Azure e você pode conceder permissões de frota a um conjunto restrito de administradores. Siga o princípio de menor privilégio e conceda o menor acesso possível ao recurso de frota (o plano de controle da frota).
Se sua frota usar um cluster de hub, considere as seguintes recomendações extras:
- Avalie as atribuições de função que você cria no cluster do hub (as atribuições de função do plano de dados ). Essas atribuições de função concedem acesso aos recursos do Kubernetes que a frota cria. Atribuições de função de escopo para um namespace do Kubernetes individual sempre que possível.
- Use um cluster de hub privado para restringir a conectividade com a Internet. No entanto, verifique se a arquitetura de rede permite que os clusters membros cheguem ao cluster do hub.
Dados, estado e cache
Ao usar um conjunto globalmente distribuído de clusters AKS, considere a arquitetura do aplicativo, processo ou outras cargas de trabalho que podem ser executadas no cluster. Se as cargas de trabalho baseadas em estado forem distribuídas pelos clusters, elas precisarão acessar um armazenamento de estado? Se um processo for recriado em outro lugar do cluster devido a uma falha, a carga de trabalho ou o processo continuará a ter acesso a um repositório de estado dependente ou à solução de cache? O estado pode ser armazenado de várias maneiras, mas é complexo de gerenciar, mesmo em um único cluster do Kubernetes. A complexidade aumentará ao adicionar vários clusters do Kubernetes. Devido a preocupações de acesso regional e complexidade, considere criar os aplicativos para usar um serviço de repositório de estado distribuído globalmente.
O design dessa arquitetura não inclui configuração para questões de estado. Se você executar um único aplicativo lógico em vários clusters do AKS, considere arquitetar sua carga de trabalho para usar um serviço de dados distribuído globalmente, como o Azure Cosmos DB. O Azure Cosmos DB é um sistema de banco de dados distribuído globalmente que permite ler e gravar dados das réplicas locais do banco de dados, e o serviço do Cosmos DB gerencia a replicação geográfica para você. Para obter mais informações, confira Azure Cosmos DB.
Se sua carga de trabalho utilizar uma solução de cache, certifique-se de arquitetar seus serviços de cache para que eles permaneçam funcionais mesmo durante eventos de failover. Certifique-se de que a carga de trabalho em si seja resiliente ao failover relacionado ao cache e que as soluções de cache estejam presentes em todas as instâncias regionais do AKS.
Excelência operacional
A Excelência operacional abrange os processos de operações que implantam uma aplicação e as mantêm em execução em produção. Para obter mais informações, consulte Lista de verificação de revisão de design para Excelência Operacional.
Quando você opera um ambiente de vários clusters com um recurso de frota, o monitoramento se torna mais desafiador. Da mesma forma, considere como você coordenará as atualizações para os componentes de cluster do AKS.
Monitorar clusters e cargas de trabalho
A revisão manual de dashboards e logs pode se tornar difícil à medida que o número de clusters aumenta, portanto, considere como você agregará sistematicamente logs e métricas.
O recurso de insights de Contêiner do Azure Monitor é a ferramenta recomendada para monitorar e entender o desempenho e a integridade de suas cargas de trabalho de cluster e contêiner. O Insights de contêiner utiliza um espaço de trabalho do Log Analytics para armazenar dados de log e as Métricas do Azure Monitor para armazenar dados numéricos de séries temporais. As métricas do Prometheus também podem ser coletadas pelo Container Insights e os dados podem ser enviados para o serviço gerenciado para Prometheus do Azure Monitor ou Logs do Azure Monitor. Para obter mais informações, consulte Arquitetura de referência de linha de base do AKS.
Você também pode definir as configurações de diagnóstico de cluster do AKS para coletar e analisar logs de recursos dos componentes do plano de controle do AKS e encaminhar para um espaço de trabalho do Log Analytics.
Para saber mais sobre como configurar workspaces do Azure Monitor em um ambiente de vários clusters, consulte o Azure Monitor.
Monitorar as operações da frota
Quando o Fleet Manager orquestra uma execução de atualização, você pode monitorar o progresso da execução conforme ela progride entre clusters. Os dados são armazenados no Azure Resource Graph e podem ser exportados para o Azure Monitor para alertas e armazenamento.
Se você optar por usar o Fleet Manager para propagação de carga de trabalho, poderá monitorar a distribuição usando o portal do Azure ou o kubectl.
Você também pode coletar logs de recursos do recurso de frota e encaminhá-los para um workspace do Log Analytics.
Aplicar atualizações em toda a frota
Nesta arquitetura de referência, o Fleet Manager aplica atualizações de versão do Kubernetes e atualizações de imagem de nó em toda a sua frota. Você pode especificar estratégias de atualização que configuram como as atualizações são distribuídas em seus clusters. Além disso, o Fleet Manager respeita as janelas de manutenção em cada cluster, portanto, é uma boa prática definir as janelas de manutenção apropriadas para cada cluster. As janelas de manutenção em cada cluster podem ser diferentes quando você usa clusters em várias regiões geográficas e, portanto, em fusos horários diferentes.
Para obter mais informações, consulte Atualizar o Kubernetes e imagens de nó em vários clusters de membros.
Otimização de custos
A Otimização de Custos trata-se de procurar maneiras de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Lista de verificação de revisão de design parade Otimização de Custos.
Use a calculadora de preços do Azure para estimar os custos para os serviços usados na arquitetura. Outras práticas recomendadas são descritas na seção Otimização de custos no Microsoft Azure Well-Architected Framework e opções de configuração específicas de otimização de custos no artigo Otimizar custos .
Habilite a análise de custo do AKS para alocação de custos de infraestrutura de cluster granular por construções específicas do Kubernetes.
Próximas etapas
- Zonas de disponibilidades do AKS.
- Gerenciador de Frota de Kubernetes do Azure
- Replicação geográfica no Registro de Contêiner do Azure
- Regiões Emparelhadas do Azure
Recursos relacionados
- Revisão do Azure Well-Architected Framework para o Serviço de Kubernetes do Azure (AKS)
- Arquitetura de linha de base de um cluster do AKS (Serviço de Kubernetes do Azure)
- Pipeline de CI/CD para cargas de trabalho baseadas em contêiner
- Integração no Microsoft Entra com o AKS
- Documentação do Azure Front Door
- Documentação do Azure Cosmos DB