Este documento descreve como os gateways de vários clusters operam no Google Kubernetes Engine (GKE). Os gateways de vários clusters são uma solução de rede avançada que permite gerenciar o tráfego de serviços implantados em vários clusters do GKE.
Este documento é destinado a arquitetos de nuvem e especialistas em redes que projetam e arquitetam a rede da organização. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no Google Cloud conteúdo, consulte Tarefas e papéis de usuário comuns do GKE Enterprise.
Visão geral
O gateway de vários clusters é configurado usando os recursos da API Gateway do Kubernetes. O controlador de gateway do GKE observa esses recursos (gateway, HTTPRoute) e provisiona e mantém automaticamente a infraestrutura global de balanceamento de carga necessária Google Cloud . Essa infraestrutura oferece gerenciamento avançado de tráfego para serviços implantados em vários clusters do GKE em uma frota. Os gateways de vários clusters usam Google Cloud's global infraestrutura de balanceamento de carga para fornecer um ponto de entrada único e unificado para seus aplicativos. Essa abordagem tem os seguintes benefícios:
- Simplifica o gerenciamento
- Melhora a confiabilidade
- Ativa recursos avançados de gerenciamento de tráfego
Recursos de gerenciamento de tráfego
Os gateways de vários clusters oferecem recursos avançados para gerenciar o tráfego em vários clusters. É possível implementar estratégias de roteamento sofisticadas, como lançamentos em fases e estratégias azul-verde, para implantar mudanças com segurança. Para um controle refinado, use a correspondência baseada em cabeçalho para testar mudanças com uma pequena porcentagem de tráfego ou divida o tráfego por peso para mudar gradualmente as solicitações entre diferentes back-ends de cluster.
Os gateways de vários clusters também permitem espelhar o tráfego, o que envia uma cópia das solicitações de usuários ativos para um novo serviço para testar a performance sem afetar os usuários. Para garantir a confiabilidade e evitar sobrecargas, os gateways de vários clusters oferecem suporte a failover baseado em integridade e balanceamento de carga baseado em capacidade, que distribui solicitações com base na capacidade definida dos serviços.
Como o gateway de vários clusters funciona
Todos os clusters do GKE que participam de uma configuração de gateway de vários clusters precisam ser registrados em uma frota. Uma frota fornece um agrupamento lógico de clusters, o que permite gerenciamento e comunicação consistentes entre os clusters. Um cluster do GKE na frota é designado como o cluster de configuração.
O cluster de configuração atua como um ponto de controle centralizado para a configuração do gateway de vários clusters. Implante todos os recursos da API Gateway de vários clusters, como Gateway e HTTPRoute, apenas nesse cluster designado.
O controlador de gateway do GKE observa o servidor da API Kubernetes do cluster de configuração para esses recursos.
Para escolher um cluster de configuração, considere um cluster regional ou outro de alta disponibilidade cluster do GKE. Isso ajuda a garantir que as atualizações dos recursos da API Gateway possam ser reconciliadas continuamente pelo controlador.
O controlador de gateway de vários clusters usa serviços de vários clusters (MCS, na sigla em inglês) para descobrir e acessar serviços do Kubernetes em vários clusters do GKE em uma frota. O MCS é um recurso do GKE que permite a descoberta de serviços e a conectividade entre serviços executados em diferentes clusters do GKE em uma frota.
O MCG usa o MCS para descobrir quais serviços estão disponíveis em quais clusters para rotear o tráfego externo para os serviços. O controlador MCG usa recursos da API MCS para agrupar pods em um único serviço endereçável e que abrange vários clusters.
Com base nas configurações definidas nos recursos da API Gateway, o controlador de gateway do GKE fornece um balanceador de carga de aplicativo externo ou um balanceador de carga de aplicativo interno. Esse balanceador de carga serve como front-end do aplicativo e distribui o tráfego diretamente para os pods íntegros em toda a frota, independentemente da localização deles.
As etapas de alto nível a seguir descrevem o processo de implantação de um gateway de vários clusters:
Definir um gateway: em uma configuração de gateway de vários clusters, crie um recurso de gateway que defina o ponto de entrada do tráfego no cluster de configuração. O recurso de gateway especifica uma GatewayClass, que é um modelo para um tipo específico de balanceador de carga, como um balanceador de carga de aplicativo externo global ou um balanceador de carga de aplicativo interno regional. No GKE, as GatewayClasses a seguir implantam gateways de vários clusters:
gke-l7-global-external-managed-mc: provisiona um balanceador de carga de aplicativo externo global.gke-l7-regional-external-managed-mc: provisiona um balanceador de carga de aplicativo externo regional.gke-l7-cross-regional-internal-managed-mc: provisiona um balanceador de carga de aplicativo interno.gke-l7-rilb-mc: provisiona um balanceador de carga de aplicativo interno.gke-l7-gxlb-mc: provisiona um balanceador de carga de aplicativo clássico.
O gateway também define como o balanceador de carga detecta o tráfego de entrada, especificando quais listeners de rede (portas e protocolos) expor. Para mais informações sobre as classes de gateway com suporte do GKE, consulte Serviços de vários clusters.
Anexar HTTPRoutes ao gateway: os recursos HTTPRoute definem como o tráfego HTTP/S de entrada é roteado para serviços de back-end específicos. As HTTPRoutes são anexadas a recursos de gateway e especificam regras com base em nomes de host, caminhos, cabeçalhos e muito mais. A HTTPRoute também oferece suporte a recursos avançados de gerenciamento de tráfego, como divisão e espelhamento de tráfego.
Criar balanceador de carga: quando você implanta recursos de gateway e HTTPRoute, o controlador de gateway do GKE interpreta esses objetos da API e, por sua vez, configura dinamicamente a infraestrutura de Google Cloud balanceamento de carga necessária. O balanceador de carga direciona o tráfego para os pods corretos, independentemente do cluster em que os pods estão. Esse processo oferece uma maneira altamente eficiente e escalonável de rotear o tráfego.
Fluxo de tráfego
O diagrama a seguir ilustra como um gateway de vários clusters funciona como um balanceador de carga centralizado para aplicativos executados em dois clusters do GKE em regiões diferentes:
O comportamento do balanceador de carga é configurado com base nas regras definidas nos recursos HTTPRoute. Quando o tráfego do usuário chega ao endereço IP do balanceador de carga Google Cloud provisionado (conforme definido pelo recurso de gateway), o balanceador de carga, que é um proxy gerenciado pelo Google, roteia o tráfego. Esse proxy (um proxy do Google Front End ou um proxy regional) direciona o tráfego para o endpoint de serviço de back-end apropriado no cluster do GKE correto, com base nos seguintes critérios:
- Verificações de integridade
- Regras de divisão de tráfego
- Capacidade
O tráfego flui diretamente para o pod ideal no cluster selecionado.
A seguir
- Saiba como ativar gateways de vários clusters.
- Leia uma visão geral de como os gateways funcionam no GKE.