Cloud Service Mesh-Clientstatus

Wenn Sie Ihr Anwendungsnetzwerk mit Cloud Service Mesh verarbeiten, 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, werden xDS-APIs verwendet, 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 Cloud Service Mesh hergestellt wurde, sendet Cloud Service Mesh die Konfigurationsinformationen an den Client zurück und aktualisiert die Konfiguration nach Bedarf.

Manchmal ist es hilfreich zu verstehen, welche Clients mit Cloud Service Mesh verbunden sind, oder die Konfiguration zu prüfen, die Cloud Service Mesh für seine Clients generiert. Vielleicht möchten Sie zum Beispiel ein Problem beheben oder sich darüber informieren, 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. Auf diese Weise 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.

Verwenden der CSDS API zum Abrufen von Konfigurationsinformationen über Cloud Service Mesh-Clients
Verwenden der CSDS API zum Abrufen von Konfigurationsinformationen über Cloud Service Mesh-Clients (zum Vergrößern klicken)

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

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

Folgen Sie der Anleitung in der README-Datei im Open-Source-Repository, um einen CSDS-Client auf einen lokalen Computer herunterzuladen und zu erstellen. 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 verwenden, wird nur eine Konfiguration zurückgegeben: die Konfiguration für den Client, 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. Sie benötigen Zugriff auf ein Nutzerkonto, das die IAM-Berechtigungen (Identity and Access Management) zum Konfigurieren von Cloud Service Mesh 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

Sie können mit dem CSDS-Client 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, das 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 über das Feld 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 über das Feld 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 prüfen, die Cloud Service Mesh an einen bestimmten Client sendet. Dazu verwenden Sie die Client-ID, die Sie im vorherigen Abschnitt abgerufen haben.

Anhand der detaillierten Konfiguration des Ressourcen-Prototyps können Sie ermitteln, welche xDS API-Version der jeweilige Client verwendet. Wenn in der Konfiguration beispielsweise envoy.api.v2.Cluster angezeigt wird, verwendet der Client die v2 API. Wenn in der Konfiguration envoy.api.v3.Cluster angezeigt wird, verwendet der Client die v3 API. Nur xDS v3 wird unterstützt. Informationen zur Migration von v2 zu v3 finden Sie unter Von xDS v2 zu xDS v3 migrieren.

Service Routing APIs

  1. Aktualisieren Sie die YAML-Datei, die Sie unter Ermitteln, welche Clients derzeit mit Cloud Service Mesh verbunden sind erstellt haben. Fügen Sie ein node-id-Feld hinzu, das die Kundennummer 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 generiert. 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: 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 an den Client über einen aggregierten gRPC-Stream (ADS) gesendet werden.

Ältere APIs

  1. Aktualisieren Sie die YAML-Datei, die Sie unter Ermitteln, welche Clients derzeit mit Cloud Service Mesh verbunden sind erstellt haben. Fügen Sie ein node-id-Feld hinzu, das die Kundennummer 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 generiert. 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: 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 an den Client über einen aggregierten gRPC-Stream (ADS) 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 ein ACK vom Client 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, hat aber kein ACK und kein 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 Ihnen möglicherweise folgende Fehlermeldung vom CSDS-Client angezeigt:

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

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

Beschränkungen

  • Endpunktinformationen sind in der CSDS-Antwort nicht enthalten, da diese Informationen in der CSDS v3 API nicht verfügbar sind.
  • Die Knoten-ID jedes Clients muss innerhalb des Service Mesh eindeutig sein. Wenn mehrere Clients dieselbe Knoten-ID verwenden, wird nur eine Konfiguration zurückgegeben: die Konfiguration für den Client, der zuletzt mit Cloud Service Mesh verbunden wurde.
  • 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