Projektübergreifende Referenzen einrichten
Dieses Dokument gilt nur für Cloud Service Mesh mit den Routing-APIs von Google Cloud. 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.
Mesh
-Ressourcen (zum Vergrößern klicken)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 eine
Mesh
-Ressource in diesem Projekt.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 Back-End-Dienst- und Route
-Ressourcen erstellen, ähnlich dem Beispiel in der Sidecar-Proxy-Konfigurationsanleitung.
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 angegeben werden, in der sich die Ressource Mesh
befindet, sowie den Namen Mesh
. 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.