Visão geral da malha de serviço do GKE do Cloud Service Mesh

Esta configuração é compatível com clientes de pré-lançamento, mas não recomendamos para novos usuários do Cloud Service Mesh. Para mais informações, consulte a Visão geral do Cloud Service Mesh.

Este documento é destinado a usuários do Google Kubernetes Engine que querem implantar um Malha de serviço do Cloud Service Mesh usando a API Kubernetes Gateway.

É possível configurar o Cloud Service Mesh para GKE usando o APIs Kubernetes Gateway, viabilizando comunicações de serviço a serviço, tráfego balanceamento de carga global e aplicação da política de segurança para serviços de vários casos de uso da rede mesh.

APIs do Kubernetes e do Google Cloud

É possível configurar uma malha de serviço do Cloud Service Mesh usando duas APIs diferentes:

Este documento e os guias de configuração associados fornecem instruções sobre como usar o API Kubernetes Gateway para configurar um Malha de serviço do Cloud Service Mesh.

Recomendamos o uso das APIs de gateway do Kubernetes. no Google Kubernetes Engine e não recomendamos o uso de ambas as 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. A biblioteca os recursos configurados são funcionalmente equivalentes recursos representados pela API de roteamento de serviço para o Cloud Service Mesh.

As seções a seguir descrevem os recursos e a arquitetura usados pelo Integração do Cloud Service Mesh com as APIs de gateway do Kubernetes.

API Gateway

A API Gateway é um conjunto de recursos que modelam a rede de serviços no Kubernetes. A biblioteca API Gateway é um projeto de código aberto que se concentra no suporte a balanceadores de carga com uma API de roteamento genérica. A API de roteamento genérico tem muitas implementações. As definições de recursos personalizados (CRDs) do Cloud Service Mesh foram adicionadas como uma extensão da 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 você gerencia recursos e aplica políticas de forma consistente em vários clusters. Quando você usa uma frota, é possível gerenciar uma malha de serviço do Cloud Service Mesh abrangendo vários clusters.

Arquitetura

O Cloud Service Mesh dá suporte à API Gateway no GKE: programando os clusters para implementar os comportamentos de rede especificada nos recursos da API Gateway. O Cloud Service Mesh é um serviço gerenciado um plano de controle que não processe 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 Cloud Service Mesh configura proxies Envoy e sem proxy clientes gRPC por meio da API xDSv3.

O Cloud Service Mesh oferece uma solução de plano de controle gerenciada e disponível globalmente mais robusto e escalonável do que a execução de controladores no cluster. Devido ao é uma solução global, o Cloud Service Mesh pode fazer o balanceamento de carga do tráfego cargas de trabalho distribuídas entre vários clusters do GKE. Na Ilustração a seguir: o Cloud Service Mesh gerencia o tráfego para os serviços em três clusters que estão em uma única frota, usando recursos da API Gateway.

Uma malha de serviço de vários clusters do Cloud Service Mesh configurada usando a API Gateway
Uma malha de serviço de vários clusters do Cloud Service Mesh configurada usando 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. Malha de serviço do Cloud observa apenas os recursos que estão no cluster de configuração e ignora os recursos que estão em outros clusters da 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 mais informações sobre a descoberta de serviços multicluster.

Recursos

O Cloud Service Mesh oferece suporte a proxies Envoy e gRPC sem proxy nos dados de uma malha de serviço. Ambos os clientes recebem a configuração Cloud Service Mesh para uma determinada malha de serviço, especificando o nome e número de projeto correspondente do recurso TDMesh nos respectivos bootstrap configuração do Terraform. Os guias de configuração do Cloud Service Mesh 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 Cloud Service Mesh. Ele é uma extensão da biblioteca APIs de gateway para oferecer suporte aos casos de uso de malha de serviço do Cloud Service Mesh. 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 da Rota da API Gateway podem ser anexados a um recurso TDMesh para especificar o roteamento em nível de serviço na malha de serviço. O Cloud Service Mesh oferece suporte às seguintes Route recursos:

  • HTTPRoute
  • TCPRoute
  • TDGRPCRoute (recurso personalizado do Cloud Service Mesh)

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 Cloud Service Mesh
Como usar os recursos da API Gateway no GKE para configurar o Cloud Service Mesh (clique para ampliar)

Limitações

  • O Cloud Service Mesh configura os seguintes comportamentos padrão para todos 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 padrão de 30 segundos tempo limite é configurado para todas as solicitações recebidas aos serviços.
    • Afinidade da sessão está desativado.
  • O Injetor automático do Envoy oferece suporte a apenas uma malha por frota.
  • Os recursos de segurança do Cloud Service Mesh não podem ser ativados usando o 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