Configurar referências de projetos cruzados

Em alguns cenários, a configuração da malha de serviço inclui serviços que estão em projetos diferentes. Por exemplo, em implantações de VPC compartilhada ou de VPC com peering, cada proprietário do projeto pode definir o próprio conjunto de serviços para disponibilizar esses serviços a todos os outros projetos.

Configuração entre projetos com recursos do Mesh
Configuração entre projetos comMesh recursos (clique para ampliar)

Essa configuração é chamada de configuração entre projetos porque vários recursos definidos em projetos diferentes são combinados para formar uma única configuração que pode ser veiculada para um proxy Envoy ou gRPC sem proxy. .

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

Configurar o recurso Mesh

Designe um projeto como o projeto host em que você administra o recurso Mesh. Qualquer conta de serviço com as permissões para criar, atualizar ou excluir recursos Mesh neste projeto pode controlar as configurações de roteamento anexadas aos recursos Mesh neste projeto.

  1. No arquivo 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 as rotas a esse Mesh.

    /projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
    
  4. Conceda a permissão networkservices.meshes.use do IAM para esse Mesh às contas de serviço entre projetos que poderão anexar as informações de serviço 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ço com permissão networkservices.meshes.use concedida podem adicionar as regras de roteamento a este recurso Mesh.

Configurar o roteamento nos projetos de serviço

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

  1. Use o seguinte para preencher o campo meshes. Use o ID 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
    

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

Quando você configura um cliente do Traffic Director localizado em um projeto de serviço, a configuração de inicialização precisa especificar o número do projeto em que o recurso Mesh está localizado e o nome Mesh. Esse requisito se aplica a implantações do proxy Envoy e do gRPC sem proxy. Com implantações do Envoy, use a opção --service-proxy:project-number.