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 oggettoServiceMeshFeatureSpec
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 campoconfig.configRef
nell'oggettoServiceMeshBinding
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
- Nella Console Centro di gestione, vai al menu Dashboard.
- Fai clic sulla scheda Upgrades (Upgrade) per visualizzare tutti gli upgrade disponibili.
- Fai clic su Visualizza upgrade per il cluster di cui vuoi eseguire l'upgrade.
- 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.
- Conferma le informazioni sulla versione di destinazione, ad esempio versione, descrizione e un link alle note di rilascio, quindi fai clic su Continua.
- 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.
- 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:
Crea un nuovo oggetto
ServiceMeshFeatureSpec
per la nuova versione. Ecco un oggetto di esempio per la versione1.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
Aggiorna l'oggetto
ServiceMeshBinding
esistente per inserire una nuova voce per associare il nuovoServiceMeshFeatureSpec
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
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
eNEW_SERVICE_MESH_SPEC
con i valori configurati nell'oggettoServiceMeshBinding
.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 condizioneReady
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:
Ottieni l'etichetta di revisione della tua versione precedente e di nuova versione di Anthos Service Mesh. Per trovare questi valori:
console
- Nella console di Management Center, vai al menu Service Mesh.
- 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.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
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
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
Testa l'applicazione per verificare che i carichi di lavoro funzionino correttamente.
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
- Nella console di Management Center, vai al menu Service Mesh.
- Nella colonna Versioni, fai clic sul link della versione precedente di Anthos Service Mesh.
- Nella pagina Modifica mesh di servizi, fai clic su Rimuovi mesh di servizi.
- 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. - 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
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.
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.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.
Aggiorna l'oggetto
ServiceMeshBinding
nel cluster di amministrazione per svincolare le specifiche della caratteristica precedente dal cluster di destinazione. Ecco un esempio di oggettoServiceMeshBinding
dopo la rimozione della vocePREVIOUS_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
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.