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.

Projektübergreifende Konfiguration mit Mesh-Ressourcen
Projektübergreifende Konfiguration mit 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.

  1. Erstellen Sie in der Datei shared-mesh.yaml eine Mesh-Spezifikation.

    name: shared-mesh
    interceptionPort: 15001
    
  2. Definieren Sie in diesem Projekt eine Mesh-Ressource.

    gcloud network-services meshes import shared-mesh \
      --source=shared-mesh.yaml \
      --location=global
    
  3. Notieren Sie sich den vollständigen URI der Mesh-Ressource, da Dienstinhaber den URI benötigen, um ihre Routen an dieses Mesh anzuhängen.

    /projects/[HOST_PROJECT_NUMBER]/locations/global/meshes/shared-mesh
    
  4. Erteilen Sie den projektübergreifenden Dienstkonten, die in der Lage sein sollen, ihre Dienstinformationen an dieses Mesh anzuhängen, die IAM-Berechtigung networkservices.meshes.use für dieses Mesh.

    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 jeweils HTTPRoute, GRPCRoute und TCPRoute Ressource muss den URI der Mesh-Ressource des Hostprojekts in der meshes haben ein.

  1. 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- oder Gateway-Ressource verknüpft sind, finden Sie unter Route-Ressourcen auflisten. Diese Feature befindet sich im Vorschaumodus.