Configure referências entre projetos

Este documento aplica-se apenas à Cloud Service Mesh com as APIs de encaminhamento de serviços. Google CloudNão use este documento se estiver a configurar a 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 publicada num proxy Envoy ou num 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 do 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 ao proxy Envoy e às implementações 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.