Visão geral da malha de serviço do GKE do Traffic Director

Este documento é para usuários do Google Kubernetes Engine que querem implantar uma malha de serviço do Traffic Director usando a API Kubernetes Gateway.

É possível configurar o Traffic Director para GKE usando as APIs do gateway do Kubernetes, o que permite comunicações de serviço a serviço, gerenciamento de tráfego, balanceamento de carga global e aplicação da política de segurança para casos de uso da malha de serviço.

APIs do Kubernetes e do Google Cloud

Você pode configurar uma malha de serviço do Traffic Director usando duas APIs diferentes:

Este documento e os guias de configuração associados fornecem instruções para usar a API Gateway do Kubernetes para configurar uma malha de serviço do Traffic Director.

Recomendamos que você use as APIs do gateway do Kubernetes no Google Kubernetes Engine e não use as duas APIs para configurar o roteamento na mesma malha de serviço no GKE.

A API de roteamento de serviços usa os mesmos nomes dos recursos das APIs Kubernetes Gateway, o que facilita o uso das duas APIs. Os recursos do Kubernetes configurados são equivalentes aos recursos do Google Cloud representados pela API de roteamento de serviços do Traffic Director.

As seções a seguir descrevem os recursos e a arquitetura usados pela integração do Traffic Director com as APIs do Kubernetes Gateway.

API Gateway

A API Gateway é um conjunto de recursos que modelam a rede de serviços no Kubernetes. A API Gateway do Kubernetes é um projeto de código aberto que se concentra em oferecer suporte a casos de uso de entrada e balanceador de carga, fornecendo uma API de roteamento genérica. A API de roteamento genérico tem muitas implementações. As definições de recursos personalizados (CRDs, na sigla em inglês) do Traffic Director são adicionadas como uma extensão à API Gateway de código aberto. As CRDs são compatíveis com casos de uso de malha de serviço e usam a mesma API de roteamento genérica introduzida pela API Gateway.

A API Gateway é organizada hierarquicamente, com um recurso pai de gateway e o GatewayClass associado a que você anexa rotas. O GKE inclui um recurso TDMesh que é um peering do recurso Gateway. É possível anexar os mesmos tipos de Route ao recurso TDMesh. É no recurso TDMesh que você anexa rotas e políticas para malhas de serviço.

API Gateway, recurso de gateway, recurso de malha e rotas
API Gateway, recurso Gateway, recurso de malha e rotas (clique para ampliar)

Frota

Uma frota consiste em um ou mais clusters do GKE agrupados logicamente. Uma frota permite gerenciar recursos e aplicar políticas de maneira consistente em vários clusters. Ao usar uma frota, é possível gerenciar uma malha de serviço do Traffic Director que abrange vários clusters.

Arquitetura

O Traffic Director é compatível com a API Gateway no GKE ao programar os planos de dados dos clusters para implementar os comportamentos de rede especificados nos recursos da API Gateway. O próprio Traffic Director é um plano de controle gerenciado pelo Google que não processa tráfego do plano de dados. Os proxies do Envoy em execução como arquivos secundários para suas cargas de trabalho ou clientes gRPC sem proxy processam o tráfego no plano de dados. O Traffic Director configura proxies Envoy e clientes gRPC sem proxy por meio da API xDSv3.

O Traffic Director oferece uma solução de plano de controle gerenciada e disponível globalmente, mais robusta e escalonável do que executar controladores no cluster. Como é uma solução global, o Traffic Director pode balancear a carga de tráfego entre cargas de trabalho distribuídas entre vários clusters do GKE. Na ilustração a seguir, o Traffic Director gerencia o tráfego em serviços em três clusters que estão em uma única frota, usando os recursos da API Gateway.

Uma malha de serviços de vários clusters do Traffic Director configurada com a API Gateway
Uma malha de serviços de vários clusters do Traffic Director configurada com a API Gateway (clique para ampliar)

Você designa um cluster na sua frota como o cluster de configuração. O cluster de configuração é onde os recursos da API Gateway são armazenados. O Traffic Director observa apenas os recursos que estão no cluster de configuração e ignora os recursos que estão em outros clusters na frota. Consulte Projeto do cluster de configuração na documentação do GKE para ver informações mais detalhadas sobre esse cluster.

Com os serviços de vários clusters do GKE, os recursos da API Gateway no cluster de configuração podem referenciar serviços do Kubernetes em qualquer cluster em uma frota. Consulte Serviços de vários clusters para ver mais informações sobre a descoberta de serviços multicluster.

Recursos

O Traffic Director é compatível com proxies Envoy e gRPC sem proxy no plano de dados de uma malha de serviço. Ambos os clientes recebem a configuração do Traffic Director para uma malha de serviço específica, especificando o nome e o número do projeto correspondente do recurso TDMesh na respectiva configuração de inicialização. Os guias de configuração do Traffic Director com as APIs de gateway do Kubernetes fornecem configurações de plano de dados de demonstração com o Envoy e o gRPC sem proxy.

RecursoTDMesh

O recurso TDMesh é um recurso personalizado do Traffic Director. É uma extensão das APIs de gateway de código aberto para oferecer suporte aos casos de uso da malha de serviço do Traffic Director. Usando o recurso TDMesh, você cria uma instância de malha de serviço na sua frota. As rotas anexadas ao recurso TDMesh especificam os comportamentos de roteamento de serviço a serviço na malha de serviço.

Route recursos

Um subconjunto dos recursos da rota da API Gateway pode ser anexado a um recurso TDMesh para especificar o roteamento no nível de serviço na malha de serviço. O Traffic Director é compatível com os seguintes recursos Route:

  • HTTPRoute
  • TCPRoute
  • TDGRPCRoute (recurso personalizado do Traffic Director)

Por exemplo, é possível criar um HTTPRoute para especificar que as solicitações HTTP destinadas ao host payments.svc.internal sejam roteadas para o serviço service-payments do Kubernetes. Quando você anexa o recurso HTTPRoute a um recurso TDMesh em que as instâncias de plano de dados estão inscritas, as solicitações HTTP enviadas por cargas de trabalho na malha são roteadas adequadamente.

Essa versão aumenta os recursos genéricos de Route na API Gateway com um novo tipo de rota, TDGRPCRoute. O novo tipo de rota oferece uma experiência de alto nível para rotear solicitações gRPC, por meio da correspondência de gRPC primitivos nativos, como definições de método e serviço.

Como usar os recursos da API Gateway no GKE para configurar o Traffic Director
Como usar os recursos da API Gateway no GKE para configurar o Traffic Director (clique para ampliar)

Limitações

  • O Traffic Director configura os seguintes comportamentos padrão para todos os serviços do Kubernetes na malha de serviço. Não é possível alterar esses comportamentos.
    • As verificações de integridade TCP são configuradas nas portas de serviço referenciadas por qualquer recurso Route da API Gateway.
    • Um tempo limite padrão de 30 segundos é configurado para todas as solicitações de entrada para serviços.
    • A afinidade da sessão está desativada.
  • O injetor automático do Envoy é compatível apenas com uma malha por frota.
  • Os recursos de segurança do Traffic Director não podem ser ativados usando a API Gateway.
  • Configure os recursos TDMesh e Route no GKE usando apenas a API Gateway. Não é possível usar o Console do Google Cloud, a CLI gcloud ou as APIs REST.
  • Todos os clusters precisam estar em um projeto. Uma malha de serviço que se estende por clusters em vários projetos não é compatível.
  • Não é possível configurar ou visualizar uma malha de serviço do GKE usando o Console do Google Cloud.
  • A observabilidade do plano de controle com o Cloud Logging e o Cloud Monitoring não é compatível.

A seguir