Installazione di Anthos Service Mesh

Questa pagina fa parte di una guida di più pagine che spiega come installare la versione di Anthos Service Mesh 1.9.8 su un cluster GKE per un mesh contenente più cluster in progetti Google Cloud diversi.

Prima di iniziare

Prima di installare Anthos Service Mesh, assicurati di avere:

Impostazione di credenziali e autorizzazioni

  1. Inizializza il progetto per prepararlo per l'installazione. Tra le altre cose, questo comando crea un account di servizio per consentire ai componenti del piano di controllo, ad esempio il proxy sidecar, di accedere in modo sicuro ai dati e alle risorse del tuo progetto.

    curl --request POST \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --data '' \
      "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"

    Il comando risponde con parentesi graffe vuote: {}

  2. Ottieni credenziali di autenticazione per interagire con il cluster. Questo comando imposta anche il contesto attuale per kubectl nel cluster.

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  3. Concedi all'utente corrente le autorizzazioni di amministratore del cluster. Devi disporre di queste autorizzazioni per creare le regole di controllo dell'controllo dell'accesso basato sui ruoli (RBAC) necessarie per Anthos Service Mesh.

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user="$(gcloud config get-value core/account)"

Se viene visualizzato l'errore "cluster-admin-binding" already exists, puoi tranquillamente ignorarlo e continuare con l'associazione cluster-admin-binding esistente.

Download del file di installazione in corso...

Linux

  1. Scarica il file di installazione di Anthos Service Mesh nella tua directory di lavoro attuale:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-linux-amd64.tar.gz
  2. Scarica il file della firma e utilizza openssl per verificare la firma:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig istio-1.9.8-asm.6-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    L'output previsto è: Verified OK.

  3. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:

     tar xzf istio-1.9.8-asm.6-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.9.8-asm.6 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  4. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.

    cd istio-1.9.8-asm.6

Mac OS

  1. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro attuale:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-osx.tar.gz
  2. Scarica il file della firma e utilizza openssl per verificare la firma:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.9.8-asm.6-osx.tar.gz.1.sig istio-1.9.8-asm.6-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    L'output previsto è: Verified OK.

  3. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:

    tar xzf istio-1.9.8-asm.6-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.9.8-asm.6 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  4. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.

    cd istio-1.9.8-asm.6

Windows

  1. Scarica il file di installazione di Anthos Service Mesh nella directory di lavoro attuale:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-win.zip
  2. Scarica il file della firma e utilizza openssl per verificare la firma:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.9.8-asm.6-win.zip.1.sig istio-1.9.8-asm.6-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    L'output previsto è: Verified OK.

  3. Estrai i contenuti del file in qualsiasi posizione nel file system. Ad esempio, per estrarre i contenuti nella directory di lavoro corrente:

    tar xzf istio-1.9.8-asm.6-win.zip

    Il comando crea una directory di installazione nella directory di lavoro corrente denominata istio-1.9.8-asm.6 che contiene:

    • Applicazioni di esempio nella directory samples.
    • Lo strumento a riga di comando istioctl che utilizzi per installare Anthos Service Mesh si trova nella directory bin.
    • I profili di configurazione di Anthos Service Mesh si trovano nella directory manifests/profiles.
  4. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.

    cd istio-1.9.8-asm.6

Preparazione dei file di configurazione delle risorse

Quando esegui il comando istioctl install, specifichi -f istio-operator.yaml nella riga di comando. Questo file contiene informazioni sul progetto e sul cluster richieste da Anthos Service Mesh. Devi scaricare un pacchetto contenente istio-operator.yaml e altri file di configurazione delle risorse per poter impostare le informazioni sul progetto e sul cluster.

Per preparare i file di configurazione delle risorse:

Mesh CA

  1. Crea una nuova directory per i file di configurazione delle risorse del pacchetto Anthos Service Mesh. Ti consigliamo di utilizzare il nome del cluster come nome della directory.

  2. Passa alla directory in cui vuoi scaricare il pacchetto Anthos Service Mesh.

  3. Verifica la versione "kpt". Assicurati di eseguire una versione precedente alla versione 1.x di kpt:

    kpt version
    

    L'output dovrebbe essere simile al seguente:

    0.39.2

    Se hai kpt versione 1.x o successiva, consulta la sezione relativa alla configurazione dell'ambiente per scaricare la versione richiesta per il tuo sistema operativo.

  4. Scarica il pacchetto:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm
    
  5. Imposta l'ID per il progetto in cui è stato creato il cluster:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  6. Imposta il numero di progetto per il progetto host del parco risorse:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  7. Imposta il nome del cluster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  8. Imposta la zona o la regione predefinita:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  9. Imposta il tag sulla versione di Anthos Service Mesh che stai installando:

    kpt cfg set asm anthos.servicemesh.tag 1.9.8-asm.6
    
  10. Imposta il webhook di convalida in modo che utilizzi un'etichetta di revisione:

    kpt cfg set asm anthos.servicemesh.rev asm-198-6
    

    Quando installi Anthos Service Mesh, imposti un'etichetta di revisione su istiod. Devi impostare la stessa revisione sul webhook di convalida.

  11. Poiché i cluster nella tua configurazione multi-cluster si trovano in progetti diversi, devi configurare gli alias dominio di attendibilità per gli altri progetti che formeranno il mesh di servizi multi-cluster/multiprogetto.

    1. Recupera l'ID progetto di tutti i cluster che saranno nel mesh multi-cluster/più progetti.

    2. Per l'ID progetto di ogni cluster, imposta gli alias dominio di attendibilità. Ad esempio, se hai cluster in 3 progetti, esegui il comando seguente e sostituisci PROJECT_ID_1, PROJECT_ID_2 e PROJECT_ID_3 con l'ID progetto di ogni cluster.

      kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog

      Quando configuri i cluster negli altri progetti, puoi utilizzare lo stesso comando.

      Gli alias dominio di attendibilità consentono a Mesh CA di autenticare i carichi di lavoro su cluster in altri progetti. Oltre a impostare gli alias dominio di attendibilità, dopo l'installazione di Anthos Service Mesh, devi abilitare il bilanciamento del carico tra cluster.

  12. Restituisce come output i valori dei setter kpt:

    kpt cfg list-setters asm
    

    Nell'output del comando, verifica che i valori dei seguenti setter siano corretti:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • anthos.servicemesh.trustDomainAliases
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Puoi ignorare i valori degli altri impostatori.

CA Istio

  1. Crea una nuova directory per i file di configurazione delle risorse del pacchetto Anthos Service Mesh. Ti consigliamo di utilizzare il nome del cluster come nome della directory.

  2. Passa alla directory in cui vuoi scaricare il pacchetto Anthos Service Mesh.

  3. Verifica la versione "kpt". Assicurati di eseguire una versione precedente alla versione 1.x di kpt:

    kpt version
    

    L'output dovrebbe essere simile al seguente:

    0.39.2

    Se hai kpt versione 1.x o successiva, consulta la sezione relativa alla configurazione dell'ambiente per scaricare la versione richiesta per il tuo sistema operativo.

  4. Scarica il pacchetto:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm
    
  5. Imposta l'ID per il progetto in cui è stato creato il cluster:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  6. Imposta il numero di progetto per il progetto host del parco risorse:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  7. Imposta il nome del cluster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  8. Imposta la zona o la regione predefinita:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  9. Imposta il tag sulla versione di Anthos Service Mesh che stai installando:

    kpt cfg set asm anthos.servicemesh.tag 1.9.8-asm.6
    
  10. Imposta il webhook di convalida in modo che utilizzi un'etichetta di revisione:

    kpt cfg set asm anthos.servicemesh.rev asm-198-6
    

    Quando installi Anthos Service Mesh, imposti un'etichetta di revisione su istiod. Devi impostare la stessa revisione sul webhook di convalida.

  11. Restituisce come output i valori dei setter kpt:

    kpt cfg list-setters asm
    

    Nell'output del comando, verifica che i valori dei seguenti setter siano corretti:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Puoi ignorare i valori degli altri impostatori.

Installazione di Anthos Service Mesh

Mesh CA

  1. Verifica che il contesto kubeconfig attuale punti al cluster su cui vuoi installare Anthos Service Mesh:

    kubectl config current-context
    

    L'output è nel seguente formato:

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    Il contesto kubeconfig e i valori dei setter kpt devono corrispondere. Se necessario, esegui il comando gcloud container clusters get-credentials per impostare il contesto attuale di kubeconfig.

  2. Se necessario, passa alla directory istio-1.9.8-asm.6. Il client istioctl dipende dalla versione. Assicurati di utilizzare la versione presente nella directory istio-1.9.8-asm.6/bin.

  3. Esegui questo comando per installare Anthos Service Mesh. Se vuoi abilitare una funzionalità facoltativa supportata, includi -f e il nome del file YAML nella riga di comando seguente. Per ulteriori informazioni, consulta Attivazione delle funzionalità facoltative.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/multiproject.yaml \
      -f asm/istio/options/multicluster.yaml \
      --revision=asm-198-6
    

    L'argomento --revision aggiunge a istiod un'etichetta di revisione nel formato istio.io/rev=asm-198-6. L'etichetta della revisione viene utilizzata dal webhook automatico dell'iniettore sidecar per associare i file collaterali inseriti a una determinata revisione istiod. Per abilitare l'inserimento automatico collaterale per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda a un deployment istiod.

    I seguenti file eseguono l'override delle impostazioni nel file istio-operator.yaml:

    • Il file multiproject.yaml imposta il profilo asm-gcp-multiproject.

    • Il file multicluster.yaml configura le impostazioni necessarie ad Anthos Service Mesh per una configurazione multi-cluster.

  4. Configura il webhook di convalida per individuare istiod con l'etichetta di revisione:

    kubectl apply -f asm/istio/istiod-service.yaml

    Questo comando crea una voce di servizio che consente al webhook di convalida di controllare automaticamente le configurazioni prima che vengano applicate.

  5. Esegui il deployment del controller del servizio canonico nel cluster:

    kubectl apply -f asm/canonical-service/controller.yaml

    Il controller di servizio canonico raggruppa i carichi di lavoro appartenenti allo stesso servizio logico. Per ulteriori informazioni sui servizi canonici, consulta la panoramica del servizio canonico.

CA Istio

  1. Verifica che il contesto kubeconfig attuale punti al cluster su cui vuoi installare Anthos Service Mesh:

    kubectl config current-context
    

    L'output è nel seguente formato:

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    Il contesto kubeconfig e i valori dei setter kpt devono corrispondere. Se necessario, esegui il comando gcloud container clusters get-credentials per impostare il contesto attuale di kubeconfig.

  2. Crea lo spazio dei nomi istio-system:

    kubectl create namespace istio-system
    
  3. Crea un secret cacerts:

    kubectl create secret generic cacerts  \
      -n istio-system \
      --from-file=ca-cert.pem \
      --from-file=ca-key.pem \
      --from-file=root-cert.pem \
      --from-file=cert-chain.pem
    

    Per ulteriori informazioni, consulta la sezione Collegare i certificati CA esistenti.

  4. Se necessario, passa alla directory istio-1.9.8-asm.6. Il client istioctl dipende dalla versione. Assicurati di utilizzare la versione presente nella directory istio-1.9.8-asm.6/bin.

  5. Esegui questo comando per installare Anthos Service Mesh. Se vuoi abilitare una funzionalità facoltativa supportata, includi -f e il nome del file YAML nella riga di comando seguente. Per ulteriori informazioni, consulta Attivazione delle funzionalità facoltative.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/citadel-ca.yaml \
      -f asm/istio/options/multiproject.yaml \
      -f asm/istio/options/multicluster.yaml \
      --revision=asm-198-6
    

    L'argomento --revision aggiunge a istiod un'etichetta di revisione nel formato istio.io/rev=asm-198-6. L'etichetta della revisione viene utilizzata dal webhook automatico dell'iniettore sidecar per associare i file collaterali inseriti a una determinata revisione istiod. Per abilitare l'inserimento automatico collaterale per uno spazio dei nomi, devi etichettarlo con una revisione che corrisponda a un deployment istiod.

    I seguenti file eseguono l'override delle impostazioni nel file istio-operator.yaml:

    • L'istanza citadel-ca.yaml configura la CA Istio come autorità di certificazione.

    • Il file multiproject.yaml imposta il profilo asm-gcp-multiproject.

    • Il file multicluster.yaml configura le impostazioni necessarie ad Anthos Service Mesh per una configurazione multi-cluster.

  6. Configura il webhook di convalida per individuare istiod con l'etichetta di revisione:

    kubectl apply -f asm/istio/istiod-service.yaml

    Questo comando crea una voce di servizio che consente al webhook di convalida di controllare automaticamente le configurazioni prima che vengano applicate.

  7. Esegui il deployment del controller del servizio canonico nel cluster:

    kubectl apply -f asm/canonical-service/controller.yaml

    Il controller di servizio canonico raggruppa i carichi di lavoro appartenenti allo stesso servizio logico. Per ulteriori informazioni sui servizi canonici, consulta la panoramica del servizio canonico.

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

L'output previsto è simile al seguente:

NAME                                   READY   STATUS      RESTARTS   AGE
istio-ingressgateway-cff9f5c7d-qg4ls   1/1     Running   0          7m5s
istio-ingressgateway-cff9f5c7d-vlkzb   1/1     Running   0          7m20s
istiod-66b587859c-886gx                1/1     Running   0          7m33s
istiod-66b587859c-dfs2j                1/1     Running   0          7m33s

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.

L'installazione non è completa finché non attivi l'inserimento automatico del proxy sidecar (inserimento automatico) e riavvii i pod per qualsiasi carico di lavoro in esecuzione sul tuo cluster prima dell'installazione di Anthos Service Mesh.

Per abilitare l'inserimento automatico, etichetta gli spazi dei nomi con l'etichetta di revisione che è stata impostata il giorno istiod al momento dell'installazione di Anthos Service Mesh. L'etichetta di revisione viene utilizzata dal webhook iniettore sidecar per associare i file collaterali inseriti a una determinata revisione istiod. Dopo aver aggiunto l'etichetta, tutti i pod esistenti nello spazio dei nomi devono essere riavviati per poter inserire i file collaterali.

Prima di eseguire il deployment di nuovi carichi di lavoro in un nuovo spazio dei nomi, assicurati di configurare l'inserimento automatico in modo che Anthos Service Mesh possa monitorare e proteggere il traffico.

Per abilitare l'inserimento automatico:

  1. Utilizza il seguente comando per individuare l'etichetta di revisione su istiod:

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    L'output è simile al seguente:

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-198-6-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-198-6-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586

    Nell'output, sotto la colonna LABELS, prendi nota del valore dell'etichetta di revisione istiod, che segue il prefisso istio.io/rev=. In questo esempio, il valore è asm-198-6.

  2. Applica l'etichetta di revisione e rimuovi l'etichetta istio-injection, se esistente. Nel seguente comando, NAMESPACE è il nome dello spazio dei nomi in cui vuoi abilitare l'inserimento automatico e REVISION è l'etichetta di revisione che hai annotato nel passaggio precedente.

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
    

    Puoi ignorare il messaggio "istio-injection not found" nell'output. Ciò significa che lo spazio dei nomi non aveva in precedenza l'etichetta istio-injection, cosa che dovresti aspettarti nelle nuove installazioni di Anthos Service Mesh o nei nuovi deployment. Poiché l'inserimento automatica non riesce se uno spazio dei nomi contiene sia l'etichetta istio-injection sia l'etichetta di revisione, tutti i comandi kubectl label nella documentazione di Anthos Service Mesh comprendono la rimozione dell'etichetta istio-injection.

  3. Se i carichi di lavoro erano in esecuzione sul tuo cluster prima dell'installazione di Anthos Service Mesh, riavvia i pod per attivare la reiniezione.

    La modalità di riavvio dei pod dipende dall'applicazione e dall'ambiente in cui si trova il cluster. Ad esempio, nell'ambiente di gestione temporanea potresti semplicemente eliminare tutti i pod, il che comporta il riavvio. Tuttavia, nell'ambiente di produzione potresti avere un processo che implementa un deployment blu/verde in modo da poter riavviare i pod in modo sicuro ed evitare interruzioni del traffico.

    Puoi utilizzare kubectl per eseguire un riavvio in sequenza:

    kubectl rollout restart deployment -n NAMESPACE
    
  4. Verifica che i pod siano configurati in modo da puntare alla nuova versione di istiod.

    kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
    

Passaggi successivi