Upgrade di Anthos Service Mesh su GKE

Questa guida spiega come eseguire l'upgrade di Anthos Service Mesh dalla versione 1.6.4+ alla versione 1.7.8 su GKE. Per eseguire l'upgrade da Anthos Service Mesh 1.4.5 o versioni successive, devi prima eseguire l'upgrade ad Anthos Service Mesh 1.5. Gli upgrade diretti da Anthos Service Mesh da 1.4 a 1.6 non sono supportati.

Le installazioni di Anthos Service Mesh 1.7 e versioni successive supportano gli upgrade delle versioni ignorate. Per eseguire l'upgrade direttamente alla versione 1.10, consulta Upgrade di Anthos Service Mesh alla versione più recente

Quando esegui l'upgrade, ti consigliamo di eseguire un upgrade del piano di controllo doppio (definito anche upgrade canary), in cui vengono eseguite entrambe le versioni del piano di controllo, nuova e precedente, quando testi la nuova versione su una piccola percentuale dei carichi di lavoro. Questo approccio è più sicuro rispetto a un upgrade in loco, in cui la nuova versione del piano di controllo sostituisce la versione precedente. Tieni presente che viene eseguito l'upgrade di istio-ingressgateway, quindi è consigliabile pianificare qualche interruzione del cluster.

Il deployment dei componenti del piano di controllo di Anthos Service Mesh richiede circa 5-10 minuti. Inoltre, devi inserire nuovi proxy sidecar in tutti i tuoi carichi di lavoro in modo che vengano aggiornati all'attuale versione di Anthos Service Mesh. Il tempo necessario per aggiornare i proxy sidecar dipende da molti fattori, come il numero di pod e di nodi, le impostazioni di scalabilità del deployment, i budget per l'interruzione dei pod e altre impostazioni di configurazione. Una stima approssimativa del tempo necessario per aggiornare i proxy sidecar è di 100 pod al minuto.

Preparazione per l'upgrade

Questa sezione descrive i passaggi che devi seguire per prepararti all'upgrade di Anthos Service Mesh.

  1. Consulta le funzionalità supportate e questa guida per acquisire familiarità con le funzionalità e il processo di upgrade.

  2. Se hai abilitato le funzionalità facoltative quando hai installato la versione precedente di Anthos Service Mesh, dovrai abilitare le stesse funzionalità quando esegui l'upgrade. Puoi abilitare le funzionalità facoltative aggiungendo i flag --set values o specificando il flag -f con un file YAML quando esegui il comando istioctl install.

  3. Se stai installando Anthos Service Mesh su un cluster privato, devi aprire la porta 15017 nel firewall per far funzionare correttamente il webhook utilizzato con l'inserimento automatico di sidecar. Per maggiori informazioni, consulta Apertura di una porta su un cluster privato.

  4. Se esegui l'upgrade da Anthos Service Mesh 1.5, segui questi passaggi nel caso sia necessario eseguire il rollback:

    1. Crea una directory denominata asm-1-5.

    2. Scarica il file di installazione 1.5 nella directory asm-1-5.

    3. Estrai i contenuti del file nella directory asm-1-5.

    4. Assicurati di essere nella directory root di installazione di Anthos Service Mesh 1.5.

    5. Scarica il pacchetto kpt 1.5 e configura il pacchetto istio-operator.yaml 1.5.

Configurazione dell'ambiente

Per le installazioni su Google Kubernetes Engine, puoi seguire le guide all'installazione utilizzando Cloud Shell, un'interfaccia a riga di comando interna al browser per le tue risorse Google Cloud, oppure sul tuo computer che esegue Linux o macOS.

Opzione A: utilizza Cloud Shell

Cloud Shell esegue il provisioning di una macchina virtuale (VM) Compute Engine g1-small che esegue un sistema operativo Linux basato su Debian. I vantaggi dell'utilizzo di Cloud Shell sono:

  • Cloud Shell include gli strumenti a riga di comando gcloud, kubectl e helm di cui hai bisogno.

  • La directory $HOME di Cloud Shell ha 5 GB di spazio di archiviazione permanente.

  • Puoi scegliere gli editor di testo:

    • Editor di codice, a cui puoi accedere facendo clic su nella parte superiore della finestra di Cloud Shell.

    • Emacs, Vim o Nano, a cui accedi dalla riga di comando in Cloud Shell.

Per utilizzare Cloud Shell:

  1. Vai alla console Google Cloud.
  2. Selezionare il tuo progetto Google Cloud.
  3. Fai clic sul pulsante Attiva Cloud Shell nella parte superiore della finestra della console Google Cloud.

    Console Google Cloud Platform

    All'interno di un nuovo frame nella parte inferiore della console Google Cloud si apre una sessione di Cloud Shell, che mostra un prompt della riga di comando.

    Sessione di Cloud Shell

  4. Aggiorna i componenti:

    gcloud components update
    

    Il comando risponde con un output simile al seguente:

    ERROR: (gcloud.components.update)
    You cannot perform this action because the gcloud CLI component manager
    is disabled for this installation. You can run the following command
    to achieve the same result for this installation:
    
    sudo apt-get update && sudo apt-get --only-upgrade install ...
  5. Copia il comando lungo e incollalo per aggiornare i componenti.

  6. Assicurati che Git sia nel tuo percorso in modo che kpt possa trovarlo.

Opzione B: utilizzare gli strumenti a riga di comando localmente

Sulla macchina locale, installa e inizializza Google Cloud CLI.

Se hai già installato gcloud CLI:

  1. Esegui l'autenticazione con gcloud CLI:

    gcloud auth login
    
  2. Aggiorna i componenti:

    gcloud components update
    
  3. Installa kubectl:

    gcloud components install kubectl
    
  4. Installa kpt:

    gcloud components install kpt
    
  5. Assicurati che Git sia nel tuo percorso in modo che kpt possa trovarlo.

Imposta le variabili di ambiente

  1. Recupera l'ID per il progetto in cui è stato creato il cluster e il numero per il progetto host del parco risorse.

    gcloud

    Esegui questo comando:

    gcloud projects list
    

    Console

    1. Vai alla pagina Dashboard nella console Google Cloud.

      Vai alla pagina Dashboard

    2. Fai clic sull'elenco a discesa Seleziona da nella parte superiore della pagina. Nella finestra Seleziona da visualizzata, scegli 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 del progetto in cui è stato creato il cluster:

    export PROJECT_ID=YOUR_PROJECT_ID

  3. Crea una variabile di ambiente per il numero di progetto del progetto host del parco risorse:

    export FLEET_PROJECT_NUMBER=YOUR_FLEET_PROJECT_NUMBER

  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

(Facoltativo) Modifica l'ID mesh sul cluster

Se il tuo mesh di servizi contiene o conterrà più cluster presenti in progetti diversi, tutti i cluster devono avere lo stesso ID mesh, che si basa sul numero di progetto del progetto host del parco risorse. L'ID mesh impostato sul cluster deve corrispondere all'ID mesh che deve utilizzare Anthos Service Mesh.

Se hai un solo cluster o se il tuo mesh di servizi contiene o conterrà più cluster nello stesso progetto, ignora i passaggi seguenti e passa alla sezione Impostare le credenziali e le autorizzazioni.

Per impostare la nuova etichetta ID mesh sul cluster:

  1. Crea una variabile di ambiente per l'ID mesh:

    export MESH_ID="proj-${FLEET_PROJECT_NUMBER}"

  2. Se nel cluster esistono già etichette che vuoi conservare, devi includerle quando aggiungi l'etichetta mesh_id.

    1. Per verificare se il cluster ha etichette esistenti:

      gcloud container clusters describe ${CLUSTER_NAME} \
        --project ${PROJECT_ID}

      Cerca il campo resourceLabels nell'output. Ogni etichetta viene archiviata in una riga separata sotto il campo resourceLabels, ad esempio:

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      Non è necessario conservare l'elemento mesh_id esistente. Sovrascrivilo con la nuova etichetta mesh_id.

      Per praticità, puoi aggiungere le etichette a una variabile di ambiente. Nel seguente, sostituisci YOUR_EXISTING_LABELS con un elenco separato da virgole delle etichette esistenti sul tuo cluster nel formato KEY=VALUE, ad esempio: env=dev,release=stable

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
    2. Imposta l'etichetta mesh_id:

      • Se nel cluster esistono etichette che vuoi conservare, aggiorna il cluster con mesh_id e le etichette esistenti:

        gcloud container clusters update ${CLUSTER_NAME} \
          --project ${PROJECT_ID}
          --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
      • Se il cluster non ha etichette esistenti, aggiornalo solo con la nuova etichetta mesh_id:

        gcloud container clusters update ${CLUSTER_NAME} \
          --project=${PROJECT_ID} \
          --update-labels=mesh_id=${MESH_ID}

Impostazione di credenziali e autorizzazioni

  1. Ottieni le credenziali di autenticazione per interagire con il cluster:

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  2. Concedi all'utente corrente le autorizzazioni di amministratore del cluster. Devi disporre delle seguenti 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 directory di lavoro attuale:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-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.7.8-asm.10-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-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.7.8-asm.10-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.7.8-asm.10 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. Mac OS

  5. 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.7.8-asm.10-osx.tar.gz
  6. Scarica il file della firma e utilizza openssl per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    L'output previsto è: Verified OK

  7. 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.7.8-asm.10-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.7.8-asm.10 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.

  8. Windows

  9. 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.7.8-asm.10-win.zip
  10. Scarica il file della firma e utilizza openssl per verificare la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    L'output previsto è: Verified OK

  11. 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.7.8-asm.10-win.zip

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.7.8-asm.10 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.

  12. Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
    cd istio-1.7.8-asm.10
  13. Per praticità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
    export PATH=$PWD/bin:$PATH

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. Scarica il pacchetto:

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

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

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

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

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

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

    kpt cfg set asm anthos.servicemesh.rev asm-178-10
    

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

  10. 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.

  11. Restituisce come output i valori dei setter kpt:

    kpt cfg list-setters asm
    

    L'output del comando è simile al seguente:

                              NAME                                                       VALUE
    anthos.servicemesh.canonicalServiceHub               gcr.io/gke-release/asm/canonical-service-controller:1.7.8-asm.10
    anthos.servicemesh.controlplane.monitoring.enabled   true
    anthos.servicemesh.hub                               gcr.io/gke-release/asm
    anthos.servicemesh.hubMembershipID                   MEMBERSHIP_ID
    anthos.servicemesh.tag                               1.7.8-asm.10
    anthos.servicemesh.trustDomainAliases                [example-project-12345.svc.id.goog,example-project-23456.svc.id.goog,example-project-98765.svc.id.goog]
    base-dir                                             base
    gcloud.compute.location                              us-central
    gcloud.compute.network                               default
    gcloud.compute.subnetwork                            default
    gcloud.container.cluster                             example-cluster-1
    gcloud.container.cluster.clusterSecondaryRange
    gcloud.container.cluster.releaseChannel              REGULAR
    gcloud.container.cluster.servicesSecondaryRange
    gcloud.container.nodepool.max-nodes                  4
    gcloud.core.project                                  example-project-12345
    gcloud.project.environProjectID                      FLEET_PROJECT_ID
    gcloud.project.environProjectNumber                  1234567890123
    gcloud.project.projectNumber                         9876543210987

    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.

Cittadella

  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. Scarica il pacchetto:

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

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

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

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

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

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

    kpt cfg set asm anthos.servicemesh.rev asm-178-10
    
  10. Restituisce come output i valori dei setter kpt:

    kpt cfg list-setters asm
    

    L'output del comando è simile al seguente:

                              NAME                                                       VALUE
    anthos.servicemesh.canonicalServiceHub               gcr.io/gke-release/asm/canonical-service-controller:1.7.8-asm.10
    anthos.servicemesh.controlplane.monitoring.enabled   true
    anthos.servicemesh.hub                               gcr.io/gke-release/asm
    anthos.servicemesh.hubMembershipID                   MEMBERSHIP_ID
    anthos.servicemesh.tag                               1.7.8-asm.10
    anthos.servicemesh.trustDomainAliases
    base-dir                                             base
    gcloud.compute.location                              us-central
    gcloud.compute.network                               default
    gcloud.compute.subnetwork                            default
    gcloud.container.cluster                             example-cluster-1
    gcloud.container.cluster.clusterSecondaryRange
    gcloud.container.cluster.releaseChannel              REGULAR
    gcloud.container.cluster.servicesSecondaryRange
    gcloud.container.nodepool.max-nodes                  4
    gcloud.core.project                                  example-project-12345
    gcloud.project.environProjectID                      FLEET_PROJECT_ID
    gcloud.project.environProjectNumber                  1234567890123
    gcloud.project.projectNumber                         9876543210987

    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.

Upgrade di Anthos Service Mesh

Per installare una nuova versione di Anthos Service Mesh, ti consigliamo di seguire il processo di upgrade del piano di controllo doppio (indicato come upgrade canary nella documentazione di Istio). Con l'upgrade di un piano di controllo doppio, puoi installare una nuova versione del piano di controllo insieme a quello esistente. Quando installi la nuova versione, includi un'etichetta revision che identifica la versione del nuovo piano di controllo. Ogni revisione è un'implementazione completa del piano di controllo Anthos Service Mesh con il proprio deployment e servizio.

Successivamente, potrai eseguire la migrazione alla nuova versione impostando la stessa etichetta revision sui tuoi carichi di lavoro in modo che puntino al nuovo piano di controllo ed eseguendo un riavvio in sequenza per reinserire i proxy con la nuova versione di Anthos Service Mesh. Con questo approccio, puoi monitorare l'effetto dell'upgrade su una piccola percentuale dei carichi di lavoro. Dopo aver testato l'applicazione, puoi eseguire la migrazione di tutto il traffico alla nuova versione. Questo approccio è molto più sicuro rispetto a un upgrade in loco in cui un nuovo piano di controllo sostituisce la versione precedente.

Aggiornamento del piano di controllo

Esegui questo comando per eseguire il deployment del nuovo piano di controllo utilizzando il profilo di configurazione impostato nel file istio-operator.yaml. 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.

  istioctl install \
    -f asm/cluster/istio-operator.yaml \
    --set revision=asm-178-10

L'argomento --set revision aggiunge un'etichetta istio.io/rev a istiod. Dopo aver eseguito il comando, vengono eseguiti due deployment e servizi del piano di controllo affiancati:

kubectl get pods -n istio-system

Output di esempio:

NAME                                        READY   STATUS    RESTARTS   AGE
istio-ingressgateway-c56675fcd-86zdn        1/1     Running   0          2m9s
istio-ingressgateway-c56675fcd-vn4nv        1/1     Running   0          2m21s
istiod-asm-178-10-6d5cfd4b89-xztlr           1/1     Running   0          3m44s
istiod-fb7f746f4-wcntn                      1/1     Running   0          50m

Riesecuzione del deployment dei carichi di lavoro

L'installazione della nuova revisione non ha alcun impatto sui proxy sidecar esistenti. Per eseguirne l'upgrade, devi configurarle in modo che puntino al nuovo piano di controllo. Questo viene controllato durante l'inserimento del file collaterale in base all'etichetta dello spazio dei nomi istio.io/rev.

  1. Aggiorna i carichi di lavoro da inserire con la nuova versione di Anthos Service Mesh:

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-178-10 --overwrite

    L'etichetta istio-injection deve essere rimossa perché ha la precedenza sull'etichetta istio.io/rev.

  2. Riavvia i pod per attivare la reinserimento:

    kubectl rollout restart deployment -n NAMESPACE
  3. Verifica che i pod siano configurati in modo da puntare al piano di controllo istiod-asm-178-10:

    kubectl get pods -n NAMESPACE -l istio.io/rev=asm-178-10

  4. Testa l'applicazione per verificare che i carichi di lavoro funzionino correttamente.

  5. Se disponi di carichi di lavoro in altri spazi dei nomi, ripeti i passaggi precedenti per ogni spazio dei nomi.

  6. Se sei sicuro che l'applicazione funzioni come previsto, passa a Completa l'upgrade. In caso contrario, segui questi passaggi per ripristinare la versione precedente.

    1. Aggiorna i carichi di lavoro da inserire con la versione precedente del piano di controllo:

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

    2. Riavvia i pod per attivare la reiniezione in modo che i proxy abbiano la versione precedente:

       kubectl rollout restart deployment -n NAMESPACE

    3. Esegui il rollback dei componenti del piano di controllo:

      Rollback alla versione 1.6 precedente

      1. Esegui di nuovo il deployment della versione precedente di istio-ingressgateway:

        kubectl -n istio-system rollout undo deploy istio-ingressgateway
        
      2. Rimuovi il nuovo piano di controllo:

        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-178-10 -n istio-system --ignore-not-found=true
        

      Rollback a 1,5

      1. Passa alla directory in cui hai scaricato il file di installazione di Anthos Service Mesh 1.5.

      2. Reinstalla la versione precedente di Anthos Service Mesh. Nel seguente comando, se hai abilitato le funzionalità facoltative, assicurati di includere i flag --set values applicabili o il flag -f con il nome del file YAML.

        bin/istioctl install \
        -f asm/cluster/istio-operator.yaml

Completa l'upgrade

Se ritieni che la tua applicazione funzioni come previsto, procedi nel seguente modo per completare l'upgrade:

  1. Rimuovi il piano di controllo precedente:

    kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
    
  2. Esegui questo comando per eseguire il deployment del controller del servizio canonico:

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

    Il comando esegue il deployment del controller del servizio canonico nel cluster. Il controller del servizio canonico raggruppa i carichi di lavoro appartenenti allo stesso servizio logico ed è necessario per sbloccare funzionalità aggiuntive nella dashboard Servizi della console Google Cloud. Per saperne di più, consulta Attivazione e disattivazione del controller del servizio canonico.

Passaggi successivi