Tráfego de entrada para a sua malha
Uma malha de serviços facilita as comunicações entre os serviços em execução na malha. Como recebe tráfego na sua malha? Pode usar um gateway para direcionar o tráfego de fora da sua malha para a sua malha através de um ponto de entrada.
Este documento descreve como usar o Cloud Load Balancing como uma porta de entrada para obter tráfego na sua malha e inclui o seguinte:
- Considerações de nível superior para o gateway.
- Uma vista geral das opções quando seleciona um gateway para a sua rede de malha.
- Recomendações arquitetónicas que pode aplicar à topologia do gateway.
Neste documento, gateway refere-se a uma solução ou um padrão para processar o tráfego destinado a um serviço na sua malha. O gateway de entrada do Istio é uma implementação deste padrão. Neste documento, gateway é um termo genérico que se refere ao padrão geral e não à implementação do Istio.
Este documento aplica-se às APIs Cloud Service Mesh. Após os passos de configuração preparatórios, consulte o artigo que contém instruções para a implementação com um gateway de entrada.
Quando cria a sua malha de serviços, considere o tráfego proveniente das seguintes origens:
- Tráfego que tem origem na sua malha
- Tráfego originado fora da sua malha
O tráfego que tem origem na sua malha viaja no plano de dados da malha de serviços para alcançar um back-end ou um ponto final associado ao serviço de destino. No entanto, o tráfego que tem origem fora da sua malha tem de chegar primeiro ao plano de dados da malha de serviços.
No exemplo seguinte de tráfego que tem origem na sua malha, o Cloud Service Mesh configura os proxies sidecar. Estes proxies sidecar formam o plano de dados da sua malha de serviços. Se o Serviço A quiser comunicar com o Serviço B, ocorre o seguinte:
- O serviço A faz um pedido ao serviço B pelo nome.
- Este pedido é intercetado e redirecionado para o proxy sidecar do serviço A.
- Em seguida, o proxy sidecar envia o pedido para um ponto final associado ao serviço B.
No exemplo seguinte, o tráfego tem origem fora da malha de serviços e
não viaja ao longo do plano de dados da malha de serviços.
Neste exemplo, o cliente está fora da sua malha de serviços. Uma vez que não participa diretamente na malha, o cliente não sabe a que pontos finais pertencem os serviços no interior da malha. Por outras palavras, uma vez que o cliente não usa um proxy configurado com a Cloud Service Mesh para enviar pedidos de saída, não sabe que pares de porta de endereço IP usar quando envia tráfego para o Serviço A ou o Serviço B. Sem essas informações, o cliente não consegue alcançar os serviços na sua malha.
Considerações para o seu gateway
Esta secção apresenta uma vista geral dos aspetos a considerar quando seleciona um gateway, incluindo o seguinte:
- Como é que os clientes podem aceder ao meu gateway?
- Que políticas quero aplicar ao tráfego que chega ao meu gateway?
- Como é que o meu gateway distribui o tráfego para os serviços na minha malha?
Permitir que os clientes alcancem o gateway da sua rede mesh
Os clientes, quer estejam na Internet pública, no seu ambiente no local ou dentro Google Cloud, precisam de uma forma de alcançar um serviço na sua malha. Normalmente, o acesso a um serviço na sua malha é feito através de um endereço IP e uma porta encaminháveis publicamente ou de forma privada que são resolvidos para um gateway. Os clientes fora da sua malha usam este endereço IP e porta para enviar pedidos a serviços na sua malha através do gateway.
O Cloud Load Balancing oferece várias opções de balanceamento de carga que pode usar como a porta de entrada para a sua malha. As principais perguntas a fazer quando escolhe um Google Cloud equilibrador de carga para atuar como gateway são as seguintes:
- Os meus clientes estão na Internet pública, num ambiente no local ou fazem parte da minha rede da nuvem virtual privada (VPC)?
- Que protocolos de comunicação usam os meus clientes?
Para uma vista geral das opções do Cloud Load Balancing, consoante a localização do cliente e o protocolo de comunicação, consulte a secção Escolha um gateway para a sua malha.
Processar o tráfego no gateway
Uma vez que o gateway se encontra no limite da sua malha, entre os clientes que estão fora da malha e os serviços que estão dentro da malha, o gateway é um local natural para aplicar políticas quando o tráfego entra na sua malha. Estas políticas incluem o seguinte:
- Gestão de tráfego, por exemplo, encaminhamento, redirecionamentos e transformação de pedidos
- Segurança, por exemplo, terminação de TLS e proteção contra negação de serviço distribuída (DDoS) do Google Cloud Armor
- Colocação em cache do Cloud CDN
A secção Escolha um gateway para a sua malha realça as políticas relevantes no limite da sua malha.
Envie tráfego do gateway para um serviço na sua malha
Depois de o gateway aplicar políticas ao tráfego recebido, decide para onde enviar o tráfego. Para configurar esta opção, usa políticas de gestão de tráfego e equilíbrio de carga. Por exemplo, o gateway pode inspecionar o cabeçalho do pedido para identificar o serviço de malha que deve receber o tráfego. Depois de o gateway identificar o serviço, distribui o tráfego para um back-end específico de acordo com uma política de equilíbrio de carga.
A secção Escolha um gateway para a sua malha descreve os back-ends para os quais um gateway pode enviar tráfego.
Escolha um gateway para a sua rede de malha
Google Cloud oferece uma vasta gama de equilibradores de carga que podem atuar como a porta de entrada para a sua malha. Esta secção aborda a seleção de um gateway, comparando as seguintes opções ao longo das dimensões relevantes para o padrão de gateway:
- Balanceador de carga de aplicações interno
- Balanceador de carga de aplicações externo
- Balanceador de carga de rede de passagem interno
- Balanceador de carga de rede de passagem externo
- Balanceador de carga de rede de proxy externo
Nesta secção, referimo-nos a gateways de primeiro nível e segundo nível. Estes termos são usados para descrever a utilização de um ou dois gateways para processar o tráfego de entrada para a sua malha.
Pode precisar apenas de um nível, um único equilibrador de carga que funcione como uma porta de entrada para a malha. No entanto, por vezes, faz sentido ter várias gateways. Nestas configurações, um gateway processa o tráfego que entra no Google Cloude um gateway de segundo nível separado processa o tráfego à medida que entra na malha de serviço.
Por exemplo, pode querer aplicar políticas de segurança do Google Cloud Armor ao tráfego que entra e políticas de gestão de tráfego avançadas ao tráfego que entra na malha. Google Cloud O padrão de utilização de um segundo gateway configurado no Cloud Service Mesh é abordado na secção Processar tráfego de entrada com um gateway de segundo nível no limite da sua malha.
A tabela seguinte compara as capacidades disponíveis, consoante a opção de gateway que selecionar.
Gateway | Localização do cliente | Protocolos | Políticas | Back-ends/endpoints |
---|---|---|---|---|
Balanceador de carga de aplicações interno | Google Cloud-based clients in the same region as the load balancer. Clientes nas instalações cujos pedidos chegam à mesma Google Cloud região que o balanceador de carga, por exemplo, através do Cloud VPN ou do Cloud Interconnect. |
HTTP/1.1 HTTP/2 HTTPS |
Gestão avançada de tráfego Terminação de TLS com certificados autogeridos |
Back-ends na mesma Google Cloud região que o balanceador de carga, em execução em:
|
Balanceador de carga de aplicações externo | Clientes na Internet pública | HTTP/1.1 HTTP/2 HTTPS |
Gestão de tráfego Cloud CDN (incluindo back-ends de contentores do Cloud Storage) Terminação de TLS com certificados geridos pela Google ou autogeridos Políticas de SSL Cloud Armor para prevenção de ataques DDoS e Web Compatibilidade com o Identity-Aware Proxy (IAP) para autenticação de utilizadores |
Back-ends em qualquer Google Cloud região, executados em:
|
Balanceador de carga de rede de encaminhamento interno | Google Cloud-based clients in any region; this requires global access if clients are in a different region from the load balancer. Clientes nas instalações cujos pedidos chegam a qualquer Google Cloud região, por exemplo, através do Cloud VPN ou do Cloud Interconnect. |
TCP | Back-ends na mesma Google Cloud região que o balanceador de carga, em execução em VMs no Compute Engine. | |
Balanceador de carga de rede de encaminhamento externo | Clientes na Internet pública | TCP ou UDP | Back-ends na mesma Google Cloud região que o balanceador de carga, em execução em VMs no Compute Engine. | |
Balanceador de carga de rede de proxy externo | Clientes na Internet pública | SSL ou TCP | Terminação de TLS com certificados geridos pela Google ou autogeridos (apenas proxy SSL) Políticas de SSL (apenas proxy SSL) |
Back-ends em qualquer Google Cloud região, executados em:
|
Proxy de limite (em instâncias de VM ou contentor) configurado pelo Cloud Service Mesh |
Os clientes têm de estar numa localização onde se aplique uma das seguintes condições:
|
HTTP/1.1 HTTP/2 |
Gestão
avançada de tráfego (incluindo suporte para regex ) |
Back-ends em qualquer Google Cloud região, executados em:
|
Para uma comparação detalhada de funcionalidades, consulte a página Funcionalidades do equilibrador de carga. Para uma vista geral detalhada das funcionalidades da malha de serviço na nuvem, consulte a página Funcionalidades da malha de serviço na nuvem.
Implemente e configure gateways
Uma consideração final na seleção da sua gateway é a experiência do programador e as ferramentas que quer usar.A Google oferece várias abordagens para criar e gerir a sua gateway. Google Cloud
CLI Google Cloud e APIs Compute Engine
Para configurar os produtos de equilíbrio de carga geridos da Google Cloude a malha de serviços na nuvem, pode usar a CLI Google Cloud e as APIs Compute Engine. A CLI gcloud e as APIs fornecem mecanismos para implementar e configurar os seus recursos de forma imperativa. Google Cloud Para automatizar tarefas repetitivas, pode criar scripts.
Google Cloud consola
Para configurar a Cloud Service Mesh e os balanceadores de carga geridos do Google Cloud, pode usar a Google Cloud consola.
Para configurar o seu padrão de gateway, é provável que precise da página Cloud Service Mesh e da página Load balancing.
GKE e entrada em vários clusters
Os controladores de rede do GKE e do GKE Enterprise também suportam a implementação do Cloud Load Balancing para integração incorporada com a rede de contentores. Oferecem uma interface declarativa ao estilo do Kubernetes para implementar e configurar gateways. Os controladores GKE Ingress e Multi-cluster Ingress gerem os balanceadores de carga internos e externos para enviar tráfego para um único cluster ou para vários clusters do GKE. Também é possível configurar o recurso Ingress para apontar para serviços configurados na Cloud Service Mesh implementados em clusters do GKE.
Padrões de arquitetura de gateway
Esta secção descreve padrões de alto nível e fornece diagramas de arquitetura para o seu gateway.
O padrão mais comum envolve a utilização de um equilibrador de carga gerido pelo Google Cloud como gateway: Google Cloud
Os clientes enviam tráfego para um balanceador de carga gerido pela Google Cloudque funciona como a sua porta de entrada.
- O gateway aplica políticas.
O gateway envia o tráfego para um serviço na sua malha.
Um padrão mais avançado envolve gateways em dois níveis. Os gateways funcionam da seguinte forma:
Os clientes enviam tráfego para um balanceador de carga gerido pela Google que funciona como a sua porta de entrada de primeiro nível. Google Cloud
- O gateway aplica políticas.
O gateway envia o tráfego para um proxy de limite (ou um conjunto de proxies de limite) configurado pelo Cloud Service Mesh. Este proxy de limite funciona como um gateway de segundo nível. Este nível faz o seguinte:
Oferece uma separação clara de responsabilidades em que, por exemplo, uma equipa é responsável pelo tráfego de entrada que entra no Google Cloud , enquanto outra equipa é responsável pelo tráfego de entrada que entra na malha dessa equipa.
Permite-lhe aplicar políticas que podem não ser suportadas no balanceador de carga gerido pela Google.Google Cloud
O gateway de segundo nível envia o tráfego para um serviço na sua malha.
O padrão de entrada termina depois de o tráfego chegar a um serviço na malha. O caso comum e os padrões avançados são descritos nas secções seguintes.
Ative o tráfego de entrada da Internet
Se os seus clientes estiverem fora Google Cloud e precisarem de aceder Google Cloud através da Internet pública, pode usar um dos seguintes equilibradores de carga como gateway:
- Balanceador de carga de aplicações externo
- Balanceador de carga de rede de passagem externo
- Balanceador de carga de rede de proxy externo
Neste padrão, o balanceador de carga gerido pela Google Cloudserve como gateway. O gateway processa o tráfego de entrada antes de o encaminhar para um serviço na sua malha.
Por exemplo, pode escolher um Application Load Balancer externo como gateway para usar o seguinte:
- Um endereço IP Anycast global encaminhável publicamente, que minimiza a latência e os custos de travessia da rede.
- Cloud Armor e terminação TLS para proteger o tráfego para a sua malha.
- Cloud CDN para publicar conteúdo Web e de vídeo.
- Capacidades de gestão de tráfego, como o encaminhamento com base no anfitrião e no caminho.
Para mais informações que ajudem a decidir sobre um gateway adequado, consulte a secção Escolha um gateway para a sua malha.
Ative o tráfego de entrada de clientes na VPC e em redes no local ligadas
Se os seus clientes estiverem na sua rede VPC ou se estiverem no local e puderem alcançar os serviços através de um método de conetividade privada (como a Cloud VPN ou o Cloud Interconnect), pode usar um dos seguintes balanceadores de carga como gateway: Google Cloud
Neste padrão, o balanceador de carga gerido pela Google Cloudserve como gateway. O gateway processa o tráfego de entrada antes de o encaminhar para um serviço na sua malha.
Por exemplo, pode escolher um balanceador de carga de aplicações interno como gateway para poder usar estas funcionalidades:
- Um endereço IP com endereçamento privado
- Terminação de TLS para proteger a sua malha
- Capacidades avançadas de gestão de tráfego, como a divisão de tráfego baseada em peso
- NEGs como back-ends
Para mais informações que ajudem a decidir sobre um gateway adequado, consulte a secção Escolha um gateway para a sua malha.
Processar o tráfego de entrada através de um gateway de segundo nível no limite da sua malha
Consoante as suas necessidades, pode considerar um padrão mais avançado que adicione um gateway adicional.
Este gateway é um proxy de limite configurado na Cloud Service Mesh (ou um conjunto de proxies) que se encontra atrás do balanceador de carga gerido pela Google Cloud. Pode alojar este gateway de segundo nível no seu projeto através de um conjunto de VMs do Compute Engine (um grupo de instâncias gerido) ou serviços do GKE.
Embora este padrão seja mais avançado, oferece vantagens adicionais:
O balanceador de carga gerido pela Google CloudGoogle aplica um conjunto inicial de políticas, por exemplo, a proteção do Cloud Armor se estiver a usar um balanceador de carga de aplicações externo.
O proxy de limite configurado do Cloud Service Mesh aplica um segundo conjunto de políticas que podem não estar disponíveis no equilibrador de carga gerido pela Google Cloud. Estas políticas incluem a gestão avançada de tráfego que usa expressões regulares aplicadas a cabeçalhos HTTP e divisão de tráfego baseada em ponderação.
Este padrão pode ser configurado para refletir a sua estrutura organizacional. Por exemplo:
Uma equipa pode ser responsável pela gestão do tráfego de entrada paraGoogle Cloud , enquanto outra equipa é responsável pela gestão do tráfego de entrada para a respetiva malha.
Se várias equipas oferecerem serviços numa VPC partilhada, com cada equipa a ser proprietária do seu próprio projeto de serviço, as equipas podem usar este padrão para gerir e aplicar políticas nas suas próprias malhas. Cada equipa pode expor um gateway configurado no Cloud Service Mesh que é acessível num único par de porta e endereço IP. Em seguida, uma equipa pode definir e gerir de forma independente as políticas que são aplicadas no tráfego de entrada na malha da equipa.
Este padrão pode ser implementado através de qualquer equilibrador de carga gerido pela Google, desde que o equilibrador de carga possa enviar tráfego para os back-ends que alojam os gateways configurados na Cloud Service Mesh. Google Cloud
Use as APIs de encaminhamento de serviços para o tráfego de entrada
As APIs de encaminhamento de serviços fornecem o recurso Gateway
para configurar a gestão de tráfego e a segurança para proxies Envoy que atuam como gateways de entrada, permitindo que os clientes externos se liguem à malha de serviços (norte-sul).
Para mais informações, leia a vista geral do encaminhamento de serviços e configure um gateway de entrada.
O que se segue?
- Para configurar um gateway de entrada, consulte o artigo Configuração da malha de serviços na nuvem para um gateway de entrada.
- Para agrupar as MVs e os contentores que executam o seu código como pontos finais dos seus serviços, consulte a deteção de serviços do Cloud Service Mesh.
- Para usar a malha de serviços da nuvem com a VPC partilhada, consulte o artigo Configure uma malha de serviços de vários clusters.
- Para saber mais sobre a Cloud Service Mesh, consulte a vista geral da Cloud Service Mesh.