Installazione di Anthos Service Mesh utilizzando l'interfaccia a riga di comando di GKE Enterprise

Questa guida spiega come installare Anthos Service Mesh 1.4.10-asm.18 su un nuovo cluster Google Cloud GKE utilizzando l'interfaccia a riga di comando (CLI) di GKE Enterprise con le seguenti funzionalità abilitate:

Attualmente l'interfaccia a riga di comando di GKE Enterprise non supporta le installazioni su un cluster GKE esistente o su GKE su VMware.

Prima di iniziare

Questa guida presuppone che tu abbia già:

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 9443 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

Installazione di kpt e dell'interfaccia a riga di comando di Anthos

Utilizza kpt per installare l'interfaccia a riga di comando di GKE Enterprise. Puoi anche utilizzare kpt per scaricare, gestire e personalizzare i file di configurazione delle risorse Anthos Service Mesh archiviati in GitHub. I file di configurazione contengono segnaposto per informazioni specifiche sul progetto Google Cloud e sul cluster GKE. Dopo aver personalizzato i file di configurazione, puoi archiviarli nel tuo repository GitHub o in un altro sistema di controllo del codice sorgente.

  1. Esegui l'autenticazione con Google Cloud CLI:

    gcloud auth login
    
  2. Recupera il tuo ID progetto Google Cloud e crea una variabile di ambiente corrispondente:

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

    gcloud config set project ${PROJECT_ID}
    
  4. Seleziona una zona o regione e un tipo di macchina per il nuovo cluster. Il tipo di macchina minimo richiesto da Anthos Service Mesh è n1-standard-4. Puoi usare qualsiasi opzione del canale di rilascio.

    • Se intendi creare un cluster a zona singola, esegui questo comando per ottenere un elenco delle zone Google Cloud disponibili:

      gcloud compute zones list
      
    • Se intendi creare un cluster a livello di regione, esegui questo comando per ottenere un elenco delle regioni disponibili:

      gcloud compute regions list
      
    • Per ottenere un elenco dei tipi di macchina:

      gcloud compute machine-types list | more
      
  5. Crea le seguenti variabili di ambiente:

    • Imposta il nome del cluster:

      export CLUSTER_NAME=YOUR_CLUSTER_NAME

      Il nome del cluster deve contenere solo caratteri alfanumerici minuscoli e "-", deve iniziare con una lettera, terminare con un carattere alfanumerico e non deve superare i 40 caratteri.

    • Imposta CLUSTER_LOCATION sulla zona o sulla regione del cluster:

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
  6. Installa l'interfaccia a riga di comando di GKE Enterprise e aggiorna i componenti. Se utilizzi Cloud Shell, aggiungi sudo ai seguenti comandi:

    gcloud components install kpt anthoscli alpha
    gcloud components update --version 292.0.0
  7. Se vuoi, puoi creare una nuova directory per il pacchetto Anthos Service Mesh e cd.

  8. Scarica il pacchetto Anthos Service Mesh nella directory di lavoro attuale:

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

    Per impostazione predefinita, il comando kpt pkg get completa la zona di computing nei file del pacchetto in modo che corrisponda alla configurazione attuale.

  9. Imposta i seguenti valori nei file di configurazione:

    • Imposta l'ID progetto:

      kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    • Imposta il nome del cluster:

      kpt cfg set asm cluster-name ${CLUSTER_NAME}
    • Imposta la zona o la regione predefinita:

      kpt cfg set asm gcloud.compute.zone ${CLUSTER_LOCATION}
    • Se vuoi, modifica il canale di rilascio dal valore predefinito (REGULAR). Nel comando seguente, sostituisci YOUR_CHANNEL con STABLE o RAPID.

      kpt cfg set asm gcloud.container.cluster.releaseChannel YOUR_CHANNEL

      Per una descrizione di ciascun canale, consulta l'articolo Quali canali sono disponibili.

Installazione di Anthos Service Mesh su un nuovo cluster

  1. Esegui questo comando per creare un nuovo cluster e installare Anthos Service Mesh utilizzando i file di configurazione di Anthos Service Mesh che hai personalizzato:

    anthoscli apply -f asm
    
  2. Attendi il completamento del deployment:

    kubectl wait --for=condition=available --timeout=600s deployment --all -n istio-system
    

    Output:

    deployment.extensions/istio-galley condition met
    deployment.extensions/istio-ingressgateway condition met
    deployment.extensions/istio-pilot condition met
    deployment.extensions/istio-sidecar-injector condition met
    deployment.extensions/promsd condition met

Controlla i componenti del piano di controllo

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

kubectl get pod -n istio-system

Dovresti vedere un output simile al seguente:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-galley-5c65896ff7-m2pls             2/2     Running     0          18m
istio-ingressgateway-587cd459f-q6hqt      2/2     Running     0          18m
istio-nodeagent-74w69                     1/1     Running     0          18m
istio-nodeagent-7524w                     1/1     Running     0          18m
istio-nodeagent-7652w                     1/1     Running     0          18m
istio-nodeagent-7948w                     1/1     Running     0          18m
istio-pilot-9db77b99f-7wfb6               2/2     Running     0          18m
istio-sidecar-injector-69c4d9f875-dt8rn   1/1     Running     0          18m
promsd-55f464d964-lqs7w                   2/2     Running     0          18m

Dovresti vedere un'istanza di istio-nodeagent per ogni nodo nel cluster. Mesh CA, che sostituisce il componente Istio Citadel OSS, crea gli agenti nodo per emettere certificati mTLS per i carichi di lavoro in esecuzione nel mesh di servizi.

Verifica che Mesh CA funzioni:

  kubectl get pods -n istio-system -l app=istio-nodeagent \
  --output=jsonpath={​.items..metadata.name} -o yaml | grep CA_ADDR -A 1

Output previsto: meshca.googleapis.com:443.

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.

Abilita i criteri di sicurezza dei pod

Per la massima sicurezza sul tuo mesh di servizi, ti consigliamo di abilitare i criteri di sicurezza dei pod.

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.

Prima di eseguire il deployment dei 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
    

    Ora che è in esecuzione un esempio, puoi esplorare Anthos Service Mesh nella console Google Cloud. Tieni presente che possono essere necessari fino a 5 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