Comprendi lo stato del client Cloud Service Mesh
Quando utilizzi Cloud Service Mesh per gestire il networking delle applicazioni, considera i seguenti due componenti principali:
- Il livello dell'infrastruttura. Il livello dell'infrastruttura, come i proxy sidecar Envoy o le librerie gRPC senza proxy, è configurato per gestire il networking per conto delle tue applicazioni.
- Il control plane, Cloud Service Mesh. Il control plane genera la configurazione per il livello dell'infrastruttura e la distribuisce.
Quando viene inizializzato un proxy Envoy o la libreria gRPC, utilizza le API xDS per connettersi a Cloud Service Mesh. Il proxy o la libreria agisce come client per Cloud Service Mesh. Dopo aver stabilito una connessione tra il client e Cloud Service Mesh, Cloud Service Mesh invia le informazioni di configurazione al client e aggiorna la configurazione in base alle esigenze.
A volte è utile capire quali client sono connessi a Cloud Service Mesh o esaminare la configurazione che Cloud Service Mesh genera per i suoi client. Ad esempio, potresti voler eseguire il debug di un problema o capire in che modo le azioni che hai eseguito durante la configurazione di Cloud Service Mesh influiscono sulla configurazione visualizzata dai client.
Cloud Service Mesh supporta l'API Client Status Discovery Service (CSDS). Per eseguire query su questa API, utilizza un client CSDS. In questo modo puoi vedere quali client sono connessi a Cloud Service Mesh e ispezionare la configurazione generata da Cloud Service Mesh per i suoi client.
Il client CSDS è uno strumento open source che puoi ottenere dal repository Envoy. Il seguente diagramma illustra in che modo il client CSDS esegue query su Cloud Service Mesh per ottenere informazioni sull'API CSDS di Cloud Service Mesh.
Il client CSDS si connette a Cloud Service Mesh e presenta un numero di progetto e un nome di rete, insieme a un insieme di credenziali. Cloud Service Mesh può quindi rispondere con informazioni sui vari client Cloud Service Mesh a cui è connesso.
Per saperne di più sul client CSDS, consulta il file README.
Prerequisiti
Per connetterti all'API CSDS, devi avere un client CSDS. Puoi ottenere il client in uno dei due modi seguenti:
- Puoi creare il client utilizzando Cloud Shell.
- Puoi creare il client su una macchina di sviluppo locale.
Crea il client CSDS utilizzando Cloud Shell
Per utilizzare Cloud Shell per creare il client CSDS, segui questi passaggi:
- Reimposta Cloud Shell seguendo le istruzioni riportate in Disabilita o reimposta Cloud Shell. In questo modo, le configurazioni esistenti non interferiscono con la build.
- Nella console Google Cloud , apri una nuova sessione di Cloud Shell.
Esegui questo comando per ottenere il codice sorgente che utilizzi per creare il client CSDS:
git clone https://github.com/envoyproxy/envoy-tools.git
Vai alla directory del client CSDS ed esegui i seguenti comandi:
cd envoy-tools/csds-client/ make init make build
Una volta completata la build, testala con il seguente comando:
csds-client -help
Se la build viene eseguita correttamente, viene visualizzato il testo della guida per il client.
Crea il client CSDS su una macchina di sviluppo locale
Puoi scaricare e creare un client CSDS su un computer locale seguendo le istruzioni riportate nel file README nel repository open source. Per farlo,
devi anche aver configurato Go e lo strumento make nel tuo ambiente. Se preferisci non farlo, utilizza le istruzioni precedenti per Cloud Shell, in cui Go e lo strumento make sono forniti per te.
Prerequisiti aggiuntivi
Assicurati che l'ID nodo di ogni client sia univoco all'interno del mesh di servizi. Se più client condividono lo stesso ID nodo, viene restituita una sola configurazione, ovvero quella del client che si è connesso più di recente a Cloud Service Mesh.
Se utilizzi i pacchetti di riferimento di Google, non è necessario impostare manualmente l'ID nodo nei file di bootstrap, perché viene generato automaticamente. Se non utilizzi i pacchetti di riferimento, devi impostare manualmente l'ID nodo in ciascuno dei file di bootstrap.
Assicurati di avere accesso a un account utente con le autorizzazioni di Identity and Access Management (IAM) necessarie per configurare Cloud Service Mesh. Le seguenti istruzioni utilizzano Google Cloud CLI per generare e fornire automaticamente le credenziali necessarie al client CSDS. In alternativa, puoi utilizzare il client CSDS e fornire le credenziali direttamente.
Determina quali client sono attualmente connessi a Cloud Service Mesh
Puoi utilizzare il client CSDS per determinare quali client sono connessi alla tua configurazione di Cloud Service Mesh.
Per ottenere queste informazioni, devi disporre dei seguenti dettagli:
L'ID del progetto da cui sono state generate le credenziali.
Se utilizzi le API di routing dei servizi, una delle seguenti opzioni, a seconda della risorsa recuperata dal client xDS:
Se utilizzi le API precedenti, il nome della rete VPC che hai specificato durante la configurazione di Cloud Service Mesh. Questa rete è quella specificata dalla regola di forwarding della mappa di regole di instradamento.
API di routing dei servizi
Da un account con le autorizzazioni corrette, esegui questo comando:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
Crea un nuovo file in formato YAML con i seguenti contenuti.
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"Sostituisci i seguenti valori:
PROJECT_NUMBER: l'ID progettoMESH_OR_SCOPE: se il client xDS recupera una risorsa Mesh, utilizza un prefissomesh:seguito dal nome effettivo del mesh; se il client xDS recupera una risorsa Gateway, utilizza un prefissoscope:seguito dal nome del parametro scope
Esegui il client CSDS, che utilizza le credenziali generate da gcloud CLI. Sostituisci
PATH_TO_CSDS_REQUEST_YAML_FILEcon il percorso del file YAML creato nel passaggio precedente.csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
Dovresti vedere un output simile al seguente:
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
La colonna
Client IDmostra gli ID client dei client connessi a Cloud Service Mesh. Questi ID client vengono forniti utilizzando il camponode_idnel file di bootstrap utilizzato da Envoy o gRPC senza proxy quando si connettono a Cloud Service Mesh.
API meno recenti
Da un account con le autorizzazioni corrette, esegui questo comando:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
Crea un nuovo file in formato YAML con i seguenti contenuti.
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"Sostituisci i seguenti valori:
PROJECT_NUMBER: l'ID univoco del progettoGoogle CloudNETWORK_NAME: la rete VPC specificata dalla regola di forwarding della mappa di regole di instradamento
Esegui il client CSDS, che utilizza le credenziali generate da gcloud CLI. Sostituisci
PATH_TO_CSDS_REQUEST_YAML_FILEcon il percorso del file YAML creato nel passaggio precedente.csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
Dovresti vedere un output simile al seguente:
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
La colonna
Client IDmostra gli ID client dei client connessi a Cloud Service Mesh. Questi ID client vengono forniti utilizzando il camponode_idnel file di bootstrap utilizzato da Envoy o gRPC senza proxy quando si connettono a Cloud Service Mesh.
Ispeziona la configurazione di un client Cloud Service Mesh specifico
Puoi esaminare la configurazione che Cloud Service Mesh invia a un determinato client utilizzando l'ID client, che hai ottenuto nella sezione precedente.
Puoi esaminare la configurazione dettagliata del proto della risorsa per determinare quale versione dell'API xDS utilizza quel client specifico. Ad esempio, se nella configurazione vedi envoy.api.v2.Cluster, significa che il client utilizza l'API v2.
Se nella configurazione vedi envoy.api.v3.Cluster, significa che il client utilizza l'API v3. È supportato solo xDS v3. Per informazioni su come eseguire la migrazione dalla versione 2 alla versione 3, consulta Esegui la migrazione da xDS v2 a xDS v3.
API di routing dei servizi
Aggiorna il file YAML che hai creato in Determina quali client sono attualmente connessi a Cloud Service Mesh. Aggiungi un campo
node-idche utilizzi l'ID client come valore.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"Sostituisci i seguenti valori:
CLIENT_ID: l'ID del client di cui stai esaminando la configurazione, ad esempioprojects/000000/networks/mesh:mesh1/nodes/00000000-0000-0000-0000-00000000~127.0.0.1PROJECT_NUMBER: l'ID univoco del progettoGoogle CloudMESH_OR_SCOPE: se il client xDS recupera una risorsa Mesh, utilizza un prefissomesh:seguito dal nome effettivo del mesh; se il client xDS recupera una risorsa Gateway, utilizza un prefissoscope:seguito dal nome del parametro scope
Esegui il client CSDS. L'esecuzione del client genera un file JSON. Questo file contiene la configurazione inviata al client Cloud Service Mesh.
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
Sostituisci i seguenti valori:
PATH_TO_CSDS_REQUEST_YAML_FILE: il percorso del file YAMLFILENAME.JSON: un nome per il file che contiene l'output del client CSDS
Dovresti vedere un output simile al seguente:
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.JSONPuoi esaminare una configurazione xDS dettagliata guardando il file JSON. Questo output contiene lo stato delle singole configurazioni xDS inviate da Cloud Service Mesh al client utilizzando uno stream gRPC aggregato (ADS).
API meno recenti
Aggiorna il file YAML che hai creato in Determina quali client sono attualmente connessi a Cloud Service Mesh. Aggiungi un campo
node-idche utilizza l'ID client come valore.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"Sostituisci i seguenti valori:
CLIENT_ID: l'ID del client di cui stai esaminando la configurazione, ad esempiof38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6PROJECT_NUMBER: l'ID univoco del progettoGoogle CloudNETWORK_NAME: la rete VPC specificata dalla regola di forwarding della mappa di regole di routing
Esegui il client CSDS. L'esecuzione del client genera un file JSON. Questo file contiene la configurazione inviata al client Cloud Service Mesh.
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
Sostituisci i seguenti valori:
PATH_TO_CSDS_REQUEST_YAML_FILE: il percorso del file YAMLFILENAME.JSON: un nome per il file che contiene l'output del client CSDS
Dovresti vedere un output simile al seguente:
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.JSONPuoi esaminare una configurazione xDS dettagliata guardando il file JSON. Questo output contiene lo stato delle singole configurazioni xDS inviate da Cloud Service Mesh al client utilizzando uno stream gRPC aggregato (ADS).
Valori di stato
La tabella seguente elenca i valori dello stato della configurazione xDS che potresti visualizzare.
| Valore | Descrizione |
|---|---|
UNKNOWN |
(Predefinito) Le informazioni sullo stato non sono disponibili o sono sconosciute. |
SYNCED |
Cloud Service Mesh ha inviato la configurazione al client e ha ricevuto un ACK dal client. |
ERROR |
Cloud Service Mesh ha inviato la configurazione al client e ha ricevuto un NACK dal client. |
STALE |
Cloud Service Mesh ha inviato la configurazione al client, ma non ha ricevuto un ACK o un NACK dal client. |
NOT_SENT |
La configurazione non è stata inviata. |
N/A |
Il client CSDS non ha incluso l'ID nodo. Vengono restituiti tutti gli stream connessi, ma lo stato della configurazione non è disponibile. |
Visualizzazione e monitoraggio
Lo strumento open source client CSDS offre funzionalità aggiuntive che potresti voler utilizzare, come la visualizzazione e il monitoraggio continuo. Per saperne di più su queste funzionalità, consulta il file README nel repository open source.
Messaggio di errore
Se abiliti l'API Cloud Service Mesh solo nel tuo progetto, potresti visualizzare il seguente messaggio di errore dal client CSDS:
rpc error: code = NotFound desc = Requested entity was not found.
Questo è un comportamento previsto. La configurazione di Cloud Service Mesh è limitata alla rete. Se non hai ancora creato una rete ed esegui il client CSDS, viene visualizzato questo messaggio di errore.
Limitazioni
- Le informazioni sugli endpoint non sono incluse nella risposta CSDS perché non sono disponibili nell'API CSDS v3.
- L'ID nodo di ogni client deve essere univoco all'interno del mesh di servizi. Se più client condividono lo stesso ID nodo, viene restituita una sola configurazione, ovvero quella del client che si è connesso più di recente a Cloud Service Mesh.
- A volte potresti vedere una barra rovesciata (\) nel campo dell'ID nodo nel file YAML. In questo caso, esegui l'escape della barra rovesciata utilizzando un'altra barra rovesciata quando esegui una query sull'API CSDS per ottenere informazioni sulla configurazione. Questo è un problema noto.
Passaggi successivi
- Per informazioni generali sulla risoluzione dei problemi di Cloud Service Mesh, consulta Risoluzione dei problemi dei deployment che utilizzano Envoy.
- Per risolvere i problemi di configurazione durante il deployment dei servizi gRPC senza proxy, consulta Risoluzione dei problemi dei deployment che utilizzano gRPC senza proxy.