Informazioni sullo stato del client Cloud Service Mesh
Quando utilizzi Cloud Service Mesh per gestire la rete delle applicazioni, considera i seguenti due componenti principali:
- Il livello di infrastruttura. Il livello di infrastruttura, ad esempio i proxy sidecar di Envoy o le librerie gRPC proxyless, è configurato per gestire la rete per conto delle applicazioni.
- Il piano di controllo, Cloud Service Mesh. Il piano di controllo genera configurazione e la distribuisce al livello dell'infrastruttura.
Quando un proxy Envoy o la libreria gRPC viene inizializzato, utilizza le API xDS per collegarsi a Cloud Service Mesh. Il proxy o la libreria agisce come client di Cloud Service Mesh. Dopo che è stata stabilita una connessione tra il client e Cloud Service Mesh, Cloud Service Mesh restituisce 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 ispezionare la configurazione generata da Cloud Service Mesh per i suoi client. Ad esempio, potresti voler eseguire il debug di un problema o capire in che modo le azioni che hai intrapreso durante la configurazione di Cloud Service Mesh influiscono sulla configurazione visualizzata dai tuoi clienti.
Cloud Service Mesh supporta Servizio di rilevamento dello stato dei clienti (CSDS). Utilizzi un client CSDS per eseguire query su questa API. 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 disponibile Repository di Envoy. Il seguente diagramma illustra il modo in cui il client CSDS esegue query su Cloud Service Mesh per informazioni sull'API CSDS di Cloud Service Mesh.
Il client CSDS si connette a Cloud Service Mesh e presenta un numero di progetto e nome della rete, insieme a un set di credenziali. Cloud Service Mesh può quindi rispondere informazioni sui vari client Cloud Service Mesh a cui si riferisce connesso.
Per ulteriori informazioni sul client CSDS, consulta File README.
Prerequisiti
Per connetterti all'API CSDS, devi avere un client CSDS. Puoi ottenere il client in uno dei due seguenti modi:
- Puoi compilare il client utilizzando Cloud Shell.
- Puoi creare il client su un computer di sviluppo locale.
Creare 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 Disattivazione o reimpostazione di Cloud Shell. Ciò garantisce che le configurazioni esistenti non interferiscano con la build.
- Nella console Google Cloud, apri una nuova sessione Cloud Shell.
Esegui il seguente comando per ottenere il codice sorgente utilizzato per compilare 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 compilazione è riuscita, viene visualizzato il testo di aiuto 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 in
istruzioni nel
File README
nel repository open source. Per farlo,
devi anche aver configurato Go e lo strumento make
nel tuo ambiente. Se
Se preferisci non farlo, segui le istruzioni precedenti per Cloud Shell,
in cui Go e lo strumento make
sono disponibili.
Prerequisiti aggiuntivi
Assicurati che ID nodo di ciascun client è univoco all'interno del mesh di servizi. Se più client condividono lo stesso ID nodo, esiste una sola configurazione restituita: la configurazione del client che più di recente ha connessa a Cloud Service Mesh.
Se utilizzi i pacchetti di riferimento di Google, non è necessario impostare manualmente l'ID nodo nei file di bootstrap; un ID nodo è generati 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 IAM (Identity and Access Management) necessarie per configurare Cloud Service Mesh. Le istruzioni riportate di seguito 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 al tuo 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, esegui una delle operazioni seguenti, a seconda su quale risorsa recupera il client xDS:
Se utilizzi le API precedenti, il nome della rete VPC specificata durante la configurazione di Cloud Service Mesh. Questa rete è quella specificata dalla regola di inoltro della mappa di regole di routing.
API di routing dei servizi
Da un account con le autorizzazioni corrette, esegui il seguente 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 del 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 di ambito
Esegui il client CSDS, che utilizza le credenziali generate con gcloud CLI. Sostituisci
PATH_TO_CSDS_REQUEST_YAML_FILE
con il percorso del file YAML che hai 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 ID
mostra gli ID dei client collegati in Cloud Service Mesh. Questi ID cliente vengono forniti utilizzando il camponode_id
nel file di bootstrap utilizzato da Envoy o da gRPC senza proxy quando si connettono Cloud Service Mesh.
API precedenti
Da un account con 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 progetto Google CloudNETWORK_NAME
: la rete VPC specificata dalla regola di inoltro della mappa di regole di routing
Esegui il client CSDS, che utilizza le credenziali generate con gcloud CLI. Sostituisci
PATH_TO_CSDS_REQUEST_YAML_FILE
con il percorso del file YAML che hai 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 ID
mostra gli ID client dei client connessi a Cloud Service Mesh. Questi ID cliente vengono forniti utilizzando il camponode_id
nel file di bootstrap utilizzato da Envoy o da gRPC senza proxy quando si connettono Cloud Service Mesh.
Controllare la configurazione di un client Cloud Service Mesh specifico
Puoi controllare la configurazione che Cloud Service Mesh invia a un determinato utilizzando l'ID client ottenuto nella sezione precedente.
Puoi esaminare la configurazione dettagliata del proto della risorsa per determinare la versione dell'API xDS utilizzata da quel cliente specifico. Ad esempio, se vedi
envoy.api.v2.Cluster
nella configurazione, significa che il client sta utilizzando l'API v2.
Se vedi envoy.api.v3.Cluster
nella configurazione, significa che il client è
utilizzando l'API v3. È supportato solo xDS v3. Per informazioni su come eseguire la migrazione dalla versione 2 alla versione 3, consulta Eseguire la migrazione da xDS v2 a xDS v3.
API per il routing dei servizi
Aggiorna il file YAML creato in Determinare quali client sono attualmente connessi a Cloud Service Mesh. Aggiungi un campo
node-id
che 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 la cui configurazione che stai ispezionando, ad esempio,projects/000000/networks/mesh:mesh1/nodes/00000000-0000-0000-0000-00000000~127.0.0.1
PROJECT_NUMBER
: l'ID univoco del progetto Google 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 di ambito
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 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.JSON
Puoi esaminare una configurazione xDS dettagliata esaminando il file JSON. Questo output contiene lo stato delle singole configurazioni xDS inviate da Cloud Service Mesh al client utilizzando un flusso gRPC aggregato (ANNUNCI).
API precedenti
Aggiorna il file YAML che hai creato in Determina quali client sono attualmente connessi a Cloud Service Mesh. Aggiungi un campo
node-id
che 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_NETWORK_NAME value: string_match: exact: "NETWORK_NAME"
Sostituisci i seguenti valori:
CLIENT_ID
: l'ID del client di cui stai controllando la configurazione, ad esempiof38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6
PROJECT_NUMBER
: l'ID univoco del Progetto Google CloudNETWORK_NAME
: il VPC rete specificata regola di inoltro 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 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.JSON
Puoi esaminare una configurazione xDS dettagliata esaminando il file JSON. Questo output contiene lo stato delle singole configurazioni xDS inviate da Cloud Service Mesh al client utilizzando un flusso gRPC aggregato (ANNUNCI).
Valori di stato
Nella tabella seguente sono elencati i valori dello stato di configurazione xDS che potresti vedere.
Valore | Descrizione |
---|---|
UNKNOWN |
(Valore 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. Tutte le funzionalità vengono restituiti flussi di dati, ma lo stato di configurazione non è disponibile. |
Visualizzazione e monitoraggio
Lo strumento open source del client CSDS ha funzionalità aggiuntive che ti consigliamo di come la visualizzazione e il monitoraggio continuo. Per ulteriori informazioni queste funzioni, consulta le File README nel repository open source.
Messaggio di errore
Potresti visualizzare il seguente messaggio di errore del client CSDS quando abilita l'API Cloud Service Mesh solo nel tuo progetto:
rpc error: code = NotFound desc = Requested entity was not found.
Questo è un comportamento previsto. L'ambito della configurazione di Cloud Service Mesh è in ogni 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é queste informazioni non sono disponibili nell'API CSDS v3.
- L'ID nodo di ogni cliente deve essere univoco all'interno del service mesh. Se più clienti condividono lo stesso ID nodo, viene restituita solo una configurazione, per il client che si è connesso più di recente Cloud Service Mesh.
- A volte potresti vedere una barra rovesciata (\) nel campo ID nodo nella cartella YAML . In questo caso, esegui l'escape della barra rovesciata utilizzando una barra rovesciata aggiuntiva. quando invii una query all'API CSDS per ottenere informazioni di configurazione. Si tratta di un modello problema.
Passaggi successivi
- Per informazioni generali sulla risoluzione dei problemi di Cloud Service Mesh, consulta Risoluzione dei problemi di implementazione che utilizzano Envoy.
- Per risolvere i problemi di configurazione durante il deployment di servizi gRPC proxyless, consulta Risoluzione dei problemi dei deployment che utilizzano gRPC senza proxy.