Conheça 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 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 direciona você 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 diretamente nos detalhes técnicos, explore 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 aplicativo devem aumentar. Portanto, é necessário 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. Você também precisa 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 de que você vai precisar. Esse plano inclui a escolha de 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: aplicar a segurança de defesa em profundidade

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

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: rotear o 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 solucionar 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 solucionar 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 estável e um nome DNS, com balanceamento de carga entre 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 estar acessível na 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 tráfego HTTP(S), considere usar Entrada ou o Gateway, que fornecem recursos da camada 7. Para mais informações, consulte Sobre os serviços 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 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:

  • Hospedar vários sites (como api.example.com e shop.example.com) em um único balanceador de carga para economizar custos.
  • Roteie solicitações para diferentes serviços com base no caminho do URL (por exemplo, enviando / 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 uma implantação completa.

Solução:use a API Gateway. A implementação da API Gateway do GKE oferece uma maneira poderosa e padronizada de gerenciar esse tipo de tráfego norte-sul, com suporte a recursos avançados, como roteamento baseado em caminho, correspondência de cabeçalho 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 seu aplicativo baseado em microsserviços cresce em tráfego e complexidade, as consultas DNS entre serviços aumentam 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 fornece um serviço DNS no cluster (como kube-dns ou Cloud DNS) que resolve nomes 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 a performance do DNS em 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 Configurar o NodeLocal DNSCache visão geral.

Desafio: fornecer descoberta de serviços na VPC

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

Solução:integre-se ao Cloud DNS para que os registros DNS do serviço sejam resolvidos na VPC. Para mais informações, acesse 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 camadas (front-end, faturamento, banco de dados) e precisa aplicar a comunicação de confiança zero.

Desafio: aplicar regras de tráfego rigorosas

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

Solução:ative a aplicação da política de rede e aplique políticas de default deny, depois defina regras de permissão explícitas (por exemplo, o front-end permite o tráfego para o faturamento, o faturamento 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 a geração de registros de políticas de rede para registrar conexões permitidas e negadas. Para mais informações, consulte Usar a geração de registros de políticas de rede.

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

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

Solução:use o Private Service Connect para publicar o serviço. Os consumidores podem criar um endpoint do PSC na própria VPC para acessar seu serviço de maneira particular 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 comércio eletrônico 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) do GKE para criar um nome DNS global e rotear 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 fornece 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 um failover resiliente. Para mais informações, consulte Serviços de vários clusters.

Caso de uso: criar um ambiente do GKE multitenant seguro e eficiente

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 de rede, conservar endereços IP e aplicar segurança rigorosa.

Desafio: centralizar o controle de rede

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

Solução:use a VPC compartilhada. Os recursos de rede residem em um projeto host, mas os clusters de aplicativos 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 com eficiência.

Solução: ajuste o número máximo de pods por nó e, se necessário, use intervalos que não sejam da 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 plano de dados moderno e seguro e provisionar clusters com o novo plano de dados

Cenários :

  • A empresa exige alta performance 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, talvez você esteja executando microsserviços em grande escala que são sensíveis à latência de rede ou precise aplicar limites de segurança rigorosos entre aplicativos em um cluster multitenant para atender aos requisitos de conformidade regulatória.
  • 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 alta performance e aplicação de políticas de rede integrada. Para mais informações, consulte GKE Dataplane V2.

Caso de uso: observar e solucionar 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 são negados. Para mais informações, consulte Solucionar problemas com o Hubble.

Desafio: identificar a causa raiz 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 serviços.

Solução:use a interface de linha de comando ou a UI do Hubble para rastrear fluxos. A interface do Hubble fornece 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 de ponta a ponta: implantar e escalonar um aplicativo de varejo seguro

Neste cenário de ponta a ponta, uma equipe de engenharia de plataforma cria uma plataforma padronizada do GKE 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, escalonar, melhorar a performance para cargas de trabalho de machine learning e integrar dispositivos de segurança avançados.

O diagrama a seguir ilustra a arquitetura de ponta a ponta de um aplicativo de varejo seguro 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 camada 1.
  • Fase 4:implante dispositivos de segurança avançados usando o suporte a várias redes.
O diagrama mostra um exemplo de arquitetura para 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 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: implantar e proteger o aplicativo

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

Solução :

Fase 3: expor o aplicativo e escalonar para crescimento

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

Solução :

Fase 4: alcançar alta disponibilidade e solucionar problemas

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

Solução :

Fase 5: acelerar cargas de trabalho de machine learning

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

Solução :

  • Ative a gVNIC para maior largura de banda.
  • Configure rede de camada 1 em nós críticos para capacidade máxima.

Fase 6: implantar dispositivos de segurança avançados

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

Solução :

A seguir