Integração do Cloud Service Mesh com o Diretório de serviços
Neste documento, você encontra uma visão geral de como usar o registro de serviços do Diretório de serviços com o Cloud Service Mesh. Isso permite que o Cloud Service Mesh roteie o tráfego e aplique políticas de tráfego aos serviços registrados no Diretório de serviços. Este documento é destinado a desenvolvedores do Cloud Service Mesh que querem integrar os aplicativos deles a outros serviços no Google Cloud.
O Diretório de serviços é um registro de serviço que armazena informações sobre serviços de rede que estão registrados nele, incluindo nomes, locais e atributos. É possível registrar seus serviços automaticamente, capturando todos os detalhes. Além disso, todos os serviços podem ser registrados, independentemente da infraestrutura.
O registro pode conter não apenas os serviços do Google Cloud, mas também serviços híbridos executados no local ou em outras nuvens públicas. Para entender melhor as informações neste documento, recomendamos que você se familiarize com os princípios básicos das operações do Diretório de serviços.
Quando você usa o registro de serviços do Diretório de serviços com o Cloud Service Mesh, a integração disponibiliza os serviços no registro de serviço para os aplicativos na sua malha e para gateways configurados pelo Cloud Service Mesh. A integração da Cloud Service Mesh com o Diretório de serviços é compatível com o Envoy e o gRPC sem proxy para integrações do Diretório de serviços com balanceadores de carga de rede de passagem interna, balanceadores de carga de aplicativo interno e Private Service Connect L4.
Para integrar seus serviços, registre um serviço no Diretório de serviços e, em seguida, vincule-o a um serviço de back-end do Cloud Service Mesh. Depois que uma vinculação é estabelecida, o Cloud Service Mesh consulta o Diretório de serviços para receber informações sobre o serviço registrado e como esse serviço pode ser alcançado. O Cloud Service Mesh também rastreia as alterações no serviço. O uso da integração permite que a malha de serviço e o gateway autogerenciado enviem tráfego para esses serviços. Isso também permite aplicar políticas, por exemplo, políticas avançadas de gerenciamento de tráfego, que você configura no Cloud Service Mesh.
Quando você usa essa integração, a vinculação de serviço atua como um back-end, independentemente do tipo de back-end usado pelo próprio serviço. A integração simplifica a implantação do Cloud Service Mesh, porque ele pode enviar tráfego para o serviço sem considerar o tipo de back-end.
Quando um serviço é registrado no Diretório de serviços, você não precisa configurar grupos de instâncias ou diferentes tipos de grupos de endpoints de rede (NEGs, na sigla em inglês) para ter acesso aos serviços necessários. É possível registrar automaticamente o Google Kubernetes Engine, os balanceadores de carga internos e o Private Service Connect no Diretório de serviços, simplificando ainda mais o acesso do Cloud Service Mesh a esses serviços.
Recursos usados pela integração
A integração entre o Cloud Service Mesh e o Diretório de serviços usa os seguintes recursos.
Serviços do Diretório de serviços
O Diretório de serviços é um registro de serviço. O Diretório de serviços permite registrar vários tipos de serviços, incluindo aqueles baseados no Google Cloud ou em outros ambientes (por exemplo, um data center no local). Cada serviço consiste em um nome exclusivo e zero ou mais endpoints de serviço. Um endpoint de serviço consiste em um endereço, uma porta, propriedades e metadados. Se não houver endpoints,não será possível rotear o tráfego para o serviço.
Vinculações de serviço
Uma vinculação de serviço é um recurso que inclui o nome de domínio totalmente qualificado
(FQDN, na sigla em inglês) do serviço do Diretório de serviços. Por exemplo,
projects/test-proj/locations/us-east1/namespaces/test-namespace/services/test-service
é um FQDN de um serviço do Diretório de serviços.
Serviços de back-end
Os serviços de back-end são recursos de configuração que fornecem informações ao Cloud Service Mesh, incluindo os back-ends, como grupos de instâncias gerenciadas, para os quais o serviço de back-end encaminha o tráfego. Os serviços de back-end que se referem às vinculações de serviço não podem ter back-ends. Para usar a integração do Cloud Service Mesh com o Diretório de serviços, crie um novo serviço de back-end para referenciar vinculações de serviço.
Um serviço de back-end pode ter várias vinculações de serviço. Essa configuração é útil em uma situação em que você tem implantações regionais do mesmo aplicativo. É possível registrar cada implantação regional em uma instância regional do Diretório de serviços, como serviço regional 1 e serviço regional 2. Cada um desses serviços do Diretório de serviços regionais pode ser associado ao mesmo serviço de back-end, usando duas vinculações de serviço. A vinculação de serviço global 1 seria associada ao serviço regional 1 na região A, e a vinculação de serviço global 2 estaria associada ao serviço regional 2 na região B.
Casos de uso
Integrar a implantação do Cloud Service Mesh ao Diretório de serviços permite novos casos de uso que são úteis quando você depende de serviços que outras equipes ou organizações têm ou publicam.
Disponibilizar serviços para o Cloud Service Mesh
O Diretório de serviços se integra a produtos do Google Cloud, como o GKE, os balanceadores de carga de rede de passagem interna e os balanceadores de carga de aplicativo internos. Quando os produtores de serviços criam um serviço do GKE ou um balanceador de carga, eles podem registrá-lo no Diretório de serviços.
Depois que um serviço é registrado no Diretório de serviços, é possível configurar o Cloud Service Mesh para se comunicar com esse serviço. Os clientes da Cloud Service Mesh podem se comunicar com serviços executados atrás de balanceadores de carga de rede e de aplicativo internos.
Melhore a coordenação entre produtores e consumidores de serviços
Grandes empresas têm muitas equipes de desenvolvedores independentes. Essas equipes disponibilizam os serviços para outras equipes para que mais equipes possam usar os recursos fornecidos pelo serviço compartilhado. Isso cria dependências entre equipes. Embora essas dependências permitam que as equipes compartilhem os esforços, elas também criam sobrecarga de coordenação.
Quando você usa o Diretório de serviços, uma equipe (o produtor) registra um serviço que quer disponibilizar para outras equipes ou organizações (consumidores). O produtor compartilha uma referência a esse serviço com um consumidor. O consumidor pode usar essa referência para procurar o serviço do produtor no Diretório de serviços e descobrir os endpoints do serviço. Por exemplo, o endpoint pode ser um endereço IP virtual (VIP, na sigla em inglês) em que o serviço do produtor espera receber tráfego.
A integração do Cloud Service Mesh com o Diretório de serviços permite automatizar o processo ao vincular um serviço do Diretório de serviços a um serviço de back-end do Cloud Service Mesh, que tem as seguintes vantagens:
- A malha de serviços do Cloud resolve automaticamente os endpoints do serviço sincronizando-os com o Diretório de serviços. Se os endpoints do serviço do Diretório de serviços forem atualizados, o Cloud Service Mesh vai sincronizar automaticamente essas mudanças.
- É possível definir várias políticas de gerenciamento de tráfego e roteamento, como tempos limite, no Cloud Service Mesh. Essas políticas permitem ajustar como seus aplicativos emitem solicitações para o serviço do Diretório de serviços. Para informações sobre gerenciamento de tráfego e roteamento no Cloud Service Mesh, consulte Gerenciamento de tráfego avançado.
- O Cloud Service Mesh usa recursos de gerenciamento de tráfego, como balanceamento de carga com base em proximidade, para direcionar o tráfego de aplicativos para endpoints de maneira ideal, por exemplo, minimizando o tempo de ida e volta.
Quando você, um consumidor, usa o Cloud Service Mesh e anexa um serviço de back-end a um serviço do Diretório de serviços, a sobrecarga de coordenação entre equipes é reduzida.
- Anexe o serviço,
Payments
, pelo nome. O Cloud Service Mesh compartilha informações sobre o serviço
Payments
com os clientes.- Por exemplo, os proxies sidecar em execução na malha de serviço
agora sabem o endpoint (por exemplo,
10.0.0.1:80
) em que o serviço pode ser acessado.
- Por exemplo, os proxies sidecar em execução na malha de serviço
agora sabem o endpoint (por exemplo,
Seus aplicativos podem chamar esse serviço por nome sem que você ou seu aplicativo precisem saber nada sobre o endpoint do serviço externo. No diagrama, o serviço é
Payments
.Quando o produtor de serviços atualiza o serviço externo (por exemplo, alterando o endpoint), o Cloud Service Mesh coleta a atualização e a compartilha com os clientes de forma simples.
Acessar serviços dentro de um perímetro usando um ponto de entrada
Uma equipe pode agrupar um conjunto de serviços em um perímetro do VPC Service Controls e expor esses serviços por meio de um único ponto de entrada. Esse ponto de entrada pode ser registrado no Diretório de serviços e disponibilizado para usuários que queiram acessar os serviços dentro do perímetro. Para mais informações sobre perímetros do VPC Service Controls, consulte Detalhes e a configuração do perímetro de serviço.
Por exemplo, uma equipe cria um gateway de entrada usando um balanceador de carga de aplicativo interno que distribui solicitações para uma coleção de serviços do Kubernetes em um cluster. Esse gateway de entrada é registrado automaticamente como um serviço no Diretório de serviços. Um consumidor que queira acessar os serviços do Kubernetes pode procurar esse gateway de entrada no Diretório de serviços. O consumidor pode, então, configurar a malha do Cloud Service Mesh para acessar serviços dentro do perímetro por meio do gateway.
Conectar serviços em vários domínios
Aproveite serviços em diferentes domínios que precisa você precisa conectar.
Conectar serviços em várias organizações
Talvez você queira acesso a serviços de outra organização, como APIs do Google (por exemplo, Cloud SQL) ou serviços gerenciados de terceiros.
O Diretório de serviços tem suporte para o Private Service Connect. Quando você cria um endpoint do Private Service Connect na rede, ele pode ser registrado como um serviço no Diretório de serviços. É possível, então, anexar esse serviço ao Cloud Service Mesh para que clientes de malha, como clientes Envoy e gRPC, e gateways autogerenciados, como a Apigee, possam chamar nesses serviços.
O exemplo anterior, que usa o Cloud Storage, ilustra como você pode usar o Private Service Connect para chamar as APIs do Google usando um endpoint na sua rede de nuvem privada virtual.
Conecte serviços em redes VPC
Algumas empresas usam várias redes VPC como parte da implantação do Google Cloud. Nesses casos, um serviço em uma rede VPC pode precisar acessar um serviço em uma rede VPC diferente. É possível configurar o peering de VPC para acessar um serviço em uma rede VPC diferente. No entanto, essa configuração cria complicações quando há intervalos de endereços IP sobrepostos entre redes com peering.
O Private Service Connect pode tornar um serviço seguro e particular
em uma rede VPC acessível para serviços em outra
rede VPC, usando um único endpoint IP:port
.
Exemplos adicionais entre domínios
Os dois exemplos anteriores ilustram casos em que talvez seja necessário cruzar domínios, mas há muitos outros exemplos. Por exemplo, você cria um gateway que fica na interseção de duas regiões do Google Cloud. Os serviços em uma região podem acessar serviços em outra região por meio desse gateway. Registre o gateway como um serviço no Diretório de serviços e use o gateway com o Cloud Service Mesh, conforme descrito neste documento.
Aplicar políticas quando os serviços forem acessados
O Cloud Service Mesh oferece suporte a recursos como o gerenciamento de tráfego avançado, que podem ser configurados usando políticas. Por exemplo, é possível definir uma política de espelhamento de tráfego para que, sempre que um cliente enviar uma solicitação para um determinado serviço de back-end, ele também seja enviado para um segundo serviço de back-end.
Ao vincular um serviço do Diretório de serviços a um serviço de back-end do Cloud Service Mesh, é possível configurar esses tipos de políticas no Cloud Service Mesh. Os proxies sidecar, proxies de meio ou borda e os clientes sem proxy aprendem sobre essas políticas e as aplicam.
Alguns exemplos:
- Divisão de tráfego baseada em peso, por exemplo, entre dois serviços do Diretório de serviços
- Espelhamento de tráfego, por exemplo, para um serviço de auditoria
Suporte para o Cloud Service Mesh e clientes atuais
Mesmo quando o Cloud Service Mesh é implantado na sua organização, você pode ter clientes que não usam o Cloud Service Mesh. Por exemplo, talvez seja necessário acessar um serviço de uma máquina virtual que não faz parte de uma malha de serviço.
Quando você vincula um serviço do Diretório de serviços a um serviço de back-end do Cloud Service Mesh, os clientes do Cloud Service Mesh recebem automaticamente informações atualizadas sobre esse serviço. Os clientes que não usam o Cloud Service Mesh podem pesquisar e usar informações de serviço no Diretório de serviços.
Limitações
O Cloud Service Mesh não é compatível com NEGs FQDN (INTERNET_FQDN_PORT
NEGs) na
integração do Diretório de serviços.
A seguir
- Saiba como configurar a integração.
- Para mais informações sobre observabilidade com essa integração, consulte Observabilidade e depuração com o Diretório de serviços.