Installazione di Anthos Service Mesh su un cluster esistente utilizzando l'interfaccia a riga di comando di GKE Enterprise

Questa guida spiega come eseguire un'installazione pulita della versione di Anthos Service Mesh 1.5.10-asm.2 su un cluster Google Cloud GKE esistente utilizzando l'interfaccia a riga di comando (CLI) di GKE Enterprise. Tieni presente le seguenti limitazioni con questa versione beta dell'interfaccia a riga di comando di GKE Enterprise:

L'installazione abilita le seguenti funzionalità:

Questa guida spiega anche come registrare il tuo cluster nel parco risorse che si trova nello stesso progetto Google Cloud del cluster. Un parco risorse consente di organizzare i cluster per semplificare la gestione multi-cluster. Registrando i cluster in un parco risorse, puoi raggruppare servizi e altre infrastrutture in base alle esigenze per applicare criteri coerenti.

Prima di iniziare

Prima di iniziare l'installazione:

Requisiti

  • Devi disporre di una licenza di prova o di un abbonamento GKE Enterprise. Per maggiori dettagli, consulta la guida ai prezzi di GKE Enterprise.

  • Il cluster GKE deve soddisfare i seguenti requisiti:

  • Per essere incluse nel mesh di servizi, è necessario assegnare un nome alle porte di servizio, che deve includere il protocollo della porta nella seguente sintassi: name: protocol[-suffix] dove le parentesi quadre indicano un suffisso facoltativo che deve iniziare con un trattino. Per saperne di più, vedi Denominazione delle porte dei servizi.

  • Se stai installando Anthos Service Mesh su un cluster privato, devi aggiungere una regola firewall per aprire la porta 15017 se vuoi utilizzare l'inserimento automatico di sidecar. Se non aggiungi la regola firewall e l'inserimento automatico di sidecar è abilitato, ricevi un errore quando esegui il deployment dei carichi di lavoro. Per maggiori dettagli sull'aggiunta di una regola firewall, consulta Aggiunta di regole firewall per casi d'uso specifici.

  • Se hai creato un perimetro di servizio nell'organizzazione, potrebbe essere necessario aggiungere il servizio Mesh CA al perimetro. Per ulteriori informazioni, consulta Aggiunta di Mesh CA a un perimetro di servizio.

Limitazioni

È supportata una sola installazione di Anthos Service Mesh per progetto Google Cloud. Non sono supportati più deployment mesh in un singolo progetto.

Dati del certificato

I certificati di Mesh CA includono i seguenti dati sui servizi dell'applicazione:

  • ID progetto Google Cloud
  • Lo spazio dei nomi GKE
  • Il nome dell'account di servizio GKE

Impostazione delle impostazioni predefinite per progetti e cluster

  1. Ottieni l'ID del progetto in cui è stato creato il cluster:

    gcloud

    gcloud projects list

    Console

    1. Nella console Google Cloud, vai alla pagina Dashboard:

      Vai alla pagina Dashboard

    2. Fai clic sull'elenco a discesa Seleziona da nella parte superiore della pagina. Nella finestra Seleziona da visualizzata, seleziona il tuo progetto. L'ID progetto viene visualizzato nella scheda Informazioni sul progetto della dashboard del progetto.

  2. Crea una variabile di ambiente per l'ID progetto:

    export PROJECT_ID=YOUR_PROJECT_ID
  3. Imposta l'ID progetto predefinito per Google Cloud CLI:

    gcloud config set project ${PROJECT_ID}
    
  4. Crea le seguenti variabili di ambiente:

    • Imposta il nome del cluster:

      export CLUSTER_NAME=YOUR_CLUSTER_NAME
    • Imposta CLUSTER_LOCATION sulla zona o sulla regione del cluster:

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
  5. Imposta la zona o la regione predefinita per Google Cloud CLI.

    • Se hai un cluster a zona singola, imposta la zona predefinita:

      gcloud config set compute/zone ${CLUSTER_LOCATION}
    • Se hai un cluster a livello di regione, imposta la regione predefinita:

      gcloud config set compute/region ${CLUSTER_LOCATION}

Preparazione dei file di configurazione delle risorse

Utilizzerai l'interfaccia a riga di comando di GKE Enterprise e kustomize per esportare e applicare patch ai file di risorse di Config Connector che utilizzerai per aggiornare un cluster esistente con le opzioni richieste da Anthos Service Mesh. La risorsa Config Connector è la rappresentazione Kubernetes delle risorse Google Cloud.

Esporta i file di configurazione delle risorse

Puoi utilizzare il comando gcloud beta anthos export per eseguire l'output dei file di configurazione delle risorse per un cluster esistente.

  1. Crea una directory per le risorse Anthos Service Mesh. Per praticità, i passaggi seguenti fanno riferimento alla directory che crei come ASM_RESOURCES.

  2. Passa alla directory ASM_RESOURCES.

  3. Scarica il pacchetto asm-patch nella directory di lavoro attuale:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-patch@release-1.5-asm .
    

    Il comando crea una sottodirectory denominata asm-patch/.

  4. Aggiungi un nome di directory in una variabile di ambiente denominata BASE_DIR. Quando esegui il comando gcloud beta anthos export su un cluster esistente, l'interfaccia a riga di comando di GKE Enterprise crea una directory con il nome specificato in BASE_DIR e restituisce i file delle risorse di Config Connector nella directory.

    export BASE_DIR=YOUR_BASE_DIR

    Se configurerai più di un cluster, ti consigliamo di utilizzare il nome del cluster come nome della directory. Ad esempio, se stai preparando i file di configurazione delle risorse per due cluster, dopo aver eseguito il comando gcloud beta anthos export per cluster-1 e cluster-2, la struttura della directory dovrebbe essere simile alla seguente:

    schizzo della struttura di una directory

    Nel diagramma, cluster-1 e cluster-2 sono directory contenenti i file di configurazione delle risorse di Config Connector per i cluster denominati cluster-1 e cluster-2.

  5. Esporta i file di configurazione delle risorse di Config Connector:

    gcloud beta anthos export ${CLUSTER_NAME} --output-directory ${BASE_DIR}
    

    Il comando export completa l'ID progetto e la zona/regione del cluster nei file di configurazione delle risorse per il cluster, in modo che corrispondano alle impostazioni attuali di gcloud config. Se vuoi esportare i file di configurazione delle risorse per un cluster che non corrisponde alle impostazioni attuali di gcloud config, puoi specificare le seguenti opzioni della riga di comando:

    • -p PROJECT_ID
    • -l YOUR_ZONE_OR_REGION

    Controlla gcloud beta anthos export --help per ulteriori dettagli.

Applica la patch ai file di configurazione delle risorse

Puoi utilizzare i setter kpt e kustomize di GKE Enterprise per aggiornare i file di configurazione delle risorse.

  1. Elenca i setter di configurazione disponibili nel pacchetto asm-patch:

    kpt cfg list-setters asm-patch/
    

    L'output è simile al seguente:

    NAME                           VALUE                  SET BY   DESCRIPTION   COUNT
    base-dir                       base                                           1
    gcloud.compute.location        your_zone_or_region                            1
    gcloud.container.cluster       your_cluster_name                              3
    gcloud.core.project            your_project_id        kpt                    11
    gcloud.project.projectNumber   your_project_number    kpt                     1
  2. Imposta il percorso relativo tra le directory ${BASE_DIR} e asm-patch:

    kpt cfg set asm-patch/ base-dir ../${BASE_DIR}
  3. Imposta il nome del cluster:

    kpt cfg set asm-patch/ gcloud.container.cluster ${CLUSTER_NAME}
  4. Se non hai configurato i valori predefiniti di gcloud config o se vuoi modificare i valori, esegui i seguenti setter:

    kpt cfg set asm-patch/ gcloud.compute.location ${CLUSTER_LOCATION}
    kpt cfg set asm-patch/ gcloud.core.project ${PROJECT_ID}
  5. Applica le patch di Anthos Service Mesh ai file di configurazione delle risorse del cluster:

    pushd ${BASE_DIR} && kustomize create --autodetect \
    --namespace ${PROJECT_ID} && popd
    pushd asm-patch && kustomize build -o ../${BASE_DIR}/all.yaml && popd
  6. Convalida le configurazioni finali delle risorse:

    kpt fn source ${BASE_DIR} | kpt fn run --image gcr.io/kustomize-functions/validate-asm:v0.1.0
    

    Se sono presenti errori, correggili e convalida nuovamente le configurazioni delle risorse.

  7. Facoltativamente, puoi registrare i file di configurazione delle risorse nel tuo sistema di controllo del codice sorgente, ad esempio Cloud Source Repositories, in modo da poter tenere traccia delle modifiche ai file.

Aggiornamento del cluster e installazione di Anthos Service Mesh

L'interfaccia a riga di comando di GKE Enterprise aggiorna il cluster con le seguenti opzioni, richieste da Anthos Service Mesh:

  • Aggiunge un'etichetta mesh_id al cluster nel formato proj-PROJECT_NUMBER, dove PROJECT_NUMBER è il numero del progetto in cui è stato creato il cluster. L'etichetta mesh_id è necessaria affinché le metriche vengano visualizzate nella dashboard Anthos Service Mesh nella console Google Cloud. Se il cluster ha etichette esistenti, l'interfaccia a riga di comando di GKE Enterprise le conserva.

  • Attiva Workload Identity.

  • Abilita Kubernetes Engine Monitoring.

  • Registra il cluster in una panoramica del canale di rilascio.

Esegui questo comando per aggiornare il cluster e installare Anthos Service Mesh:

gcloud beta anthos apply ${BASE_DIR}

Il comando aggiorna il cluster con le opzioni richieste, quindi esegue il deployment di Anthos Service Mesh. Il completamento della procedura richiede circa 30 minuti.

Controllo dei componenti del piano di controllo

Verifica che i pod del piano di controllo in istio-system siano attivi:

kubectl get pod -n istio-system

L'output previsto è simile al seguente:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-ingressgateway-74cc894bfd-786rg     1/1     Running     0          7m19s
istiod-78cdbbbdb-d7tps                    1/1     Running     0          7m36s
promsd-576b8db4d6-lqf64                   2/2     Running     1          7m19s

Registrazione del cluster in corso

Devi registrare il tuo cluster con il parco risorse del progetto per ottenere l'accesso all'interfaccia utente unificata nella console Google Cloud. Un parco risorse offre un modo unificato per visualizzare e gestire i cluster e i relativi carichi di lavoro, inclusi i cluster esterni a Google Cloud.

Crea un account di servizio e un file di chiavi Google Cloud

Per registrare un cluster è necessario un file JSON contenente le credenziali dell'account di servizio. Per seguire il principio del privilegio minimo, ti consigliamo di creare un account di servizio distinto per ogni cluster registrato.

Per creare un account di servizio e un file della chiave:

  1. Seleziona un nome per l'account di servizio e crea una variabile di ambiente:

    export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
    
  2. Crea l'account di servizio:

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
  3. Elenca tutti gli account di servizio di un progetto per confermare che l'account di servizio sia stato creato:

    gcloud iam service-accounts list
  4. Associa il ruolo IAM gkehub.connect all'account di servizio:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
       --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
       --role="roles/gkehub.connect"
  5. Crea una variabile di ambiente per il percorso file locale in cui vuoi salvare il file JSON. Ti consigliamo di assegnare un nome al file utilizzando il nome dell'account di servizio e l'ID progetto, ad esempio: /tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json

    export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
  6. Scarica il file JSON della chiave privata dell'account di servizio:

    gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \
       --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Registra il cluster

Nel comando seguente, sostituisci MEMBERSHIP_NAME con un nome che rappresenta in modo univoco il cluster registrato nell'hub.

gcloud container hub memberships register MEMBERSHIP_NAME \
    --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \
    --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}

Il comando risponde con un output simile al seguente:

kubeconfig entry generated for CLUSTER_NAME.
Waiting for membership to be created...done.
Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME]
Generating the Connect Agent manifest...
Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]...
Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect].
Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.

Questa chiave dell'account di servizio è archiviata come secret denominato creds-gcp nello spazio dei nomi gke-connect.

Per ulteriori informazioni sulla registrazione del cluster, consulta Registrazione di un cluster nella documentazione di Connect.

Inserimento di proxy sidecar

Anthos Service Mesh utilizza i proxy sidecar per migliorare la sicurezza, l'affidabilità e l'osservabilità della rete. Con Anthos Service Mesh, queste funzioni vengono astratte dal container principale dell'applicazione e implementate in un proxy out-of-process comune, fornito come container separato nello stesso pod.

Tutti i carichi di lavoro in esecuzione sul tuo cluster prima dell'installazione di Anthos Service Mesh devono avere inserito o aggiornato il proxy sidecar in modo che abbia la versione attuale di Anthos Service Mesh. Prima di eseguire il deployment di nuovi carichi di lavoro, assicurati di configurare l'inserimento del proxy sidecar in modo che Anthos Service Mesh possa monitorare e proteggere il traffico.

Puoi abilitare l'inserimento automatico di sidecar con un solo comando, ad esempio:

kubectl label namespace NAMESPACE istio-injection=enabled --overwrite

dove NAMESPACE è il nome dello spazio dei nomi per i servizi della tua applicazione oppure default se non hai creato esplicitamente uno spazio dei nomi.

Per maggiori informazioni, consulta Inserimento di proxy sidecar.

Visualizzazione delle pagine di Anthos Service Mesh

Dopo aver eseguito il deployment dei carichi di lavoro nel tuo cluster con i proxy sidecar inseriti, puoi esplorare le pagine Anthos Service Mesh nella console Google Cloud per vedere tutte le funzionalità di osservabilità offerte da Anthos Service Mesh. Tieni presente che sono necessari circa uno o due minuti per la visualizzazione dei dati di telemetria nella console Google Cloud dopo il deployment dei carichi di lavoro.

L'accesso ad Anthos Service Mesh nella console Google Cloud è controllato da Identity and Access Management (IAM). Per accedere alle pagine di Anthos Service Mesh, un Proprietario progetto deve concedere agli utenti il ruolo Editor di progetto o Visualizzatore oppure i ruoli più restrittivi descritti in Controllare l'accesso ad Anthos Service Mesh nella console Google Cloud.

  1. Nella console Google Cloud, vai ad Anthos Service Mesh.

    Vai ad Anthos Service Mesh

  2. Seleziona il progetto Google Cloud dall'elenco a discesa nella barra dei menu.

  3. Se disponi di più mesh di servizi, selezionalo dall'elenco a discesa Mesh di servizi.

Per scoprire di più, consulta Esplorazione di Anthos Service Mesh nella console Google Cloud.

Oltre alle pagine Anthos Service Mesh, le metriche relative ai tuoi servizi (ad esempio il numero di richieste ricevute da un determinato servizio) vengono inviate a Cloud Monitoring, dove vengono visualizzate in Metrics Explorer.

Per visualizzare le metriche:

  1. Nella console Google Cloud, vai alla pagina Monitoring:

    Vai a Monitoring

  2. Seleziona Risorse > Metrics Explorer.

Per un elenco completo delle metriche, consulta la pagina relativa alle metriche Istio nella documentazione di Cloud Monitoring.

Installazione di un esempio utilizzando kpt

Facoltativamente, puoi utilizzare kpt per installare l'esempio Hipster nel cluster.

  1. Scarica l'esempio:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    hipster-demo
    
  2. Attiva l'inserimento automatico del file collaterale:

    kubectl label namespace default istio-injection=enabled
    
  3. Esegui il deployment dell'esempio nel cluster:

    kubectl apply -f hipster-demo
    
  4. Trova l'indirizzo IP esterno della tua applicazione:

    kubectl get service frontend-external
    
  5. Visita l'applicazione sul tuo browser per confermare l'installazione:

    http://EXTERNAL_IP/

    Ora che è in esecuzione un esempio, puoi esplorare le funzionalità di osservabilità di Anthos Service Mesh nella console Google Cloud. Tieni presente che possono essere necessari fino a 10 minuti prima che il grafico della topologia mostri i servizi nel tuo mesh.

Al termine dell'esplorazione, rimuovi l'anteprima Hipster:

kubectl delete -f hipster-demo

Passaggi successivi