Visão geral
É possível controlar como o tráfego de rede flui no seu cluster do GKE usando o direcionamento de serviço do GKE. É possível definir regras para direcionar tipos específicos de tráfego para funções de rede que você implantou no seu cluster. O direcionamento de serviços do GKE é semelhante ao roteamento com base na política, em que você substitui o caminho normal do tráfego de rede.
Terminologia e conceitos
Esta página usa os seguintes conceitos:
Função de serviço (SF)
Uma função de serviço é um componente de software que funciona nos pacote de dados recebidos. Uma camada de serviço pode operar em qualquer camada do modelo OSI, começando pela camada 2 (camada de enlace de dados).
As funções de serviço podem ser amplamente categorizadas das seguintes maneiras:
- Firewalls para segurança
- Proxies para controlar o acesso
- Aceleração da WAN para melhorar a velocidade
- Inspeção profunda de pacotes (DPI) para análise de conteúdo
- Interceptação legal (IL) para vigilância cibernética e investigação
- Conversor de endereços de rede (NAT) para endereços IP particulares e públicos
- HTTP para enriquecimento de cabeçalho
- Balanceadores de carga para distribuição eficiente de tráfego
Terminologias alternativas para funções de serviço incluem:
- Dispositivos de contêiner
- Dispositivos virtuais
- Funções de rede virtualizadas (NFVs)
- Funções de rede conteinerizadas (CNFs, na sigla em inglês)
- Funções de rede nativas da nuvem (CNFs, na sigla em inglês)
No direcionamento de serviço, um objeto de serviço representa uma função de serviço (SF, na sigla em inglês).
Cadeia de funções de serviço (SFC. na sigla em inglês)
A cadeia de funções de serviço (SFC, na sigla em inglês) é uma série de funções de serviço. como firewalls, proxies ou balanceadores de carga vinculados para processar o tráfego de rede em uma ordem específica. Essa cadeia funciona como um pipeline, em que cada serviço executa uma tarefa específica no tráfego antes de passá-la para a próxima função.
A cadeia de funções de serviço (SFC) também é chamada de cadeia de serviços (SC).
No direcionamento de serviço, o objeto ServiceFunctionChain
representa uma função de serviço
SFC (na sigla em inglês).
Uma função de serviço opera independentemente de qualquer cadeia de funções de serviço. A função de serviço normalmente não sabe de quais cadeias de funções de serviço ela faz parte.
Direcionamento de serviços
O direcionamento de serviço encaminha pacotes para a função de serviço selecionada de uma maneira que seja totalmente transparente para a origem e o destino. Às vezes, esse conceito é chamado de "roteamento com base na política", "redirecionamento de tráfego" ou "encaminhamento de função de serviço". O direcionamento de serviço possibilita o roteamento transparente usando encapsulamento Geneve + NSH (consulte RFC 8926, RFC 8300 e Geneve + NSH IETF rascunho).
Algumas das características importantes do direcionamento de serviço incluem:
- Balanceamento de carga entre os pods de back-end de uma função de serviço: funções de serviço geralmente são executadas em vários pods para escalonabilidade e confiabilidade. O direcionamento de serviço distribui o tráfego de rede de entrada uniforme entre esses pods para evitar a sobrecarga de um único pod.
- Oferece suporte a afinidade de fluxo de 5 tuplas (todos os saltos intermediários devem ser estáveis para um determinado fluxo): um fluxo de cinco tuplas é uma maneira de identificar um fluxo específico de tráfego de rede com base no endereço IP de origem, na porta de origem, no endereço IP de destino, na porta de destino e no protocolo. O direcionamento de serviço garante que todos os pacotes dentro do mesmo fluxo sejam consistentemente direcionados para o mesmo conjunto de funções de serviço (saltos).
- Ativação de um caminho de dados de retorno simétrico: um caminho de dados de retorno simétrico significa que o tráfego de resposta segue o mesmo caminho de volta à origem que o tráfego de solicitação original seguiu. O direcionamento de serviço garante essa simetria, que é importante para alguns protocolos de rede e aplicativos.
Para qualquer tráfego de rede que esteja sendo direcionado pelo serviço, os pods de função de serviço intermediários lidam com todos os pacotes desse tráfego de rede específico, garantindo saltos intermediários consistentes e uma rota previsível. Os mesmos pods de função de serviço recebem o tráfego de retorno para garantir um fluxo de tráfego simétrico. Se o tráfego original for enviado para um destino dentro do mesmo cluster, o tráfego de retorno encontrará automaticamente um caminho de volta pela mesma cadeia de serviço. Se o tráfego original estiver fora do cluster, a função de serviço final na cadeia atrai o tráfego de volta para si usando a conversão de endereços de rede (SNAT) ou um proxy, que atua como intermediário.
Casos de uso
O direcionamento de serviço do GKE integra o roteamento com base na política aos seus clusters. Isso permite os seguintes casos de uso principais:
Serviços de segurança autogerenciados:
As organizações podem construir sua própria infraestrutura de segurança usando funções de rede conteinerizadas (CNFs), como firewalls virtuais (vFWs), firewalls virtuais de última geração (vNG-FWs) e sistemas de detecção de intrusões virtuais (vIDSs). O direcionamento de serviço garante que o tráfego seja roteado através desses CNFs antes de chegar ao destino pretendido, fornecendo uma camada de proteção e controle.
Provedores de segurança gerenciados (MSPs, na sigla em inglês):
Os MSPs podem usar o direcionamento de serviço do GKE para rotear seu tráfego por meio das cadeias de serviços de segurança baseadas na nuvem. Isso permite que eles ofereçam soluções de segurança abrangentes, incluindo funcionalidades de Secure Web Gateways (SWGs), SASE (Secure Access Service Edge) e SD-WAN (Software-Defined Wide Area Network).
Redes de telecomunicações e 5G:
O direcionamento de serviço gerencia fluxos de tráfego para diversas funções de rede em infraestruturas de telecomunicações e 5G. Você pode orquestrar roteadores virtuais (vRouters), controladores de borda de sessão virtual (vSBCs) e funções de rede central 5G para garantir gerenciamento eficiente de tráfego, balanceamento de carga e aplicação de políticas específicas de segurança ou qualidade de serviço.
Como o direcionamento de serviço funciona
Esta seção descreve como funcionam os vários componentes do direcionamento de serviço.
Função de serviço
Identifica o fluxo de tráfego de rede: o direcionamento de serviço do GKE identifica cada conexão de rede usando um ID de fluxo exclusivo, um hash de cinco tuplas do endereço IP de origem do pacote, porta de origem, endereço IP de destino, porta de destino e protocolo.
Garante a afinidade do fluxo: o direcionamento de serviço garante afinidade de fluxo direcionando todos os pacotes com o mesmo ID de fluxo através do mesmo caminho de Funções de Serviço (SFs).
Modifica pacotes para criar novos fluxos: se uma função de serviço modifica qualquer um dos campos de 5 tuplas de um pacote. Por exemplo, quando o NAT altera o endereço IP de origem, isso cria um novo fluxo.
Seleciona o tráfego para novos fluxos: o processo de seleção de tráfego avalia o novo fluxo para determinar o caminho dele pelas
Service Functions
restantes, possivelmente seguindo um trajeto diferente do fluxo original.Lidar com proxies e NATs como dois fluxos: o tráfego por proxies ou NATs é considerado como dois fluxos separados: origem para proxy/NAT e proxy/NAT para destino. O direcionamento de serviço não garante o mesmo caminho para esses dois fluxos.
Valida o endereço de origem: os SFs estão sempre sujeitos à validação do endereço de origem, mesmo para tráfego não direcionado pelo direcionamento de serviço. Se uma função de serviço originar um novo fluxo com um endereço IP de origem incompatível, esses pacotes serão descartados, a menos que seja explicitamente permitido.
Mantém a transparência do encapsulamento: o direcionamento de serviço usa o encapsulamento do Geneve para o tráfego entre SFs, mas os pods da função de serviço propriamente ditos não sabem disso. Os pacotes são descapulados antes de entrar no pod, simplificando o desenvolvimento da função de serviço.
Conexões existentes
Quando você cria um TrafficSelector
, o direcionamento de serviço o aplica automaticamente a qualquer conexão existente que corresponda aos critérios do seletor. Ela redireciona pacotes dessas conexões para as funções de serviço apropriadas. A função do serviço é responsável por gerenciar essas conexões em andamento. Uma
abordagem mais comum é descartar os pacotes e confiar no cliente para iniciar uma nova
conexão que se integra perfeitamente à cadeia de serviços, desde o início.
Ciclo de vida dos recursos
Os recursos TrafficSelector
e ServiceFunctionChain
foram excluídos
imediatamente após serem marcados para exclusão. Não há webhooks ou
finalizadores que impedem ou atrasam a exclusão de recursos.
Tráfego de pod para serviço
O direcionamento de serviço realiza a seleção de tráfego depois de resolver o endereço IP virtual do serviço. O tráfego direcionado a um serviço usando seu ClusterIP poderá ser selecionado para direcionamento de serviço se o endereço IP do pod de destino estiver dentro do CIDR especificado no campo .egress.to.ipBlock
depois que o endereço IP virtual for resolvido.
Aplicação da política de rede
O direcionamento de serviço não ignora NetworkPolicy
. A política de saída no pod de origem e a política de entrada no pod de destino ainda se aplicam ao tráfego selecionado para o direcionamento do serviço. No entanto, ele não está sujeito à restrição de NetworkPolicy
na entrada ou saída de uma função de serviço. Isso ocorre porque as regras de entrada ou saída de NetworkPolicy
são bem definidas para pods de origem e destino, mas não encaminhadores de pacotes.
Benefícios
A adoção do direcionamento de serviços do GKE, aliada à transição a tecnologias nativas da nuvem, tem os seguintes benefícios:
- Ofertas de Marketplace: terceiros podem oferecer seus produtos conteinerizados no Google Cloud Marketplace e usar as APIs de direcionamento de serviço. Eles podem fornecer um guia de implantação com base na API integrada do Kubernetes fornecida e gerenciados pelo GKE.
- Granularidade do Kubernetes: é possível controlar o tráfego no cluster do Kubernetes. É possível classificar o tráfego que você quer orientar. É possível selecionar cargas de trabalho em que o direcionamento de serviço deve ser aplicado de maneira seletiva.
- Bidirecionalidade: o direcionamento de serviço do GKE é bidirecional por natureza. Isso significa que, para um determinado fluxo, o caminho de retorno é simétrico ao caminho para a frente. Isso é importante quando as funções do serviço (SFs) estão sendo implantadas como um grupo de réplicas. Garanta que o mesmo fluxo passe pelo mesmo conjunto de réplica, a fim de manter o estado.
- Suporte a várias redes: a maioria das funções de serviço requer diversas interfaces de pod para separação do plano de dados do controle e do gerenciamento de controle. Algumas funções de serviço têm várias interfaces como parte da arquitetura. O direcionamento de serviço do GKE inclui integração com várias redes em pods. Com isso, o usuário pode criar um serviço de direcionamento em uma rede de pods específica.
- Entrega de pacotes brutos ao aplicativo: o redirecionamento de serviço do GKE encapsula o pacote original e o entrega ao pod diretamente. Dessa forma, não é necessário fazer desencapsulamento e seu aplicativo pode agir diretamente no pacote original.