Status des Cloud Service Mesh-Clients verstehen

Wenn Sie Cloud Service Mesh für das Anwendungsnetzwerk verwenden, sollten Sie die folgenden beiden Hauptkomponenten berücksichtigen:

  • Die Infrastrukturebene. Die Infrastrukturebene, z. B. Envoy-Sidecar-Proxys oder proxylose gRPC-Bibliotheken, ist so konfiguriert, dass sie Netzwerke im Auftrag Ihrer Anwendungen verarbeiten.
  • Die Steuerungsebene, Cloud Service Mesh. Die Steuerungsebene generiert die Konfiguration für die Infrastrukturebene und verteilt die Konfiguration auf diese.

Wenn ein Envoy-Proxy oder die gRPC-Bibliothek initialisiert wird, verwendet er xDS APIs, um eine Verbindung zu Cloud Service Mesh herzustellen. Der Proxy oder die Bibliothek fungiert als Client für Cloud Service Mesh. Nachdem eine Verbindung zwischen dem Client und dem Cloud Service Mesh hergestellt wurde, sendet Cloud Service Mesh Konfigurationsinformationen an den Client zurück und aktualisiert die Konfiguration nach Bedarf.

Es kann hilfreich sein zu wissen, welche Clients mit Cloud Service Mesh verbunden sind, oder die Konfiguration zu überprüfen, die Cloud Service Mesh für seine Clients generiert. Sie können beispielsweise ein Problem beheben oder wissen, wie sich die Aktionen, die Sie beim Konfigurieren von Cloud Service Mesh ausgeführt haben, auf die Konfiguration Ihrer Clients auswirken.

Cloud Service Mesh unterstützt die Client Status Discovery Service (CSDS) API. Sie verwenden einen CSDS-Client, um diese API abzufragen. So können Sie sehen, welche Clients mit Cloud Service Mesh verbunden sind, und die Konfiguration prüfen, die Cloud Service Mesh für seine Clients generiert.

Der CSDS-Client ist ein Open-Source-Tool, das Sie im Envoy-Repository erhalten. Das folgende Diagramm zeigt, wie der CSDS-Client Cloud Service Mesh nach Informationen zur CSDS API von Cloud Service Mesh abfragt.

CSDS API verwenden, um Konfigurationsinformationen zu Cloud Service Mesh-Clients abzurufen
Konfigurationsinformationen zu Cloud Service Mesh-Clients mit der CSDS API abrufen (zum Vergrößern klicken)

Der CSDS-Client stellt eine Verbindung zu Cloud Service Mesh her und zeigt eine Projektnummer und einen Netzwerknamen sowie einen Satz Anmeldedaten an. Cloud Service Mesh kann dann mit Informationen zu den verschiedenen Cloud Service Mesh-Clients antworten, mit denen es verbunden ist.

Weitere Informationen zum CSDS-Client finden Sie in der README-Datei.

Vorbereitung

Zum Herstellen einer Verbindung zur CSDS API benötigen Sie einen CSDS-Client. Sie haben zwei Möglichkeiten, den Client abzurufen:

  1. Sie können den Client mit Cloud Shell erstellen.
  2. Sie können den Client auf einer lokalen Entwicklungsmaschine erstellen.

CSDS-Client mithilfe von Cloud Shell erstellen

So erstellen Sie den CSDS-Client mit Cloud Shell:

  1. Setzen Sie Cloud Shell zurück. Folgen Sie dazu der Anleitung unter Cloud Shell deaktivieren oder zurücksetzen. Dadurch wird gewährleistet, dass vorhandene Konfigurationen Ihren Build nicht beeinträchtigen.
  2. Öffnen Sie in der Google Cloud Console eine neue Cloud Shell-Sitzung.
  3. Führen Sie den folgenden Befehl aus, um den Quellcode abzurufen, mit dem Sie den CSDS-Client erstellen:

    git clone https://github.com/envoyproxy/envoy-tools.git
    
  4. Gehen Sie zum CSDS-Clientverzeichnis und führen Sie die folgenden Befehle aus:

    cd envoy-tools/csds-client/
    make init
    make build
    
  5. Testen Sie den Build der Erstellung mit dem folgenden Befehl:

    csds-client -help
    

Wenn der Build erfolgreich ist, wird der Hilfetext für den Client angezeigt.

CSDS-Client auf einer lokalen Entwicklungsmaschine erstellen

Sie können einen CSDS-Client herunterladen und auf einem lokalen Computer erstellen. Folgen Sie dazu der Anleitung in der Readme-Datei im Open-Source-Repository. Dazu müssen in Ihrer Umgebung auch Go und das make-Tool eingerichtet sein. Wenn Sie dies nicht tun möchten, verwenden Sie die vorherige Anleitung für Cloud Shell, in der Go und das make-Tool automatisch bereitgestellt werden.

Zusätzliche Voraussetzungen

  1. Achten Sie darauf, dass die Knoten-ID jedes Clients innerhalb des Service Mesh eindeutig ist. Wenn mehrere Clients dieselbe Knoten-ID haben, wird nur eine Konfiguration zurückgegeben – die Konfiguration des Clients, der zuletzt mit Cloud Service Mesh verbunden wurde.

    Wenn Sie die Referenzpakete von Google verwenden, müssen Sie die Knoten-ID nicht manuell in den Bootstrap-Dateien festlegen. Eine Knoten-ID wird für Sie generiert. Wenn Sie die Referenzpakete nicht verwenden, müssen Sie die Knoten-ID in jeder Ihrer Bootstrap-Dateien manuell festlegen.

  2. Sorgen Sie dafür, dass Sie Zugriff auf ein Nutzerkonto haben, das die zum Konfigurieren von Cloud Service Mesh erforderlichen IAM-Berechtigungen (Identity and Access Management) hat. In der folgenden Anleitung werden mit Google Cloud CLI die vom CSDS-Client benötigten Anmeldedaten generiert und automatisch bereitgestellt. Alternativ können Sie den CSDS-Client verwenden und die Anmeldedaten direkt bereitstellen.

Ermitteln, welche Clients derzeit mit Cloud Service Mesh verbunden sind

Mit dem CSDS-Client können Sie feststellen, welche Clients mit Ihrer Cloud Service Mesh-Konfiguration verbunden sind.

Zum Abrufen dieser Informationen benötigen Sie die folgenden Details:

  • Die ID des Projekts, aus dem die Anmeldedaten generiert wurden.

  • Wenn Sie die Service Routing APIs verwenden, eines der folgenden, je nachdem, welche Ressource der xDS-Client abruft:

  • Wenn Sie die älteren APIs verwenden, der Name des VPC-Netzwerk, den Sie bei der Konfiguration von Cloud Service Mesh angegeben haben. Dieses Netzwerk ist das Netzwerk, das in der Weiterleitungsregel der Routingregelzuordnung angegeben ist.

Service Routing APIs

  1. Führen Sie über ein Konto mit den korrekten Berechtigungen den folgenden Befehl aus:

    gcloud auth application-default login \
     --billing-project=BILLING_PROJECT_ID
    
  2. Erstellen Sie eine neue Datei im YAML-Format mit folgendem Inhalt.

    node_matchers:
      - node_metadatas:
          - path:
              - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER
            value:
              string_match:
                exact: "PROJECT_NUMBER"
          - path:
              - key: TRAFFICDIRECTOR_MESH_SCOPE_NAME
            value:
              string_match:
                exact: "MESH_OR_SCOPE"
    

    Ersetzen Sie die folgenden Werte:

    • PROJECT_NUMBER: die ID des Projekts.
    • MESH_OR_SCOPE: Wenn der xDS-Client eine Mesh-Ressource abruft, verwenden Sie das Präfix mesh:, gefolgt vom tatsächlichen Mesh-Namen. Wenn der xDS-Client eine Gateway-Ressource abruft, verwenden Sie das Präfix scope:, gefolgt vom Namen des Bereichsparameters.
  1. Führen Sie den CSDS-Client aus, der die von der gcloud CLI generierten Anmeldedaten verwendet. Ersetzen Sie PATH_TO_CSDS_REQUEST_YAML_FILE durch den Pfad zur YAML-Datei, die Sie im vorherigen Schritt erstellt haben.

    csds-client \
      -service_uri trafficdirector.googleapis.com:443 \
      -platform gcp \
      -authn_mode auto \
      -api_version v3 \
      -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
    

    Die Ausgabe sollte in etwa so aussehen:

    Client ID                                          xDS stream type    Config status
    603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5    ADS                N/A
    603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5    LRS                N/A
    8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3    ADS                N/A
    8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3    LRS                N/A
    d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4    ADS                N/A
    d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4    LRS                N/A
    f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6    ADS                N/A
    f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6    LRS                N/A
    

    In der Spalte Client ID werden die Client-IDs der Clients angezeigt, die mit Cloud Service Mesh verbunden sind. Diese Client-IDs werden mithilfe des Felds node_id in der Bootstrap-Datei bereitgestellt, die von Envoy oder proxylosem gRPC verwendet wird, wenn sie eine Verbindung zu Cloud Service Mesh herstellen.

Ältere APIs

  1. Führen Sie über ein Konto mit den korrekten Berechtigungen den folgenden Befehl aus:

    gcloud auth application-default login \
     --billing-project=BILLING_PROJECT_ID
    
  2. Erstellen Sie eine neue Datei im YAML-Format mit folgendem Inhalt.

    node_matchers:
      - node_metadatas:
          - path:
              - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER
            value:
              string_match:
                exact: "PROJECT_NUMBER"
          - path:
              - key: TRAFFICDIRECTOR_NETWORK_NAME
            value:
              string_match:
                exact: "NETWORK_NAME"
    

    Ersetzen Sie die folgenden Werte:

    • PROJECT_NUMBER: Die eindeutige ID des Google Cloud-Projekts
    • NETWORK_NAME: Das VPC-Netzwerk, das durch die Weiterleitungsregel der Routingregelzuordnung angegeben wird
  3. Führen Sie den CSDS-Client aus, der die von der gcloud CLI generierten Anmeldedaten verwendet. Ersetzen Sie PATH_TO_CSDS_REQUEST_YAML_FILE durch den Pfad zur YAML-Datei, die Sie im vorherigen Schritt erstellt haben.

    csds-client \
      -service_uri trafficdirector.googleapis.com:443 \
      -platform gcp \
      -authn_mode auto \
      -api_version v3 \
      -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
    

    Die Ausgabe sollte in etwa so aussehen:

    Client ID                                          xDS stream type    Config status
    603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5    ADS                N/A
    603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5    LRS                N/A
    8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3    ADS                N/A
    8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3    LRS                N/A
    d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4    ADS                N/A
    d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4    LRS                N/A
    f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6    ADS                N/A
    f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6    LRS                N/A
    

    In der Spalte Client ID werden die Client-IDs der Clients angezeigt, die mit Cloud Service Mesh verbunden sind. Diese Client-IDs werden mithilfe des Felds node_id in der Bootstrap-Datei bereitgestellt, die von Envoy oder proxylosem gRPC verwendet wird, wenn sie eine Verbindung zu Cloud Service Mesh herstellen.

Konfiguration für einen bestimmten Cloud Service Mesh-Client prüfen

Sie können die Konfiguration, die Cloud Service Mesh an einen bestimmten Client sendet, mithilfe der Client-ID prüfen, die Sie im vorherigen Abschnitt erhalten haben.

Sie können sich die detaillierte Konfiguration des Ressourcenprototyps ansehen, um zu ermitteln, welche xDS API-Version der jeweilige Client verwendet. Wenn beispielsweise envoy.api.v2.Cluster in der Konfiguration steht, bedeutet dies, dass der Client die API V2 verwendet. Wenn in der Konfiguration envoy.api.v3.Cluster angezeigt wird, verwendet der Client die API V3.

Service Routing APIs

  1. Aktualisieren Sie die YAML-Datei, die Sie unter Bestimmen, welche Clients aktuell mit Cloud Service Mesh verbunden sind erstellt haben. Fügen Sie das Feld node-id hinzu, das die Client-ID als Wert verwendet.

    node_matchers:
      - node_id:
          exact: "CLIENT_ID"
        node_metadatas:
          - path:
              - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER
            value:
              string_match:
                exact: "PROJECT_NUMBER"
          - path:
              - key: TRAFFICDIRECTOR_MESH_SCOPE_NAME
            value:
              string_match:
                exact: "MESH_OR_SCOPE_NAME"
    

    Ersetzen Sie die folgenden Werte:

    • CLIENT_ID: Die ID des Clients, dessen Konfiguration Sie prüfen, z. B. projects/000000/networks/mesh:mesh1/nodes/00000000-0000-0000-0000-00000000~127.0.0.1
    • PROJECT_NUMBER: Die eindeutige ID des Google Cloud-Projekts
    • MESH_OR_SCOPE: Wenn der xDS-Client eine Mesh-Ressource abruft, verwenden Sie das Präfix mesh:, gefolgt vom tatsächlichen Mesh-Namen. Wenn der xDS-Client eine Gateway-Ressource abruft, verwenden Sie das Präfix scope:, gefolgt vom Namen des Bereichsparameters.
  2. Führen Sie den CSDS-Client aus. Wenn Sie den Client ausführen, wird eine JSON-Datei erstellt. Diese Datei enthält die Konfiguration, die an den Cloud Service Mesh-Client gesendet wird.

    csds-client \
     -service_uri trafficdirector.googleapis.com:443 \
     -platform gcp \
     -authn_mode auto \
     -api_version v3 \
     -request_file PATH_TO_CSDS_REQUEST_YAML_FILE \
     -output_file FILENAME.JSON
    

    Ersetzen Sie die folgenden Werte:

    • PATH_TO_CSDS_REQUEST_YAML_FILE: der Pfad zur YAML-Datei
    • FILENAME.JSON: Ein Name für die Datei, die die Ausgabe des CSDS-Clients enthält

    Die Ausgabe sollte in etwa so aussehen:

    Client ID                                          xDS stream type    Config status
    8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3    ADS                LDS  SYNCED
                                                                          RDS  SYNCED
                                                                          CDS  STALE
    Config has been saved to FILENAME.JSON
    

    Sie können eine detaillierte xDS-Konfiguration prüfen, indem Sie sich die JSON-Datei ansehen. Diese Ausgabe enthält den Status einzelner xDS-Konfigurationen, die von Cloud Service Mesh mithilfe eines aggregierten gRPC-Streams (ADS) an den Client gesendet werden.

Ältere APIs

  1. Aktualisieren Sie die YAML-Datei, die Sie unter Bestimmen, welche Clients aktuell mit Cloud Service Mesh verbunden sind erstellt haben. Fügen Sie das Feld node-id hinzu, das die Client-ID als Wert verwendet.

    node_matchers:
      - node_id:
          exact: "CLIENT_ID"
        node_metadatas:
          - path:
              - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER
            value:
              string_match:
                exact: "PROJECT_NUMBER"
          - path:
              - key: TRAFFICDIRECTOR_NETWORK_NAME
            value:
              string_match:
                exact: "NETWORK_NAME"
    

    Ersetzen Sie die folgenden Werte:

    • CLIENT_ID: Die ID des Clients, dessen Konfiguration Sie prüfen, z. B. f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6
    • PROJECT_NUMBER: Die eindeutige ID des Google Cloud-Projekts
    • NETWORK_NAME: Das VPC-Netzwerk, das durch die Weiterleitungsregel der Routingregelzuordnung angegeben wird
  2. Führen Sie den CSDS-Client aus. Wenn Sie den Client ausführen, wird eine JSON-Datei erstellt. Diese Datei enthält die Konfiguration, die an den Cloud Service Mesh-Client gesendet wird.

    csds-client \
     -service_uri trafficdirector.googleapis.com:443 \
     -platform gcp \
     -authn_mode auto \
     -api_version v3 \
     -request_file PATH_TO_CSDS_REQUEST_YAML_FILE \
     -output_file FILENAME.JSON
    

    Ersetzen Sie die folgenden Werte:

    • PATH_TO_CSDS_REQUEST_YAML_FILE: der Pfad zur YAML-Datei
    • FILENAME.JSON: Ein Name für die Datei, die die Ausgabe des CSDS-Clients enthält

    Die Ausgabe sollte in etwa so aussehen:

    Client ID                                          xDS stream type    Config status
    8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3    ADS                LDS  SYNCED
                                                                          RDS  SYNCED
                                                                          CDS  STALE
    Config has been saved to FILENAME.JSON
    

    Sie können eine detaillierte xDS-Konfiguration prüfen, indem Sie sich die JSON-Datei ansehen. Diese Ausgabe enthält den Status einzelner xDS-Konfigurationen, die von Cloud Service Mesh mithilfe eines aggregierten gRPC-Streams (ADS) an den Client gesendet werden.

Statuswerte

In der folgenden Tabelle sind die für Sie eventuell angezeigten xDS-Konfigurationsstatuswerte aufgeführt.

Wert Beschreibung
UNKNOWN (Standardeinstellung) ⁣Statusinformationen sind nicht verfügbar oder unbekannt.
SYNCED Cloud Service Mesh hat die Konfiguration an den Client gesendet und vom Client ein ACK erhalten.
ERROR ⁣ Cloud Service Mesh hat die Konfiguration an den Client gesendet und ein NACK vom Client erhalten.
STALE Cloud Service Mesh hat die Konfiguration an den Client gesendet, aber kein ACK oder NACK vom Client erhalten.
NOT_SENT Die Konfiguration wurde nicht gesendet.
N/A Der CSDS-Client enthielt nicht die Knoten-ID. Alle verbundenen Streams werden zurückgegeben, aber der Konfigurationsstatus ist nicht verfügbar.

Visualisierung und Monitoring

Das Open-Source-Tool des CSDS-Clients bietet zusätzliche Features, die Sie verwenden können, z. B. Visualisierung und kontinuierliches Monitoring. Weitere Informationen zu diesen Funktionen finden Sie in der Readme-Datei im Open-Source-Repository.

Fehlermeldung

Wenn Sie die Cloud Service Mesh API nur in Ihrem Projekt aktivieren, wird vom CSDS-Client möglicherweise die folgende Fehlermeldung angezeigt:

rpc error: code = NotFound desc = Requested entity was not found.

Das ist ganz normal. Die Cloud Service Mesh-Konfiguration wird pro Netzwerk beschränkt. Wenn Sie noch kein Netzwerk erstellt haben und den CSDS-Client ausführen, wird diese Fehlermeldung angezeigt.

Beschränkungen

  • Endpunktinformationen sind nicht in der CSDS-Antwort enthalten, da diese Informationen in der CSDS v3 API nicht verfügbar sind.
  • Die Knoten-ID jedes Clients darf innerhalb des Service Mesh nur einmal vorkommen. Wenn mehrere Clients dieselbe Knoten-ID verwenden, wird nur eine Konfiguration zurückgegeben – die Konfiguration des Clients, der zuletzt eine Verbindung zu Cloud Service Mesh hergestellt hat.
  • Manchmal wird im Knoten-ID-Feld der YAML-Datei ein umgekehrter Schrägstrich (\) angezeigt. Maskieren Sie in diesem Fall den umgekehrten Schrägstrich mit einem zusätzlichen umgekehrten Schrägstrich, wenn Sie die CSDS API nach Konfigurationsinformationen abfragen. Dieses Problem ist bekannt.

Nächste Schritte