Configurare i riferimenti tra progetti

Questo documento si applica solo a Cloud Service Mesh con le API di routing dei servizi Google Cloud. Non utilizzare questo documento se stai configurando Cloud Service Mesh con le API Istio.

In alcuni scenari, la configurazione del mesh di servizi include servizi che si trovano in progetti diversi. Ad esempio, nei deployment VPC condiviso o VPC in peering, ogni proprietario del progetto può definire il proprio insieme di servizi per renderli disponibili a tutti gli altri progetti.

Configurazione tra progetti con risorse mesh
Configurazione tra progetti con risorse Mesh (fai clic per ingrandire)

Questa configurazione è chiamata configurazione tra progetti perché più risorse definite in progetti diversi vengono combinate per formare una singola configurazione che può essere fornita a un proxy Envoy o a un client gRPC senza proxy.

Le seguenti istruzioni utilizzano le risorse Mesh e HTTPRoute, ma possono essere applicate alla risorsa Gateway e alle risorse GRPCRoute e TCPRoute.

Configurazione della risorsa Mesh

Designa un progetto come progetto host in cui amministrare la risorsa Mesh. Qualsiasi account di servizio con le autorizzazioni per creare, aggiornare o eliminare risorse Mesh in questo progetto può controllare le configurazioni di routing collegate alle risorse Mesh in questo progetto.

  1. Nel file shared-mesh.yaml, crea una specifica Mesh.

    name: shared-mesh
    interceptionPort: 15001
    
  2. Definisci una risorsa Mesh in questo progetto.

    gcloud network-services meshes import shared-mesh \
      --source=shared-mesh.yaml \
      --location=global
    
  3. Annota l'URI completo della risorsa Mesh, perché i proprietari del servizio hanno bisogno dell'URI per collegare i loro percorsi a questo Mesh.

    /projects/HOST_PROJECT_NUMBER/locations/global/meshes/shared-mesh
    
  4. Concedi l'autorizzazione IAM networkservices.meshes.use per questo Mesh ai service account tra progetti che devono essere in grado di allegare le informazioni sui servizi a questo Mesh.

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

Tutti i proprietari del servizio a cui è stata concessa l'autorizzazionenetworkservices.meshes.use possono aggiungere le proprie regole di routing a questa risorsaMesh.

Configurare il routing nei progetti di servizio

Ogni proprietario del servizio deve creare una o più risorse di servizio di backend e Route nel proprio progetto, in modo simile all'esempio nella guida alla configurazione del proxy sidecar. L'unica differenza è che ogni risorsa HTTPRoute, GRPCRoute o TCPRoute deve avere l'URI della risorsa Mesh del progetto host nel campo meshes.

  1. Utilizza quanto segue per compilare il campo meshes. Puoi utilizzare l'ID progetto o il numero del progetto.

    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
    

Crea i servizi client nei progetti di servizio

Quando configuri un client Cloud Service Mesh che si trova in un progetto di servizio, la configurazione di bootstrap deve specificare il numero di progetto in cui si trova la risorsa Mesh e il nome Mesh. Questo requisito si applica sia ai deployment di Envoy Proxy sia ai deployment di gRPC senza proxy. Con i deployment Envoy, utilizza l'opzione --service-proxy:project-number.

Passaggi successivi

  • Per informazioni sull'elenco delle risorse di itinerario associate a una risorsa Mesh o Gateway, vedi Elenca le risorse Route.