Configurer des références multiprojets

Ce document ne s'applique qu'à Cloud Service Mesh avec API de routage de services. N'utilisez pas ce document si vous configurez Cloud Service Mesh avec les API Istio.

Dans certains cas, la configuration du maillage de services inclut des services qui se trouvent dans différents projets. Par exemple, dans les déploiements de VPC partagé ou de VPC appairés, chaque propriétaire de projet peut définir son propre ensemble de services afin de rendre ces services disponibles pour tous les autres projets.

Configuration multiprojets avec des ressources Mesh
Configuration multiprojet avec les ressources Mesh (cliquez pour agrandir)

Cette configuration est appelée configuration inter-projets, car plusieurs ressources définies dans différents projets sont combinées pour former une seule configuration pouvant être diffusée à un proxy Envoy ou à un client gRPC sans proxy.

Les instructions suivantes utilisent les ressources Mesh et HTTPRoute, mais elles peuvent être appliquées à la ressource Gateway, ainsi qu'aux ressources GRPCRoute et TCPRoute.

Configurer la ressource Mesh

Désignez un projet en tant que projet hôte dans lequel vous administrez la ressource Mesh. Tout compte de service autorisé à créer, mettre à jour ou supprimer des ressources Mesh dans ce projet peut contrôler les configurations de routage associées aux ressources Mesh de ce projet.

  1. Dans le fichier shared-mesh.yaml, créez une spécification Mesh.

    name: shared-mesh
    interceptionPort: 15001
    
  2. Définissez une ressource Mesh dans ce projet.

    gcloud network-services meshes import shared-mesh \
      --source=shared-mesh.yaml \
      --location=global
    
  3. Notez l'URI complet de la ressource Mesh. En effet, les propriétaires de services ont besoin de l'URI pour associer leurs routes à cette ressource Mesh.

    /projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
    
  4. Accordez l'autorisation IAM networkservices.meshes.use pour cet élément Mesh aux comptes de service multi-projets devant pouvoir associer leurs informations de services à cette ressource Mesh.

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

Tous les propriétaires de service auxquels l'autorisation networkservices.meshes.use est accordée peuvent ajouter leurs règles de routage à cette ressource Mesh.

Configurer le routage dans les projets de service

Chaque propriétaire du service doit créer un ou plusieurs service de backend, ainsi que Route. ressources dans son projet, comme dans l'exemple guide de configuration du proxy side-car. La seule différence est que chaque ressource HTTPRoute, GRPCRoute ou TCPRoute doit comporter l'URI de la ressource Mesh du projet hôte dans le champ meshes.

  1. Remplissez le champ meshes à l'aide de la commande suivante. Vous pouvez utiliser l'ID ou le numéro du projet.

    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
    

Créer les services clients dans les projets de service

Lorsque vous configurez un client Cloud Service Mesh situé dans un projet de service, la configuration d'amorçage doit spécifier le numéro du projet où se trouve la ressource Mesh et le nom Mesh. Cette exigence s'applique à la fois aux proxys Envoy et aux déploiements gRPC sans proxy. Avec les déploiements Envoy, utilisez l'option --service-proxy:project-number.

Étape suivante

  • Pour savoir comment répertorier les ressources de routage associées à un Mesh ou Gateway, consultez la section Répertorier les ressources Route. Cette fonctionnalité est disponible en version d'évaluation.