Configure referências entre projetos

Este documento aplica-se apenas à Cloud Service Mesh com as Google Cloud APIs de encaminhamento de serviços. Não use este documento se estiver a configurar o Cloud Service Mesh com as APIs Istio.

Em alguns cenários, a configuração da malha de serviços inclui serviços que estão em projetos diferentes. Por exemplo, nas implementações de VPC partilhada ou VPC com intercâmbio, é possível que cada proprietário do projeto defina o seu próprio conjunto de serviços para disponibilizar estes serviços a todos os outros projetos.

Configuração entre projetos com recursos de malha
Configuração entre projetos com recursos Mesh (clique para aumentar)

Esta configuração é denominada configuração entre projetos porque vários recursos definidos em projetos diferentes são combinados para formar uma configuração única que pode ser fornecida a um proxy Envoy ou a um cliente gRPC sem proxy.

As instruções seguintes usam os recursos Mesh e HTTPRoute, mas podem ser aplicadas ao recurso Gateway e aos recursos GRPCRoute e TCPRoute.

Configure o recurso Mesh

Designar um projeto como o projeto anfitrião onde administra o recurso Mesh. Qualquer conta de serviço com as autorizações para criar, atualizar ou eliminar recursos Mesh neste projeto pode controlar as configurações de encaminhamento anexadas a recursos Mesh neste projeto.

  1. No ficheiro shared-mesh.yaml, crie uma especificação Mesh.

    name: shared-mesh
    interceptionPort: 15001
    
  2. Defina um recurso Mesh neste projeto.

    gcloud network-services meshes import shared-mesh \
      --source=shared-mesh.yaml \
      --location=global
    
  3. Anote o URI completo do recurso Mesh, porque os proprietários de serviços precisam do URI para anexar os respetivos trajetos a este Mesh.

    /projects/HOST_PROJECT_NUMBER/locations/global/meshes/shared-mesh
    
  4. Conceda a autorização de IAM networkservices.meshes.use para este Mesh às contas de serviço entre projetos que devem poder anexar as respetivas informações de serviços a este Mesh.

    gcloud projects add-iam-policy-binding HOST_PROJECT_NUMBER
      --member='HTTP_ROUTE_SERVICE_OWNER_ACCOUNT'
      --role='roles/compute.networkAdmin'
    

Todos os proprietários de serviços que tenhamnetworkservices.meshes.use autorização concedida podem adicionar as respetivas regras de encaminhamento a este recursoMesh.

Configure o encaminhamento nos projetos de serviço

Cada proprietário do serviço tem de criar um ou mais serviços de back-end e Route recursos no respetivo projeto, semelhantes ao exemplo no guia de configuração do proxy sidecar. A única diferença é que cada recurso HTTPRoute, GRPCRoute ou TCPRoute tem de ter o URI do recurso Mesh do projeto anfitrião no campo meshes.

  1. Use o seguinte para preencher o campo meshes. Pode usar o ID do projeto ou o número do projeto.

    echo "name: sharedvpc-http-route
    hostnames:
    - helloworld-gce
    meshes:
    - /projects/HOST_PROJECT_NUMBER/locations/global/meshes/shared-mesh
    rules:
    - action:
        destinations:
        - serviceName: \"url/of/the/service\"" | \
    gcloud network-services http-routes import sharedvpc-http-route \
        --source=- \
        --location=global
    

Crie os serviços de cliente nos projetos de serviço

Quando configura um cliente da Cloud Service Mesh localizado num projeto de serviço, a configuração de arranque tem de especificar o número do projeto onde o recurso Mesh está localizado e o nome Mesh. Este requisito aplica-se às implementações do proxy Envoy e às implementações do gRPC sem proxy. Com implementações do Envoy, use a opção --service-proxy:project-number.

O que se segue?

  • Para informações sobre como listar recursos de trajetos associados a um recurso Mesh ou Gateway, consulte o artigo Liste recursos Route.