Projektübergreifende Referenzen einrichten
Dieses Dokument gilt nur für Cloud Service Mesh mit den Google Cloud Service Routing APIs. Verwenden Sie dieses Dokument nicht, wenn Sie Cloud Service Mesh mit den Istio APIs konfigurieren.
In einigen Szenarien umfasst die Service Mesh-Konfiguration Dienste, die sich in verschiedenen Projekten befinden. Bei Bereitstellungen mit freigegebener VPC oder Peering-VPC kann beispielsweise jeder Projektinhaber eigene Dienste definieren, um diese Dienste für alle anderen Projekte verfügbar zu machen.
Diese Konfiguration wird als projektübergreifende Konfiguration bezeichnet, da mehrere in verschiedenen Projekten definierte Ressourcen zu einer einzelnen Konfiguration kombiniert werden, die auf einem Envoy-Proxy-Client oder proxylosen gRPC-Bibliothek-Client bereitgestellt werden kann.
In der folgenden Anleitung werden die Mesh
- und HTTPRoute
-Ressourcen verwendet. Sie können jedoch auch auf die Gateway
-Ressource und die GRPCRoute
- und TCPRoute
-Ressourcen angewendet werden.
Mesh
-Ressource konfigurieren
Legen Sie ein Projekt als Hostprojekt fest, in dem Sie die Mesh
-Ressource verwalten. Jedes Dienstkonto mit den Berechtigungen zum Erstellen, Aktualisieren oder Löschen von Mesh
-Ressourcen in diesem Projekt kann die Routingkonfigurationen steuern, die mit Mesh
-Ressourcen in diesem Projekt verknüpft sind.
Erstellen Sie in der Datei
shared-mesh.yaml
eineMesh
-Spezifikation.name: shared-mesh interceptionPort: 15001
Definieren Sie in diesem Projekt eine
Mesh
-Ressource.gcloud network-services meshes import shared-mesh \ --source=shared-mesh.yaml \ --location=global
Notieren Sie sich den vollständigen URI der
Mesh
-Ressource, da Dienstinhaber den URI benötigen, um ihre Routen an diesesMesh
anzuhängen./projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
Erteilen Sie den projektübergreifenden Dienstkonten, die in der Lage sein sollen, ihre Dienstinformationen an dieses
Mesh
anzuhängen, die IAM-Berechtigungnetworkservices.meshes.use
für diesesMesh
.gcloud projects add-iam-policy-binding [HOST_PROJECT_NUMBER] --member='[HTTP_ROUTE_SERVICE_OWNER_ACCOUNT]' --role='roles/compute.networkAdmin'
Alle Dienstinhaber, denen die Berechtigung networkservices.meshes.use
zugewiesen wurde, können dieser Mesh
-Ressource ihre Routingregeln hinzufügen.
Routing in den Dienstprojekten einrichten
Jeder Dienstinhaber muss in seinem Projekt einen oder mehrere Backend-Dienst- und Route
-Ressourcen erstellen, ähnlich wie im Beispiel im Konfigurationsleitfaden für Sidecar-Proxys.
Der einzige Unterschied besteht darin, dass jede HTTPRoute
-, GRPCRoute
- oder TCPRoute
-Ressource den URI der Mesh
-Ressource des Hostprojekts im Feld meshes
enthalten muss.
Verwenden Sie Folgendes, um das Feld
meshes
auszufüllen. Sie können entweder die Projekt-ID oder die Projektnummer verwenden.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
Clientdienste in den Dienstprojekten erstellen
Wenn Sie einen Cloud Service Mesh-Client konfigurieren, der sich in einem Dienstprojekt befindet, muss in der Bootstrap-Konfiguration die Projektnummer, in der sich die Mesh
-Ressource befindet, und der Mesh
-Name angegeben werden. Diese Anforderung gilt sowohl für Envoy-Proxy-Bereitstellungen als auch für proxylose gRPC-Bereitstellungen.
Verwenden Sie bei Envoy-Bereitstellungen die Option --service-proxy:project-number
.
Nächste Schritte
- Informationen zum Auflisten von Routenressourcen, die mit einer
Mesh
- oderGateway
-Ressource verknüpft sind, finden Sie unterRoute
-Ressourcen auflisten. Diese Feature befindet sich im Vorschaumodus.