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, verwendet er xDS APIs, um eine Verbindung zum Cloud Service Mesh herstellen. Der Proxy oder die Bibliothek fungiert als Client für Cloud Service Mesh. Nachdem eine Verbindung zwischen Client und Cloud Service Mesh sendet Cloud Service Mesh Konfigurationsinformationen an die und aktualisiert die Konfiguration nach Bedarf.
Manchmal ist es hilfreich zu wissen, mit welchen Clients Cloud Service Mesh oder um die Konfiguration zu prüfen, für seine Kundschaft generiert. Vielleicht möchten Sie ein Problem beheben oder wie die Aktionen, die Sie bei der Konfiguration Cloud Service Mesh beeinflusst die Konfiguration, die Ihre Clients sehen.
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.
Der CSDS-Client stellt eine Verbindung zum Cloud Service Mesh her und gibt eine Projektnummer und Name des Netzwerks sowie die Anmeldedaten. Cloud Service Mesh kann dann antworten mit Informationen über die verschiedenen Cloud Service Mesh-Clients, für die es verbunden.
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:
- Sie können den Client mit Cloud Shell erstellen.
- 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:
- 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.
- Öffnen Sie in der Google Cloud Console eine neue Cloud Shell-Sitzung.
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
Gehen Sie zum CSDS-Clientverzeichnis und führen Sie die folgenden Befehle aus:
cd envoy-tools/csds-client/ make init make build
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
Achten Sie darauf, dass die Knoten-ID jedes Clients innerhalb des Service Mesh eindeutig ist. Wenn mehrere Clients dieselbe Knoten-ID haben, ist nur eine Konfiguration zurückgegeben: die Konfiguration für den Client, die zuletzt mit Cloud Service Mesh verbunden.
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.
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:
- Der Name des Mesh-Ressource
- Der Bereichsparameter für die Gateway-Ressource
Wenn Sie den älteren APIs, der Name des Das VPC-Netzwerk, das Sie bei der Konfiguration angegeben haben Cloud Service Mesh. Dieses Netzwerk ist das Netzwerk, das in der Weiterleitungsregel der Routingregelzuordnung angegeben ist.
Service Routing APIs
Führen Sie über ein Konto mit den korrekten Berechtigungen den folgenden Befehl aus:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
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äfixmesh:
, gefolgt vom tatsächlichen Mesh-Namen. Wenn der xDS-Client eine Gateway-Ressource abruft, verwenden Sie das Präfixscope:
, gefolgt vom Namen des Bereichsparameters.
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 verbundenen Clients angezeigt zum Cloud Service Mesh. Diese Client-IDs werden über das Feldnode_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
Führen Sie über ein Konto mit den korrekten Berechtigungen den folgenden Befehl aus:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
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-ProjektsNETWORK_NAME
: Das VPC-Netzwerk, das durch die Weiterleitungsregel der Routingregelzuordnung angegeben wird
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 Feldnode_id
bereitgestellt in der Bootstrap-Datei, die von Envoy oder proxylosem gRPC verwendet wird, wenn eine Verbindung zu Cloud Service Mesh.
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.
Sie können die detaillierte Konfiguration des Ressourcenprototyps untersuchen, um festzustellen,
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. Weitere Informationen
Informationen zur Migration von v2 zu v3 finden Sie unter Migration von xDS v2 zu xDS v3.
Service Routing APIs
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-ProjektsMESH_OR_SCOPE
: Wenn der xDS-Client eine Mesh-Ressource abruft, verwenden Sie das Präfixmesh:
, gefolgt vom tatsächlichen Mesh-Namen. Wenn der xDS-Client eine Gateway-Ressource abruft, verwenden Sie das Präfixscope:
, gefolgt vom Namen des Bereichsparameters.
Führen Sie den CSDS-Client aus. Beim Ausführen des Clients 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
: der Pfad zu Ihrem YAML-DateiFILENAME.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 mit dem Client mithilfe eines aggregierten gRPC-Streams (ANZEIGEN)
Ältere APIs
Aktualisieren Sie die erstellte YAML-Datei in Ermitteln Sie, welche Clients derzeit mit dem Cloud Service Mesh verbunden sind. Fügen Sie das Feld
node-id
hinzu, in dem die Client-ID als Wert verwendet wird.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-ProjektsNETWORK_NAME
: Das VPC-Netzwerk, das durch die Weiterleitungsregel der Routingregelzuordnung angegeben wird
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
: der Pfad zu Ihrem YAML-DateiFILENAME.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 empfangen
eine ACK vom Client. |
ERROR |
Das Cloud Service Mesh hat die Konfiguration an den Client gesendet und eine
NACK vom Client. |
STALE |
Cloud Service Mesh hat die Konfiguration an den Client gesendet, aber nicht
vom Client ein ACK - oder NACK -Element zu 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 finden Sie in der README-Datei im Open-Source-Repository.
Fehlermeldung
Sie sehen möglicherweise die folgende Fehlermeldung vom CSDS-Client, wenn Sie Aktivieren Sie die Cloud Service Mesh API nur in Ihrem Projekt:
rpc error: code = NotFound desc = Requested entity was not found.
Das ist ganz normal. Die Cloud Service Mesh-Konfiguration gilt für Netzwerk. Wenn Sie noch kein Netzwerk erstellt haben und den CSDS-Client ausführen, wird diese Fehlermeldung angezeigt.
Beschränkungen
- Die Endpunktinformationen sind nicht in der CSDS-Antwort enthalten, da dies sind in der CSDS v3 API nicht verfügbar.
- Die Knoten-ID jedes Clients muss innerhalb des Service Mesh eindeutig sein. Wenn mehrere Kunden dieselbe Knoten-ID verwenden, wird nur eine Konfiguration zurückgegeben – die Konfiguration für den Client, mit dem die letzte Verbindung hergestellt wurde. Cloud Service Mesh.
- 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
- Allgemeine Informationen zur Fehlerbehebung für Cloud Service Mesh finden Sie unter Fehlerbehebung bei Bereitstellungen, die Envoy verwenden
- Informationen zum Beheben von Konfigurationsproblemen bei der Bereitstellung proxyloser gRPC-Dienste finden Sie unter Fehlerbehebung bei Bereitstellungen, die proxyloses gRPC verwenden.