Upgrade di Anthos Service Mesh

Questa pagina descrive come eseguire l'upgrade di Anthos Service Mesh.

Gli amministratori della piattaforma possono eseguire l'upgrade di Anthos Service Mesh. L'upgrade di Anthos Service Mesh è un upgrade basato su revisione o canary in cui sia la nuova che quella precedente del piano di controllo vengono eseguite durante il test della nuova versione con una piccola percentuale dei carichi di lavoro. Questo approccio è più sicuro di un upgrade in loco, dove la nuova versione del piano di controllo sostituisce la versione precedente.

Il deployment dei componenti del piano di controllo Anthos Service Mesh richiede dai 5 ai 10 minuti. Devi anche inserire nuovi proxy sidecar in tutti i tuoi carichi di lavoro, in modo che siano aggiornati con la versione attuale di Anthos Service Mesh. Il tempo necessario per l'aggiornamento dei proxy sidecar potrebbe essere di circa 100 pod al minuto, ma dipende da molti fattori, tra cui il numero di pod, il numero di nodi, le impostazioni di scalabilità del deployment, i budget di interruzione dei pod e altre impostazioni di configurazione.

Prerequisiti

Prima di eseguire l'upgrade, assicurati di soddisfare le seguenti condizioni:

  • Hai un cluster utente di destinazione gestito dal cluster di amministrazione.
  • Nel cluster utente di destinazione è presente un'installazione di Anthos Service Mesh esistente con upgrade disponibili.

Visualizzare l'installazione esistente

Verifica che Anthos Service Mesh sia installato sul cluster.

console

Nella console di Service Center, vai al menu Service Mesh per visualizzare l'elenco dei cluster con Anthos Service Mesh installato.

API

Puoi trovare le seguenti risorse personalizzate in un cluster di amministrazione che descrivono la tua installazione attuale di Anthos Service Mesh:

  • Un oggetto ServiceMeshBinding che associa un oggetto ServiceMeshFeatureSpec all'ID del tuo cluster utente. Esegui il comando seguente per trovare l'oggetto. Poiché questo comando potrebbe restituire più oggetti, devi trovare l'oggetto con l'ID del cluster di destinazione nella sua specifica.

    KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center
    

    Ecco un esempio dei contenuti dell'oggetto:

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: ServiceMeshBinding
    metadata:
     name: service-mesh-binding-sample
     namespace: anthos-management-center
    spec:
     configs:
     - configRef:
         name: PREVIOUS_SERVICE_MESH_SPEC
         namespace: anthos-management-center
       placement:
         clusterIDs:
         - TARGET_CLUSTER_ID
    
  • Un oggetto ServiceMeshFeatureSpec che definisce le specifiche della tua installazione di Anthos Service Mesh. Il nome e lo spazio dei nomi sono indicati nel campo config.configRef nell'oggetto ServiceMeshBinding descritto nell'esempio precedente. Esegui il comando seguente per visualizzare l'oggetto.

    KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshfeaturespec PREVIOUS_SERVICE_MESH_SPEC -n anthos-management-center -o yaml
    

    Ecco un esempio dei contenuti dell'oggetto:

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: ServiceMeshFeatureSpec
    metadata:
     name:PREVIOUS_SERVICE_MESH_SPEC
     namespace: anthos-management-center
    spec:
     version: 1.7.3-asm.6
    

Installa una versione più recente di Anthos Service Mesh

Puoi eseguire l'aggiornamento a una versione più recente di Anthos Service Mesh utilizzando la console del centro di gestione o l'API.

console

  1. Nella Console Centro di gestione, vai al menu Dashboard.
  2. Fai clic sulla scheda Upgrades (Upgrade) per visualizzare tutti gli upgrade disponibili.
  3. Fai clic su Visualizza upgrade per il cluster di cui vuoi eseguire l'upgrade.
  4. Nell'elenco Upgrade disponibili, individua la versione target di Anthos Service Mesh a cui vuoi eseguire l'upgrade e fai clic su Esegui upgrade per aprire la pagina di upgrade di Anthos Service Mesh. Pagina Upgrade disponibili
  5. Conferma le informazioni sulla versione di destinazione, ad esempio versione, descrizione e un link alle note di rilascio, quindi fai clic su Continua.
  6. Nella finestra di dialogo popup, fai clic su Esegui upgrade per iniziare a installare la versione di destinazione di Anthos Service Mesh sul cluster di destinazione.
  7. Viene visualizzata la pagina Service Mesh in cui puoi vedere che è installata la versione di destinazione.

API

Per installare una versione più recente di Anthos Service Mesh, esegui i passaggi seguenti utilizzando i comandi kubectl nel cluster di amministrazione:

  1. Crea un nuovo oggetto ServiceMeshFeatureSpec per la nuova versione. Ecco un oggetto di esempio per la versione 1.8.3-asm.2:

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: ServiceMeshFeatureSpec
    metadata:
     name: NEW_SERVICE_MESH_SPEC
     namespace: anthos-management-center
    spec:
     version: 1.8.3-asm.2
    
  2. Aggiorna l'oggetto ServiceMeshBinding esistente per inserire una nuova voce per associare il nuovo ServiceMeshFeatureSpec al cluster:

     apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
     kind: ServiceMeshBinding
     metadata:
      name: service-mesh-binding-sample
      namespace: anthos-management-center
     spec:
      configs:
      - configRef:
          name: PREVIOUS_SERVICE_MESH_SPEC
          namespace: anthos-management-center
        placement:
          clusterIDs:
          - TARGET_CLUSTER_ID
      - configRef:
          name: NEW_SERVICE_MESH_SPEC
          namespace: anthos-management-center
        placement:
          clusterIDs:
          - TARGET_CLUSTER_ID
    
  3. La versione più recente di Anthos Service Mesh viene installata nel cluster di amministrazione. Puoi controllare se l'installazione è pronta utilizzando il seguente comando:

     KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center -o jsonpath="{range .items[*].status.bindingItemStatuses[*]}{'\n'}{['clusterID', 'configRef', 'conditions']}" | grep NEW_SERVICE_MESH_SPEC | grep TARGET_CLUSTER_ID
    

    Sostituisci TARGET_CLUSTER_ID e NEW_SERVICE_MESH_SPEC con i valori configurati nell'oggetto ServiceMeshBinding.

    Ecco un esempio dell'output:

    target-user-cluster-1 {"name":"new-spec-q64x7","namespace":"anthos-management-center"} [{"lastTransitionTime":"2021-05-27T18:06:27Z","message":"","observedGeneration":1,"reason":"Healthy","status":"True","type":"Ready"}]
    

    La condizione status: true della condizione Ready indica che l'installazione è stata completata.

La versione precedente di Anthos Service Mesh non viene rimossa automaticamente. Devi eseguire manualmente la migrazione dei carichi di lavoro alla nuova versione di Anthos Service Mesh e disinstallare la versione precedente.

Migrazione dei carichi di lavoro

Esegui la seguente procedura sul tuo cluster utente per eseguire la migrazione dei carichi di lavoro:

  1. Ottieni l'etichetta di revisione della tua versione precedente e di nuova versione di Anthos Service Mesh. Per trovare questi valori:

    console

    1. Nella console di Management Center, vai al menu Service Mesh.
    2. Nell'elenco dei cluster, individua l'etichetta di revisione nella colonna Revisione del cluster.

    API

    Esegui questo comando:

     KUBECONFIG=USER_KUBECONFIG kubectl get pod -n istio-system -l app=istiod -L istio.io/rev
    

    Ecco un esempio dell'output:

    NAME                                READY   STATUS    RESTARTS   AGE   REV
    istiod-asm-173-6-756d989c58-p84b9   1/1     Running   0          13h   asm-173-6
    istiod-asm-173-6-756d989c58-t6vh8   1/1     Running   0          13h   asm-173-6
    istiod-asm-183-2-76f64c6bc7-2qnxq   1/1     Running   0          17h   asm-183-2
    istiod-asm-183-2-76f64c6bc7-8nrpz   1/1     Running   0          17h   asm-183-2
    

    Nell'output, l'etichetta di revisione si trova nella colonna REV. In questo esempio, il valore è asm-183-2. Questa etichetta viene utilizzata in seguito per attivare l'iniezione sidecar per la nuova versione di Anthos Service Mesh.

  2. Aggiungi l'etichetta di revisione a uno spazio dei nomi. Nel comando seguente, sostituisci REVISION con il valore che corrisponde all'etichetta di revisione della nuova versione di Anthos Service Mesh.

    KUBECONFIG=USER_KUBECONFIG kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite
    
  3. Riavvia i carichi di lavoro per attivare la nuova inserimento, ad esempio per riavviare tutti i deployment in uno spazio dei nomi:

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

    KUBECONFIG=USER_KUBECONFIG kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
    
  5. Testa l'applicazione per verificare che i carichi di lavoro funzionino correttamente.

  6. Se hai carichi di lavoro in altri spazi dei nomi, ripeti i passaggi da 2 a 5 per etichettare lo spazio dei nomi e riavviare i carichi di lavoro.

Elimina la versione precedente di Anthos Service Mesh

Se la tua applicazione funziona come previsto, puoi disinstallare la versione precedente di Anthos Service Mesh utilizzando il Centro di gestione o l'API.

console

  1. Nella console di Management Center, vai al menu Service Mesh.
  2. Nella colonna Versioni, fai clic sul link della versione precedente di Anthos Service Mesh.
  3. Nella pagina Modifica mesh di servizi, fai clic su Rimuovi mesh di servizi.
  4. Una finestra di dialogo popup mostra il risultato di un controllo di affidabilità prima dell'eliminazione. La finestra di dialogo elenca tutti gli spazi dei nomi e i pod che dipendono ancora dalla versione precedente di Anthos Service Mesh controllando l'etichetta istio.io/rev su spazi dei nomi e pod. Se il controllo trova una di queste dipendenze, non puoi procedere finché non esegui la migrazione di questi pod o spazi dei nomi.
  5. Se il controllo di affidabilità supera il controllo, fai clic su Rimuovi per iniziare a disinstallare Anthos Service Mesh sul cluster di destinazione.

Dopo aver inviato la richiesta di eliminazione, si apre la pagina Service Mesh e la versione precedente di Anthos Service Mesh non è più visibile. La disinstallazione delle risorse precedenti di Anthos Service Mesh potrebbe richiedere alcuni minuti.

API

  1. Prima di eliminare la versione precedente di Anthos Service Mesh, verifica che non esistano pod o spazi dei nomi che dipendono da quella versione di Anthos Service Mesh.

    1. Esegui il comando seguente per verificare le dipendenze degli spazi dei nomi.

      KUBECONFIG=USER_KUBECONFIG kubectl get namespace -l istio.io/rev=PREVIOUS_REVISION  
      

      Sostituisci PREVIOUS_REVISION con l'etichetta di revisione della versione precedente di Anthos Service Mesh.

    2. Esegui il comando seguente per verificare le dipendenze dei pod.

      KUBECONFIG=USER_KUBECONFIG kubectl get pod -l istio.io/rev=PREVIOUS_REVISION --field-selector metadata.namespace!=istio-system --all-namespaces
      

    Se le query restituiscono risultati vuoti, vai al passaggio successivo. In caso contrario, esegui la migrazione del carico di lavoro prima di procedere.

  2. Aggiorna l'oggetto ServiceMeshBinding nel cluster di amministrazione per svincolare le specifiche della caratteristica precedente dal cluster di destinazione. Ecco un esempio di oggetto ServiceMeshBinding dopo la rimozione della voce PREVIOUS_SERVICE_MESH_SPEC:

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: ServiceMeshBinding
    metadata:
     name: service-mesh-binding-sample
     namespace: anthos-management-center
    spec:
     configs:
     - configRef:
         name: NEW_SERVICE_MESH_SPEC
         namespace: anthos-management-center
       placement:
         clusterIDs:
         -  TARGET_CLUSTER_ID
    
  3. Dopo l'aggiornamento di ServiceMeshBinding, viene rimossa la versione precedente di Anthos Service Mesh. Il completamento della disinstallazione potrebbe richiedere diversi minuti. Esegui il comando seguente per verificare che la versione precedente sia stata rimossa.

    KUBECONFIG=USER_KUBECONFIG kubectl get deployment -n istio-system -l istio.io/rev=PREVIOUS_REVISION
    

    Questo comando restituisce un risultato vuoto se la disinstallazione è completa.