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.

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 eine Mesh-Ressource in diesem Projekt.

    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 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.

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