Descoberta de serviços

O Cloud Service Mesh oferece descoberta de serviço e de endpoint. Esses recursos permitem agrupar as instâncias de máquina virtual (VM) e de contêiner que executam o código como endpoints dos serviços.

O Cloud Service Mesh monitora esses serviços para compartilhar informações atualizadas de verificação de integridade com os clientes. Portanto, quando um dos aplicativos usa o cliente do Cloud Service Mesh (como um proxy sidecar Envoy ou um aplicativo gRPC sem proxy) para enviar uma solicitação, ele se beneficia de informações atualizadas sobre os serviços.

No contexto da Cloud Service Mesh, um cliente é o código do aplicativo que é executado em uma VM ou em um contêiner que formula as solicitações a serem enviadas a um servidor. Um servidor é um código de aplicativo que recebe essas solicitações. Um cliente do Cloud Service Mesh é um Envoy, gRPC ou outro cliente xDS conectado ao Cloud Service Mesh e que faz parte do plano de dados.

No plano de dados, o Envoy ou o gRPC faz o seguinte:

  1. Ele examina uma solicitação e corresponde a solicitação a um serviço de back-end, um recurso que você configura durante a implantação.
  2. Depois que a solicitação é correspondida, o Envoy ou o gRPC aplica todas as políticas de tráfego ou segurança configuradas anteriormente, escolhe um back-end ou um endpoint e direciona a solicitação para esse back-end ou endpoint.

Descoberta de serviços

O Cloud Service Mesh oferece descoberta de serviços. Ao configurar o Cloud Service Mesh, você cria serviços de back-end. Você também define regras de roteamento que especificam como uma solicitação de saída (uma solicitação enviada pelo código do aplicativo e processada por um cliente da Cloud Service Mesh) é correspondida a um serviço específico. Quando um cliente do Cloud Service Mesh processa uma solicitação que corresponde a uma regra, ele pode escolher o serviço que receberá a solicitação.

Exemplo:

  • Você tem uma VM executando o aplicativo. Essa VM tem um proxy sidecar do Envoy conectado ao Cloud Service Mesh e processa solicitações de saída em nome do aplicativo.
  • Você configurou um serviço de back-end denominado payments. Esse serviço de back-end tem dois back-ends de grupos de endpoints de rede (NEG, na sigla em inglês) que apontam para várias instâncias de contêiner que executam o código do serviço payments.
  • Você configurou um recurso Mesh que define uma malha chamada sidecar-mesh.
  • Você configurou um recurso Route que define destinos de tráfego para o serviço de back-end payments e o nome do host helloworld-gce.

Com essa configuração, quando o aplicativo (na VM) enviar uma solicitação HTTP para payments.example.com, o cliente do Cloud Service Mesh saberá que essa solicitação é destinada ao serviço payments.

Quando você usa a Cloud Service Mesh com serviços do gRPC sem proxy, a descoberta de serviços funciona de maneira semelhante. No entanto, a biblioteca do gRPC, atuando como um cliente do Cloud Service Mesh, recebe apenas informações sobre os serviços para os quais você especificou um resolvedor xDS. Por padrão, o Envoy recebe informações sobre todos os serviços configurados na rede da nuvem privada virtual (VPC) especificada no arquivo de inicialização do Envoy.

Descoberta de endpoints

Com a descoberta de serviços, os clientes conhecem os serviços que você fornece. A descoberta de endpoints permite que os clientes conheçam as instâncias que executam o código.

Ao criar um serviço, você também especifica os back-ends dele. Esses back-ends são VMs em grupos gerenciados de instâncias (MIGs, na sigla em inglês) ou contêineres em NEGs. O Cloud Service Mesh monitora esses MIGs e NEGs para saber quando instâncias e endpoints são criados e removidos.

A Cloud Service Mesh compartilha continuamente informações atualizadas sobre esses serviços com os clientes. Essa informação evita que os clientes enviem tráfego para endpoints que não existem mais. Com ela, os clientes também podem aprender sobre novos endpoints e aproveitar a capacidade extra fornecida por esses endpoints.

Além de adicionar endpoints em MIGs ou NEGs e configurar o Cloud Service Mesh, você não precisa de outras configurações para ativar a descoberta de serviços com o Cloud Service Mesh.

Interceptação de tráfego de proxy sidecar no Cloud Service Mesh

O Cloud Service Mesh oferece suporte ao modelo de proxy sidecar. Nesse modelo, quando um aplicativo envia tráfego para o destino, o tráfego é interceptado e redirecionado para uma porta no proxy sidecar no host em que o aplicativo está em execução. O proxy sidecar decide como balancear a carga do tráfego e, em seguida, envia o tráfego para o destino.

Com o Cloud Service Mesh e as APIs de roteamento de serviço, a interceptação de tráfego é gerenciada automaticamente.

A seguir