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.
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.
Dans le fichier
shared-mesh.yaml
, créez une spécificationMesh
.name: shared-mesh interceptionPort: 15001
Définissez une ressource
Mesh
dans ce projet.gcloud network-services meshes import shared-mesh \ --source=shared-mesh.yaml \ --location=global
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 ressourceMesh
./projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
Accordez l'autorisation IAM
networkservices.meshes.use
pour cet élémentMesh
aux comptes de service multi-projets devant pouvoir associer leurs informations de services à cette ressourceMesh
.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
.
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
ouGateway
, consultez la section Répertorier les ressourcesRoute
. Cette fonctionnalité est disponible en version d'évaluation.