Informazioni sullo stato del client di Cloud Service Mesh

Quando utilizzi Cloud Service Mesh per gestire il networking delle applicazioni, valuta la possibilità di i due componenti principali seguenti:

  • Il livello dell'infrastruttura. Il livello dell'infrastruttura, ad esempio il file collaterale di Envoy o proxy gRPC senza proxy, sia configurato per gestire il networking per conto delle tue 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 vengono inizializzati, utilizzano le API xDS per e la connessione a Cloud Service Mesh. Il proxy o la libreria agisce come client Cloud Service Mesh. Dopo aver stabilito una connessione tra il client e Cloud Service Mesh, Cloud Service Mesh invia le informazioni di configurazione al e aggiorna la configurazione in base alle esigenze.

A volte è utile capire a quali client sono connessi Cloud Service Mesh o per ispezionare la configurazione utilizzata da Cloud Service Mesh che genera per i propri clienti. Ad esempio, potresti voler eseguire il debug di un problema potresti voler capire come le azioni che hai eseguito durante la configurazione Cloud Service Mesh influisce sulla configurazione visualizzata dai tuoi client.

Cloud Service Mesh supporta Servizio di rilevamento dello stato dei clienti (CSDS). Utilizzi un client CSDS per eseguire query su questa API. Questo consente di vedere quali client sono connessi a Cloud Service Mesh e e controllare la configurazione generata da Cloud Service Mesh per i 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.

Utilizzo dell'API CSDS per ottenere informazioni di configurazione sui client Cloud Service Mesh.
Utilizzo dell'API CSDS per ottenere informazioni di configurazione sui client Cloud Service Mesh (fai clic per ingrandire)

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:

  1. Puoi creare il client utilizzando Cloud Shell.
  2. 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:

  1. Reimposta Cloud Shell utilizzando le istruzioni in Disabilitazione o reimpostazione di Cloud Shell. Ciò garantisce che le configurazioni esistenti non interferiscano con la build.
  2. Nella console Google Cloud, apri una nuova sessione di Cloud Shell.
  3. Esegui questo comando per ottenere il codice sorgente da utilizzare per la creazione il client CSDS:

    git clone https://github.com/envoyproxy/envoy-tools.git
    
  4. Passa alla directory del client CSDS ed esegui questi comandi:

    cd envoy-tools/csds-client/
    make init
    make build
    
  5. Una volta completata la build, testala con il seguente comando:

    csds-client -help
    

Se la creazione ha esito positivo, verrà visualizzato il testo della guida per il cliente.

Crea il client CSDS su un computer 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

  1. 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; l'ID nodo è generati automaticamente. Se non utilizzi i pacchetti di riferimento, devi impostare manualmente l'ID nodo in ciascuno dei file di bootstrap.

  2. Assicurati di avere accesso a un account utente con Autorizzazioni IAM (Identity and Access Management) necessarie per la configurazione Cloud Service Mesh. Le istruzioni seguenti usano Google Cloud CLI per generare e fornisce automaticamente le credenziali necessarie per il client CSDS. In alternativa, puoi utilizzare il client CSDS e fornire le credenziali strato Add.

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, sono necessari i 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:

    • Il nome del Risorsa mesh
    • La ambito sulla risorsa gateway
  • Se utilizzi older APIs (API precedenti), il nome alla rete VPC che hai specificato durante la configurazione Cloud Service Mesh. Questa rete è quella specificata regola di forwarding della mappa di regole di routing.

API per il routing dei servizi

  1. Da un account con autorizzazioni corrette, esegui questo comando:

    gcloud auth application-default login \
     --billing-project=BILLING_PROJECT_ID
    
  2. Crea un nuovo file in formato YAML con il contenuto seguente.

    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 progetto
    • MESH_OR_SCOPE: se il client xDS recupera un mesh risorsa, utilizza un prefisso di mesh: seguito dal nome effettivo del mesh; if il client xDS recupera una risorsa gateway; utilizza un prefisso di scope: seguito dal nome del parametro di ambito
  1. 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 campo node_id nel file di bootstrap utilizzato da Envoy o da gRPC senza proxy quando si connettono Cloud Service Mesh.

API precedenti

  1. Da un account con autorizzazioni corrette, esegui questo comando:

    gcloud auth application-default login \
     --billing-project=BILLING_PROJECT_ID
    
  2. Crea un nuovo file in formato YAML con il contenuto seguente.

    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 Cloud
    • NETWORK_NAME: la rete VPC specificato dal regola di inoltro della mappa di regole di routing
  3. 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 campo node_id nel file di bootstrap utilizzato da Envoy o da gRPC senza proxy quando si connettono Cloud Service Mesh.

Ispeziona la configurazione per 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 protocollo delle risorse per determinare la versione dell'API xDS utilizzata dal client 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 da v2 a v3, vedi Eseguire la migrazione da xDS v2 a xDS v3.

API di routing dei servizi

  1. 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_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 Cloud
    • MESH_OR_SCOPE: se il client xDS recupera un mesh risorsa, utilizza un prefisso di mesh: seguito dal nome effettivo del mesh; if il client xDS recupera una risorsa gateway; utilizza un prefisso di scope: seguito dal nome del parametro di ambito
  2. Esegui il client CSDS. L'esecuzione del client genera un file JSON. Questo file contiene la configurazione che viene 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 YAML
    • FILENAME.JSON: un nome per il file che contiene la 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

  1. 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 la cui configurazione che stai ispezionando, ad esempio, f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6
    • PROJECT_NUMBER: l'ID univoco del Progetto Google Cloud
    • NETWORK_NAME: il VPC rete specificata regola di inoltro della mappa di regole di routing
  2. Esegui il client CSDS. L'esecuzione del client genera un file JSON. Questo file contiene la configurazione che viene 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 YAML
    • FILENAME.JSON: un nome per il file che contiene la 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 (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 l'ha inviata ricevi un ACK o un NACK dal cliente.
NOT_SENT La configurazione non è stata inviata.
N/A Il client CSDS non includeva 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 delle 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, visualizzi 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 ciascun client deve essere univoco all'interno del mesh di servizi. 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