Cloud Service Mesh com Google Cloud funcionalidades suportadas pelas APIs
Este documento resume as funcionalidades disponíveis no Cloud Service Mesh.
Uma malha de serviços na nuvem consiste nas suas aplicações, num plano de dados compatível com xDS (o proxy Envoy de código aberto ou o plano de dados sem proxy gRPC) e na malha de serviços na nuvem como plano de controlo.
Nas tabelas seguintes, o valor N/A (não aplicável) significa que uma funcionalidade não pode ser suportada porque não é compatível com a configuração específica do Cloud Service Mesh. Um espaço em branco, sem uma marca de verificação nem N/A, significa que a funcionalidade não é suportada.
Algumas destas funcionalidades só estão disponíveis com as APIs de equilíbrio de carga. Recomendamos vivamente que use as APIs de encaminhamento de serviços e que não crie novas implementações com as APIs de equilíbrio de carga.
Versão do xDS compatível
O Cloud Service Mesh usa APIs do plano de controlo xDS de código aberto para configurar o Envoy e os clientes gRPC sem proxy. Estes clientes atuam em nome do código da sua aplicação para oferecer as capacidades de rede de aplicações do Cloud Service Mesh.
Apenas é suportado o xDS v3. Migre para a xDS v3 se estiver a usar a xDS v2. Para obter informações sobre como migrar, consulte o artigo Migre da xDS v2 para a xDS v3.
Plataformas para executar serviços de malha
Pode executar aplicações nas seguintes plataformas e adotá-las numa malha de serviços global que o Cloud Service Mesh configura.
Funcionalidade | Suportado |
---|---|
Instâncias de máquinas virtuais (VMs) do Compute Engine | ✔ |
Instâncias de contentores do Google Kubernetes Engine (GKE) | ✔ |
Kubernetes em instâncias de contentores do Compute Engine | ✔ |
Gestão de serviços
Os serviços numa malha que o Cloud Service Mesh configura beneficiam do seguinte:
Descoberta de serviços. Quando uma aplicação na sua malha quer alcançar outra aplicação, pode chamar esse serviço pelo nome.
Dimensionamento automático do back-end. As instâncias que executam o código da sua aplicação são dimensionadas dinamicamente com base nas suas necessidades.
Registo automático de pontos finais. À medida que são criadas ou removidas novas instâncias, estas são associadas automaticamente ao seu serviço.
Funcionalidade | Suportado |
---|---|
Implementação automatizada de proxies sidecar para VMs do Compute Engine | ✔ |
Injeção automática de proxies sidecar para pods do GKE | ✔ |
Deteção de serviços baseada no nome do anfitrião | ✔ |
Escala automática de instâncias com base na utilização da CPU | ✔ |
Escala automática de instâncias com base na carga de tráfego/capacidade de publicação (Apenas VMs do Compute Engine em grupos de instâncias geridas ou GIGs) |
✔ |
Recuperação automática de instâncias com base em verificações de funcionamento configuráveis | ✔ |
Registo automático de pontos finais para VMs do Compute Engine | ✔ |
Registo automático de pontos finais para instâncias de contentores/pods do GKE | ✔ |
API para adicionar ou remover pontos finais de forma programática | ✔ |
Pontos finais para o tráfego do plano de dados
Os microsserviços usam o plano de dados para alcançar serviços na sua malha e fora da sua malha. A malha de serviços na nuvem permite-lhe separar a lógica da aplicação da lógica de rede para que a sua aplicação só precise de enviar pedidos para o plano de dados (por exemplo, o proxy sidecar em execução juntamente com a aplicação). Em seguida, o plano de dados envia pedidos para o ponto final correto.
Na tabela seguinte, as aplicações descritas como estando na malha são as aplicações que usam o plano de dados gerido pela Cloud Service Mesh para comunicar com outros serviços. Essas aplicações podem enviar tráfego para serviços na malha e serviços fora da malha.
Funcionalidade | Suportado |
---|---|
Aplicações baseadas em VMs na malha | ✔ |
Aplicações baseadas em contentores na malha | ✔ |
Aplicações baseadas em VMs fora da malha | ✔ |
Aplicações baseadas em contentores fora da malha | ✔ |
Aplicações em execução em centros de dados no local | ✔ |
Aplicações em ambientes de várias nuvens | ✔ |
Topologias do plano de dados
No modelo de malha de serviços, as suas aplicações usam um plano de dados para comunicar. Este plano de dados consiste frequentemente em proxies sidecar implementados juntamente com as suas aplicações. O Cloud Service Mesh é altamente flexível e suporta topologias do plano de dados que se adequam às suas necessidades de rede de serviços.
Funcionalidade | Suportado |
---|---|
Proxies complementares em execução juntamente com as aplicações | ✔ |
Aplicações gRPC sem proxy | ✔ |
Proxies intermédios entre duas aplicações numa malha | ✔ |
Proxies de limite no limite da sua malha | ✔ |
Malha que abrange vários clusters do GKE e/ou VMs do Compute Engine em várias regiões | ✔ |
Configuração programática baseada em API
Toda a configuração é exposta através da nossa API REST e painel de controlo de imediato, o que lhe permite automatizar alterações em grandes equipas e gerir alterações de forma programática. Não é possível configurar algumas funcionalidades através da consola Google Cloud .
Funcionalidade | Suportado |
---|---|
APIs REST | ✔ |
Google Cloud consola | ✔ |
CLI do Google Cloud | ✔ |
Cloud Deployment Manager | ✔ |
Apoio técnico do Terraform | ✔ |
Suporte de idiomas com aplicações gRPC sem proxy
Pode criar aplicações gRPC sem proxy que funcionem com a Cloud Service Mesh usando as seguintes linguagens de programação. As funcionalidades de malha de serviços suportadas em várias implementações e versões do gRPC estão listadas no GitHub.
Idioma | Suportado |
---|---|
Java | ✔ |
Go | ✔ |
C++ | ✔ |
Python | ✔ |
Ruby | ✔ |
PHP | ✔ |
Node | ✔ |
Protocolos de pedidos
As aplicações podem usar os seguintes protocolos de pedido quando usam o plano de dados configurado com a Cloud Service Mesh para comunicar.
Funcionalidade | Suportado |
---|---|
HTTP | ✔ |
HTTPS | ✔ |
HTTP/2 | ✔ |
TCP | ✔ |
gRPC | ✔ |
Segurança do serviço
O Cloud Service Mesh suporta a segurança dos serviços com as seguintes configurações.
Funcionalidade | Envoy | gRPC |
---|---|---|
TLS com pods do GKE | ✔ | ✔ |
mTLS com agrupamentos do GKE | ✔ | ✔ |
Controlo de acesso e autorização | ✔ | ✔ |
Limitação de taxa com o Google Cloud Armor | ✔ |
Encaminhamento e gestão de tráfego
A Cloud Service Mesh suporta políticas de gestão de tráfego avançadas que pode usar para direcionar, dividir e moldar o tráfego à medida que passa pelo seu plano de dados.
Algumas funcionalidades avançadas de gestão de tráfego não estão disponíveis com serviços gRPC sem proxy, e nenhuma das funcionalidades avançadas de gestão de tráfego está disponível com o recurso de proxy TCP de destino.
As seguintes funcionalidades não são suportadas quando o Cloud Service Mesh processa tráfego TCP (não HTTP(S)).
Funcionalidade | Suportado com o proxy Envoy configurado para processar tráfego HTTP(S) ou gRPC | Suportado com gRPC sem proxy |
---|---|---|
Encaminhamento de pedidos HTTP/camada 7 com base na correspondência de sufixo/prefixo/completa/regex em: | ||
• Nome do anfitrião | ✔ | ✔ |
• Caminho | ✔ | ✔ |
• Cabeçalhos | ✔ | ✔ |
• Método | ✔ | N/A |
• Cookies | ✔ | ✔ |
• Parâmetros do pedido | ✔ | N/A |
Injeção de falhas | ✔ | ✔ |
Tempos limite configuráveis | ✔ | N/A Consulte Duração máxima da stream. |
Novas tentativas | ✔ | ✔ Exceto por limite de tempo de nova tentativa |
Redirecionamentos | ✔ | |
Reescritas de URI | ✔ | |
Transformações de cabeçalhos de pedidos/respostas | ✔ | |
Divisão de tráfego | ✔ | ✔ |
Espelhamento de tráfego | ✔ | |
Deteção de valores atípicos | ✔ | ✔ |
Interrupção de circuito | ✔ | ✔ Apenas maxRequests |
Duração máxima do stream | ✔ | ✔ |
Balanceamento de carga
Pode configurar métodos e algoritmos de balanceamento de carga avançados para balancear a carga ao nível do serviço, do grupo de back-end (grupos de instâncias ou grupos de pontos finais da rede) e dos back-ends ou pontos finais individuais. Para mais informações, consulte a Vista geral dos serviços de back-end e a Vista geral do equilíbrio de carga avançado.
Funcionalidade | Suportado com o proxy Envoy configurado para processar tráfego HTTP(s), TCP ou gRPC | Suportado com gRPC sem proxy |
---|---|---|
Seleção do back-end (grupo de instâncias ou grupo de pontos finais de rede) com base na região (prefira a região mais próxima com capacidade de back-end saudável) | ✔ | ✔ |
Seleção de back-end através do modo de equilíbrio baseado na taxa (pedidos por segundo). | ✔ Não suportado com tráfego TCP (não HTTP(S)). |
✔ |
Seleção de back-end com base no modo de balanceamento baseado na utilização (apenas VMs em grupos de instâncias do Compute Engine) | ✔ | ✔ |
Capacidade máxima configurável por back-end (apenas no Compute Engine e no GKE) | ✔ | ✔ |
Seleção de back-end com base em políticas de equilíbrio de carga configuráveis. Para informações sobre cada política integrada, consulte o artigo
|
|
|
Resiliência do serviço
O Cloud Service Mesh suporta capacidades que ajudam a melhorar a capacidade de recuperação dos seus serviços. Por exemplo, pode usar o Cloud Service Mesh para implementar um padrão de implementação azul-verde, testes canários ou interrupção de circuito (Envoy, gRPC).
Funcionalidade | Suportado com o proxy Envoy configurado para processar tráfego HTTP(s), TCP ou gRPC | Suportado com gRPC sem proxy |
---|---|---|
Seleção de serviços com base em divisões de tráfego ponderadas | ✔ | ✔ |
Interrupção de circuito | ✔ | ✔ Apenas maxRequests |
Gestão da capacidade do serviço e do back-end
O Cloud Service Mesh tem em conta a capacidade do serviço e do back-end para promover a distribuição ideal do tráfego nos back-ends dos seus serviços. O Cloud Service Mesh está integrado na Google Cloud infraestrutura para que recolha automaticamente dados de capacidade. Também pode definir e configurar a capacidade manualmente.
Funcionalidade | Suportado |
---|---|
Monitoriza automaticamente a capacidade e a utilização do back-end, com base na CPU, para instâncias de VMs num grupo de instâncias geridas (GIG). | ✔ |
Capacidade manual e substituições para instâncias de VMs e contentores em GIGs e grupos de pontos finais de rede (NEGs) com base na taxa de pedidos. | ✔ |
Drenagem manual da capacidade. | ✔ |
Failover
Geralmente, as cargas de trabalho empresariais dependem de implementações de alta disponibilidade para melhorar o tempo de atividade do serviço. O Cloud Service Mesh suporta estes tipos de implementações através da ativação da redundância em várias zonas/regiões.
Funcionalidade | Suportado |
---|---|
Comutação automática para outra zona na mesma região que tenha capacidade de back-end em bom estado. | ✔ |
Comutação automática para a região mais próxima com capacidade de back-end disponível. | ✔ |
Verificações de funcionamento
O Cloud Service Mesh suporta a verificação de funcionamento centralizada para determinar o estado de funcionamento do back-end.
Para ver informações de referência, consulte a Vista geral das verificações de saúde.
Funcionalidade | Suportado |
---|---|
Verificações de funcionamento gRPC | ✔ |
Verificações de funcionamento de HTTP | ✔ |
Verificações de funcionamento de HTTPS | ✔ |
Verificações de funcionamento de HTTP/2 | ✔ |
Verificações de funcionamento de TCP | ✔ |
Verificações de funcionamento configuráveis:
|
✔ |
Caminho do pedido configurável (HTTP, HTTPS, HTTP/2) | ✔ |
String de pedido ou caminho configurável (TCP ou SSL) | ✔ |
String de resposta esperada configurável | ✔ |
Observabilidade
As ferramentas de observabilidade fornecem informações de monitorização, depuração e desempenho para ajudar a compreender a sua malha de serviços. As seguintes capacidades são fornecidas por predefinição ou configuradas no seu plano de dados. O código da sua aplicação não precisa de fazer nada de especial para gerar estes dados de observabilidade.
O painel de controlo do estado do serviço está disponível com serviços gRPC sem proxy, mas não pode configurar o registo e o rastreio do plano de dados. O Cloud Service Mesh não consegue configurar o registo e o rastreio de uma aplicação gRPC. Pode ativar o registo e o rastreio seguindo as instruções nas secções de resolução de problemas ou nos guias gRPC disponíveis em sites de código aberto. Por exemplo, para ativar a recolha de métricas e o rastreio nos seus serviços gRPC sem proxy, pode usar o OpenTelemetry.
Funcionalidade | Suportado com proxies | Suportado com serviços gRPC sem proxy |
---|---|---|
Painel de controlo de estado do serviço | ✔ | ✔ |
Registo do plano de dados | ✔ | ✔ |
Rastreio do plano de dados | ✔ | ✔ |
Afinidade de sessão
As comunicações cliente-servidor envolvem frequentemente vários pedidos sucessivos. Neste caso, é útil encaminhar os pedidos sucessivos dos clientes para o mesmo servidor ou back-end. A malha de serviços na nuvem oferece opções configuráveis para enviar pedidos de um cliente específico, com base no melhor esforço, para o mesmo servidor de back-end, desde que o servidor de back-end esteja em bom estado e tenha capacidade. Para mais informações, consulte a Vista geral dos serviços de back-end.
Funcionalidade | Suportado com proxies HTTP(S) | Suportado com proxies TCP | Suportado com serviços gRPC sem proxy |
---|---|---|---|
Endereço IP do cliente | ✔ | ✔ | |
Cookie HTTP | ✔ | N/A | |
Cabeçalho HTTP | ✔ | N/A | ✔ |
Cookie gerado (define o cookie do cliente no primeiro pedido) | ✔ | N/A |
Topologias de rede
O Cloud Service Mesh suporta topologias de rede Google Cloud comuns.
Funcionalidade | Suportado |
---|---|
Rede única num Google Cloud projeto | ✔ |
Várias malhas num Google Cloud projeto | ✔ |
Vários gateways num Google Cloud projeto | ✔ |
VPC partilhada (uma única rede partilhada em vários Google Cloud projetos) | ✔ |
Para uma explicação detalhada de como a VPC partilhada é suportada com a Cloud Service Mesh, consulte as Limitações.
Conformidade
O Cloud Service Mesh está em conformidade com as seguintes normas.
Certificação de conformidade | Suportado |
---|---|
HIPAA | ✔ |
ISO 27001, ISO 27017 e ISO 27018 | ✔ |
SOC1, SOC2, SOC3 | ✔ |
PCI DSS | ✔ |
O que se segue?
- Para saber mais sobre a Cloud Service Mesh, consulte a vista geral da Cloud Service Mesh.
- Para encontrar exemplos de utilização e padrões de arquitetura para serviços gRPC sem proxy, consulte a vista geral dos serviços gRPC sem proxy.