Conhecer a documentação e os casos de uso de rede do GKE

A rede no Google Kubernetes Engine (GKE) abrange um amplo conjunto de conceitos, incluindo pods, serviços, DNS, balanceamento de carga, segurança e gerenciamento de endereços IP. Embora a documentação explique cada recurso em detalhes, pode ser difícil saber por onde começar ao enfrentar um problema do mundo real.

Este documento ajuda você a navegar pela documentação de rede do GKE vinculando desafios comuns aos recursos e seções que os resolvem. Cada caso de uso apresenta um cenário, identifica o desafio e aponta para a documentação relevante. Este documento é destinado a arquitetos de nuvem, desenvolvedores e equipes de operações que precisam entender e resolver desafios comuns de rede no GKE.

Se você já conhece os desafios comuns de rede e prefere se aprofundar nos detalhes técnicos, confira os seguintes recursos para criar seu conhecimento básico sobre a rede do GKE:

Caso de uso: projetar a base de rede para o GKE

Neste caso de uso, você é um arquiteto de nuvem que precisa projetar uma base de rede escalonável, segura e confiável para uma nova plataforma do GKE.

Desafio: evitar o esgotamento de endereços IP

Cenário:a complexidade e o uso do seu aplicativo devem aumentar. Por isso, você precisa projetar uma rede que possa ser escalonada para lidar com o aumento do tráfego e oferecer suporte ao crescimento de pods, serviços e nós. Também é necessário planejar a alocação de endereços IP para evitar o esgotamento.

Solução:planeje seu esquema de endereçamento IP para considerar o número de nós, pods e serviços que você vai precisar. Isso inclui escolher intervalos de endereços IP adequados para cada um, considerando a densidade de pods e evitando sobreposições com outras redes. Para mais informações, consulte Gerenciar a migração de endereços IP no GKE.

Desafio: aplique a segurança por defesa em profundidade

Cenário:você precisa proteger os perímetros do cluster e aplicar regras de confiança zero e entre pods.

Solução:use políticas de firewall para perímetros de cluster. Para mais informações, consulte Controlar a comunicação entre pods e serviços usando políticas de rede.

Desafio: encaminhar tráfego para diferentes tipos de aplicativos

Cenário:você precisa garantir que outros serviços e usuários possam acessar diferentes tipos de aplicativos, como back-ends particulares e aplicativos HTTP(S) públicos.

Solução:use balanceadores de carga internos para back-ends particulares. Para aplicativos HTTP(S) públicos, use a API Entrada ou Gateway. Para mais informações, consulte Sobre o balanceamento de carga no GKE.

Desafio: usar ferramentas de observabilidade para monitorar e resolver problemas de carga de trabalho

Cenário:você precisa corrigir problemas com o tráfego de rede e entender e monitorar os fluxos de tráfego do GKE para diagnosticar problemas de maneira eficaz.

Solução:implemente ferramentas de observabilidade para monitorar e resolver problemas de tráfego de rede. Para mais informações, consulte Observar o tráfego usando a observabilidade do GKE Dataplane V2.

Caso de uso: expor um novo microsserviço

Neste caso de uso, você é um desenvolvedor que implanta um novo microsserviço no GKE. Você precisa tornar o microsserviço acessível a outros serviços no cluster e, mais tarde, a clientes externos.

Desafio: fornecer um endpoint estável para comunicação entre pods

Cenário:seu aplicativo precisa que os pods se comuniquem com outros pods, mas os endereços IP dinâmicos usados pelos pods tornam essa comunicação não confiável.

Solução:crie um serviço do Kubernetes. Um serviço ClusterIP fornece um endereço IP virtual e um nome DNS estáveis, com balanceamento de carga entre os pods. Para mais informações, consulte Entender os serviços do Kubernetes.

Desafio: expor o serviço para acesso externo

Cenário:o microsserviço precisa ser acessível pela Internet para uma demonstração.

Solução:crie um serviço LoadBalancer. O GKE provisiona um balanceador de carga de rede de passagem externa regional com um endereço IP público. Para o tráfego HTTP(S), considere usar Entrada ou o Gateway, que oferecem recursos da camada 7. Para mais informações, consulte Sobre os serviços do LoadBalancer.

Desafio: atribuir um URL permanente e fácil de usar

Cenário:o serviço precisa de um nome de domínio estável para os clientes.

Solução:reserve um endereço IP estático e configure o DNS para um domínio personalizado. Para mais informações, consulte Configurar nomes de domínio com endereços IP estáticos.

Desafio: gerenciar o roteamento de tráfego avançado

Cenário:à medida que seu aplicativo cresce, você precisa de um controle mais sofisticado sobre como o tráfego é roteado. Por exemplo, talvez seja necessário fazer o seguinte:

  • Hospede vários sites (como api.example.com e shop.example.com) em um único balanceador de carga para reduzir custos.
  • Encaminhar solicitações para diferentes serviços com base no caminho do URL (por exemplo, enviar / para a carga de trabalho de front-end e /api/v1 para a carga de trabalho de back-end).
  • Proteja seu aplicativo com HTTPS gerenciando certificados TLS.
  • Implante novos recursos com segurança em etapas usando versões canário, em que você envia uma pequena parte do tráfego para uma nova versão antes de um lançamento completo.

Solução:use a API Gateway. A implementação da API Gateway pelo GKE oferece uma maneira eficiente e padronizada de gerenciar esse tipo de tráfego norte-sul, com suporte a recursos avançados, como roteamento baseado em caminhos, correspondência de cabeçalhos e divisão de tráfego. Para mais informações, consulte Sobre a API Gateway.

Caso de uso: escalonar a descoberta de serviços para um aplicativo em crescimento

À medida que o tráfego e a complexidade do aplicativo baseado em microsserviços aumentam, as consultas de DNS entre os serviços crescem significativamente. Embora os desenvolvedores precisem entender como criar aplicativos resilientes nesse ambiente, as equipes de plataforma e operações geralmente são responsáveis por implementar soluções de rede escalonáveis.

Desafio: ativar a comunicação entre serviços

Cenário:os pods precisam de uma maneira confiável de localizar outros serviços.

Solução:o GKE oferece um serviço de DNS no cluster (como kube-dns ou Cloud DNS) que resolve nomes de DNS estáveis para serviços, permitindo uma comunicação confiável entre pods. Para mais informações, consulte Descoberta de serviços e DNS.

Desafio: melhorar o desempenho do DNS em grande escala

Cenário:o alto volume de consultas causa atrasos na pesquisa.

Solução:ative o NodeLocal DNSCache. Cada nó armazena em cache as consultas DNS localmente, reduzindo a latência. Para mais informações, consulte Visão geral da configuração do NodeLocal DNSCache.

Desafio: fornecer descoberta de serviços em toda a VPC

Cenário:as VMs do Compute Engine precisam acessar serviços dentro do cluster.

Solução:integre ao Cloud DNS para que os registros DNS de serviço sejam resolvidos em toda a VPC. Para mais informações, consulte Usar o Cloud DNS para GKE.

Caso de uso: proteger um aplicativo de várias camadas

Neste caso de uso, você está em uma equipe de engenharia de plataforma que está implantando um aplicativo de três níveis (front-end, faturamento, banco de dados) e precisa aplicar comunicação de confiança zero.

Desafio: aplicar regras de trânsito rígidas

Cenário:apenas serviços específicos podem se comunicar entre si.

Solução:ative a aplicação da política de rede e aplique políticas default deny. Em seguida, defina regras de permissão explícitas (por exemplo, o front-end permite o tráfego para o faturamento, que permite o tráfego para o banco de dados). Para mais informações, consulte Configurar políticas de rede para aplicativos.

Desafio: auditar e verificar políticas de rede

Cenário:a segurança exige prova de aplicação e visibilidade.

Solução:ative o registro de políticas de rede para registrar as conexões permitidas e negadas. Para mais informações, consulte Usar o registro em log da política de rede.

Desafio: expor um serviço de forma particular aos consumidores

Cenário:um serviço de back-end, como um banco de dados ou uma API, precisa estar acessível a consumidores em outras redes VPC sem exposição à Internet pública ou lidar com complexidades de peering de VPC.

Solução:use o Private Service Connect para publicar o serviço. Em seguida, os consumidores podem criar um endpoint do PSC na própria VPC para acessar seu serviço de maneira privada e segura. Para mais informações, consulte Expor serviços com o Private Service Connect.

Caso de uso: alcançar alta disponibilidade em vários clusters

Neste caso de uso, você é um SRE que executa cargas de trabalho para uma empresa de e-commerce em vários clusters do GKE em diferentes regiões para melhorar a confiabilidade.

Desafio: ativar a comunicação entre clusters

Cenário:os serviços em um cluster precisam descobrir e chamar serviços em outro.

Solução:use os serviços de vários clusters (MCS, na sigla em inglês) do GKE para criar um nome DNS global e encaminhar o tráfego automaticamente para back-ends íntegros. Para mais informações, consulte Serviços de vários clusters.

Desafio: garantir um failover resiliente

Cenário:se um serviço regional ficar indisponível, o tráfego precisará ser redirecionado automaticamente.

Solução:o MCS oferece descoberta de serviços com reconhecimento de integridade, permitindo que os clientes resolvam um único nome DNS para um back-end íntegro no cluster disponível mais próximo. Essa abordagem permite failover resiliente. Para mais informações, consulte Serviços de vários clusters.

Caso de uso: criar um ambiente multilocatário seguro e eficiente do GKE

Como parte de uma equipe de engenharia de plataforma, você fornece clusters do GKE para várias equipes de aplicativos. Você precisa centralizar o controle da rede, conservar endereços IP e aplicar segurança rigorosa.

Desafio: centralizar o controle da rede

Cenário:várias equipes de apps precisam dos próprios clusters, mas a rede precisa ser gerenciada de forma centralizada.

Solução:use a VPC compartilhada. Os recursos de rede residem em um projeto host, mas os clusters de apps são executados em projetos de serviço. Para mais informações, consulte Configurar clusters com a VPC compartilhada.

Desafio: gerenciar com eficiência endereços IP limitados

Cenário:o espaço de endereço IP é limitado e precisa ser usado de forma eficiente.

Solução:ajuste o número máximo de pods por nó e, se necessário, use intervalos não RFC 1918 para endereços IP de pods. Para mais informações, consulte Gerenciar a migração de endereços IP no GKE.

Desafio: usar um dataplane moderno e seguro e provisionar clusters com o novo dataplane

Cenários:

  • A empresa exige alto desempenho e aplicação de políticas integrada para oferecer suporte a cargas de trabalho exigentes e uma postura de segurança de confiança zero. Por exemplo, você pode estar executando microsserviços em grande escala sensíveis à latência de rede ou precisar aplicar limites de segurança rigorosos entre aplicativos em um cluster multitenant para atender aos requisitos de compliance regulatório.
  • Os clusters precisam ser configurados para usar um plano de dados de rede moderno para alta performance e segurança, e precisam ser implantados na estrutura de rede gerenciada centralmente da organização.

Solução:use o GKE Dataplane V2, que é baseado em eBPF e oferece alto desempenho e aplicação integrada de políticas de rede. Para mais informações, consulte GKE Dataplane V2.

Caso de uso: observar e resolver problemas de tráfego

Como um SRE, você está investigando por que um serviço de finalização de compra não consegue se conectar a um serviço de pagamento.

Desafio: resolver problemas de conectividade

Cenário:os pacotes são descartados, mas a causa não está clara.

Solução:ative a observabilidade do GKE Dataplane V2. Métricas como hubble_drop_total confirmam que os pacotes foram negados. Para mais informações, consulte Solução de problemas com o Hubble.

Desafio: identificar a causa principal dos pacotes descartados

Cenário:depois de confirmar que os pacotes de rede estão sendo descartados (por exemplo, usando hubble_drop_total), identifique qual política de rede específica está bloqueando o tráfego entre os serviços.

Solução:use a interface de linha de comando ou a UI do Hubble para rastrear fluxos. A interface do Hubble oferece uma representação visual do tráfego, destacando a política mal configurada exata que está negando a conexão. Essa visualização permite que a equipe identifique rapidamente a causa raiz do problema e corrija a política. Para mais informações, consulte Observar o tráfego usando a observabilidade do GKE Dataplane V2.

Caso de uso completo: implante e dimensione um aplicativo de varejo seguro

Nesse cenário de ponta a ponta, uma equipe de engenharia de plataforma cria uma plataforma GKE padronizada para várias equipes de aplicativos. A equipe implanta e otimiza um aplicativo de varejo de três camadas (front-end, faturamento, banco de dados). Esse processo inclui proteger, dimensionar, melhorar o desempenho para cargas de trabalho de machine learning e integrar dispositivos de segurança avançada.

O diagrama a seguir ilustra a arquitetura de ponta a ponta de um aplicativo de varejo seguro e de várias camadas implantado no GKE. A arquitetura evolui em várias fases:

  • Fase 1:crie uma configuração básica usando a VPC compartilhada e o GKE Dataplane V2.
  • Fase 2:exponha o aplicativo usando a API Gateway e serviços de vários clusters para alta disponibilidade.
  • Fase 3:acelere as tarefas de ML usando a gVNIC e a rede de Nível 1.
  • Fase 4:implante dispositivos de segurança avançada usando o suporte a várias redes.
Diagrama
  mostrando a arquitetura completa de um aplicativo de varejo seguro e de várias camadas
  no GKE, ilustrando componentes de rede em seis fases de
  implantação e escalonamento.
Figura 1. Uma arquitetura de ponta a ponta para um aplicativo de varejo seguro e de várias camadas no GKE, destacando os principais componentes de rede usados em cada fase de implantação e escalonamento. Os detalhes de cada fase são descritos nas seções a seguir.

Fase 1: criar a base da plataforma

Desafio:centralizar a rede para várias equipes de aplicativos e alocar endereços IP suficientes para lidar com o escalonamento.

Solução:

Fase 2: implante e proteja o aplicativo

Desafio:garantir uma comunicação confiável entre serviços e aplicar a segurança de confiança zero.

Solução:

Fase 3: publicar o aplicativo e escalonar para crescimento

Desafio:fornecer acesso externo e reduzir a latência busca DNS à medida que o tráfego aumenta.

Solução:

Fase 4: alcançar alta disponibilidade e resolver problemas

Desafio:garantir o failover regional e depurar o tráfego descartado.

Solução:

Fase 5: acelere as cargas de trabalho de machine learning

Desafio:eliminar gargalos de rede para treinamento de modelo baseados em GPU.

Solução:

  • Ative a gVNIC para aumentar a largura de banda.
  • Configure a rede de nível 1 em nós críticos para maximizar a capacidade.

Fase 6: implante dispositivos de segurança avançada

Desafio:implante um firewall e SDI de terceiros com gerenciamento e tráfego de plano de dados separados com latência ultrabaixa.

Solução:

A seguir