Acerca do encaminhamento de serviços

Vista geral

Pode controlar o fluxo de tráfego de rede no seu cluster do GKE através do encaminhamento de serviços do GKE. Pode definir regras para direcionar tipos específicos de tráfego para funções de rede que implementou no seu cluster. A gestão de serviços do GKE é semelhante ao encaminhamento baseado em políticas, em que 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 pacotes de dados recebidos. Uma camada de serviço pode operar em qualquer camada do modelo OSI a partir da camada 2 (camada de ligação de dados).

As funções de serviço podem ser amplamente categorizadas da seguinte forma:

  • Firewalls para segurança
  • Proxies para controlar o acesso
  • Aceleração da WAN para melhorar a velocidade,
  • Inspeção detalhada de pacotes (DPI) para analisar conteúdo
  • Interceção legal (LI) para vigilância e investigação
  • Tradutor de endereços de rede (NAT) para endereços IP privados e públicos
  • HTTP para o enriquecimento de cabeçalhos
  • Balanceadores de carga para distribuir o tráfego de forma eficiente

As terminologias alternativas para as funções de serviço incluem:

  • Eletrodomésticos de contentores
  • Dispositivos virtuais
  • Funções de rede virtualizadas (NFVs)
  • Funções de rede contentorizadas (CNFs)
  • Funções de rede nativas da nuvem (CNFs)

No encaminhamento de serviços, um objeto de serviço representa uma função de serviço (SF).

Cadeia de funções de serviço (SFC)

A cadeia de funções de serviço (SFC) é uma série de funções de serviço, como firewalls, proxies ou balanceadores de carga, interligadas para processar o tráfego de rede por ordem específica. Esta cadeia funciona como um pipeline, em que cada função de serviço executa uma tarefa específica no tráfego antes de o passar para a função seguinte.

A cadeia de funções de serviço (SFC) também é denominada cadeia de serviços (SC).

No encaminhamento de serviços, o objeto ServiceFunctionChain representa uma cadeia de funções de serviço (SFC).

Uma função de serviço opera independentemente de qualquer cadeia de funções de serviço. Normalmente, a função de serviço não sabe de que cadeias de funções de serviço faz parte.

Encaminhamento de serviços

O encaminhamento de serviços encaminha pacotes para a função de serviço selecionada de uma forma completamente transparente para a origem e o destino. Este conceito é por vezes denominado "encaminhamento baseado em políticas", "redirecionamento de tráfego" ou "encaminhamento de funções de serviço". O encaminhamento de serviços alcança o encaminhamento transparente através da encapsulagem Geneve + NSH (consulte o RFC 8926, o RFC 8300 e o projeto da IETF Geneve + NSH).

Algumas das características importantes do encaminhamento de serviços incluem:

  • Equilíbrio de carga nos pods de back-end de uma função de serviço: as funções de serviço são frequentemente executadas em vários pods para escalabilidade e fiabilidade. O encaminhamento de serviços distribui o tráfego de rede recebido uniformemente por estes pods para evitar que um único pod fique sobrecarregado.
  • Suporte da afinidade de fluxo de 5 tuplos (todos os saltos intermédios têm de ser estáveis para um determinado fluxo): um fluxo de 5 tuplos é uma forma 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 encaminhamento de serviços garante que todos os pacotes no mesmo fluxo são direcionados de forma consistente para o mesmo conjunto de funções de serviço (saltos).
  • Ativar 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 para a origem que o tráfego de pedido original. O encaminhamento de serviços garante esta simetria, que é importante para alguns protocolos de rede e aplicações.

Para qualquer tráfego de rede específico que esteja a ser encaminhado pelo serviço, os pods de funções de serviço intermédios processam todos os pacotes desse tráfego de rede específico, garantindo saltos intermédios consistentes e uma rota previsível. Os mesmos pods de funções de serviço recebem o tráfego de retorno para garantir o fluxo de tráfego simétrico. Se o tráfego original for enviado para um destino no mesmo cluster, o tráfego de retorno encontra automaticamente um caminho de volta através da mesma cadeia de serviços. 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 através da tradução do endereço de rede de origem (SNAT) ou de um proxy, que atua como intermediário.

Exemplos de utilização

A gestão de serviços do GKE integra o encaminhamento baseado em políticas nos seus clusters. Isto permite os seguintes exemplos de utilização principais:

Serviços de segurança autogeridos:

As organizações podem construir a sua própria infraestrutura de segurança através de funções de rede em contentores (CNFs), como firewalls virtuais (vFWs), firewalls virtuais de nova geração (vNG-FWs) e sistemas de deteção de intrusão virtuais (vIDSs). O encaminhamento de serviços garante que o tráfego é encaminhado através destas CNFs antes de chegar ao destino pretendido, o que oferece uma camada de proteção e controlo.

Fornecedores de segurança geridos (MSPs):

Os MSPs podem usar a gestão de serviços do GKE para encaminhar o seu tráfego através das respetivas cadeias de serviços de segurança baseadas na nuvem. Isto permite-lhes oferecer soluções de segurança abrangentes, incluindo gateways Web seguros (SWGs), SASE (Secure Access Service Edge) e funcionalidades SD-WAN (Software-Defined Wide Area Network).

Telecomunicações e redes 5G:

O encaminhamento de serviços gere os fluxos de tráfego para várias funções de rede nas infraestruturas de telecomunicações e 5G. Pode orquestrar routers virtuais (vRouters), controladores de limites de sessão virtuais (vSBCs) e funções de rede core 5G para garantir uma gestão de tráfego eficiente, o equilíbrio de carga e a aplicação de políticas de segurança ou de qualidade de serviço específicas.

Como funciona o encaminhamento de serviços

Esta secção descreve o funcionamento de vários componentes do encaminhamento de serviços.

Função de serviço

  1. Identifica o fluxo de tráfego de rede: o encaminhamento de serviços do GKE identifica cada ligação de rede através de um ID de fluxo exclusivo, um hash de 5 tuplos do endereço IP de origem, da porta de origem, do endereço IP de destino, da porta de destino e do protocolo do pacote.

  2. Garante a afinidade de fluxo: o encaminhamento de serviços garante a 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).

  3. Modifica pacotes para criar novos fluxos: se uma função de serviço modificar qualquer um dos campos de 5 tuplos num pacote. Por exemplo, se o NAT alterar o endereço IP de origem, é criado um novo fluxo.

  4. Seleciona tráfego para novos fluxos: o processo de seleção de tráfego avalia o novo fluxo para determinar o respetivo caminho através dos restantes Service Functions, podendo seguir um caminho diferente do fluxo original.

  5. Processa proxies e NATs como dois fluxos: o tráfego através de proxies ou NATs é considerado como dois fluxos separados: origem para proxy/NAT e proxy/NAT para destino. O encaminhamento de serviços não garante o mesmo caminho para estes dois fluxos.

  6. 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 encaminhado pelo encaminhamento de serviços. Se uma Service Function originar um novo fluxo com um endereço IP de origem em conflito, esses pacotes são ignorados, a menos que sejam explicitamente permitidos.

  7. Mantém a transparência do encapsulamento: o encaminhamento de serviços usa o encapsulamento Geneve para o tráfego entre as SFs, mas os pods de funções de serviço propriamente ditos não têm conhecimento disso. Os pacotes são desencapsulados antes de entrarem no Pod, o que simplifica o desenvolvimento da função de serviço.

Associações existentes

Quando cria um TrafficSelector, o encaminhamento de serviços aplica-o automaticamente a todas as associações existentes que correspondam aos critérios do seletor. Redireciona os pacotes destas ligações para as funções de serviço adequadas. A função de serviço é responsável pela gestão destas ligações em voo. Uma abordagem comum é rejeitar os pacotes e confiar no cliente para iniciar uma nova ligação, que se integra perfeitamente na cadeia de serviços desde o início.

Ciclo de vida dos recursos

Os recursos TrafficSelector e ServiceFunctionChain são eliminados imediatamente após serem marcados para eliminação. Não existem webhooks nem finalizadores que impeçam ou atrasem a eliminação de recursos.

Tráfego de pod para serviço

O encaminhamento de serviços faz a seleção de tráfego depois de resolver o endereço IP virtual do serviço. O tráfego direcionado para um serviço através do respetivo ClusterIP pode ser selecionado para o encaminhamento de serviços se o endereço IP do pod de destino estiver dentro do CIDR especificado no campo .egress.to.ipBlock após a resolução do endereço IP virtual.

Aplicação da NetworkPolicy

O encaminhamento de serviços não ignora a NetworkPolicy. A política de saída no pod de origem e a política de entrada no pod de destino continuam a aplicar-se ao tráfego selecionado para o encaminhamento de serviços. No entanto, não está sujeita à NetworkPolicyaplicação na entrada ou saída de uma função de serviço. Isto deve-se ao facto de as regras de entrada ou saída de NetworkPolicy estarem bem definidas para os pods de origem e destino, mas não para os encaminhadores de pacotes.

Vantagens

A adoção da gestão de serviços do GKE, juntamente com a transição para tecnologias nativas da nuvem, tem as seguintes vantagens:

  • Oferta do Marketplace: os terceiros podem oferecer o respetivo produto contentorizado no Google Cloud Marketplace e usar as APIs de encaminhamento de serviços. Podem fornecer um guia de implementação com base na API incorporada do Kubernetes fornecida e gerida pelo GKE.
  • Granularidade do Kubernetes: pode controlar o tráfego no seu cluster do Kubernetes. Pode classificar o tráfego que quer direcionar. Pode selecionar cargas de trabalho onde quer que o encaminhamento de serviços seja aplicado seletivamente.
  • Bidirecionalidade: a gestão de serviços do GKE é bidirecional por natureza. Isto significa que, para um determinado fluxo, o caminho de retorno é simétrico ao caminho de encaminhamento. Isto é importante quando as funções de serviço (SFs) estão a ser implementadas como um grupo de réplicas. Certifique-se de que o mesmo fluxo passa pelo mesmo conjunto de réplicas para manter o estado.
  • Suporte de várias redes: a maioria das funções de serviço requer várias interfaces de pods para a separação do plano de dados do plano de controlo e gestão. Algumas funções de serviço têm várias interfaces como parte da respetiva arquitetura. A gestão de serviços do GKE inclui a integração com várias redes em pods. Com isto, um utilizador pode criar uma Service Steering numa rede de pods específica.
  • Entrega de pacotes brutos à aplicação: o Service Steering do GKE encapsula o pacote original e entrega-o diretamente ao pod. Desta forma, não tem de fazer nenhuma desencapsulagem e a sua aplicação pode agir diretamente no pacote original.

O que se segue?