Upgrade di Anthos Service Mesh on-premise

Questa guida spiega come eseguire l'upgrade di Anthos Service Mesh dalla versione 1.5.4+ or 1.6.4+ alla versione 1.6.14 su GKE su VMware. 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.

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

Configurazione dell'ambiente

Devi disporre dei seguenti strumenti sulla macchina da cui vuoi installare Anthos Service Mesh. Tieni presente che puoi installare Anthos Service Mesh solo su un cluster utente, non su un cluster di amministrazione.

Dopo l'installazione di Google Cloud CLI:

  1. Esegui l'autenticazione con Google Cloud CLI:

    gcloud auth login
    
  2. Aggiorna i componenti:

    gcloud components update
    
  3. Installa kubectl:

    gcloud components install kubectl
    
  4. Installa la versione richiesta di kpt:

       curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2
       chmod +x kpt_0_39_2
       alias kpt="$(readlink -f kpt_0_39_2)"
    
  5. Cambia il contesto nel tuo cluster utente:

    kubectl config use-context CLUSTER_NAME
  6. Concedi le autorizzazioni di amministratore del cluster al tuo account utente (l'indirizzo email di accesso a Google Cloud). 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=USER_ACCOUNT

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.6.14-asm.2-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.6.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-linux-amd64.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.6.14-asm.2 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.6.14-asm.2-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.6.14-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-osx.tar.gz

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.6.14-asm.2 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.6.14-asm.2-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.6.14-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-win.zip

    Il comando crea una directory di installazione nella directory di lavoro attuale denominata istio-1.6.14-asm.2 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.6.14-asm.2
  13. Per praticità, aggiungi gli strumenti nella directory /bin al tuo PERCORSO:
    export PATH=$PWD/bin:$PATH

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. 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 \
  --set profile=asm-multicloud \
  --set revision=asm-1614-2

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-1614-2-6d5cfd4b89-xztlr       1/1     Running   0          3m44s
istiod-fb7f746f4-wcntn                      1/1     Running   0          50m
promsd-579f9f9bf4-m65nc                     2/2     Running   1          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-1614-2 --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-1614-2:

    kubectl get pods -n NAMESPACE -l istio.io/rev=asm-1614-2

  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-1614-2 -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 \
        --set profile=asm-multicloud \

Completa l'upgrade

Se ritieni che la tua applicazione funzioni come previsto, rimuovi il piano di controllo precedente per completare l'upgrade:

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