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. 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.
Consulta le funzionalità supportate e questa guida per acquisire familiarità con le funzionalità e il processo di upgrade.
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 comandoistioctl install
.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.
Se esegui l'upgrade da Anthos Service Mesh 1.5, segui questi passaggi nel caso sia necessario eseguire il rollback:
Crea una directory denominata
asm-1-5
.Scarica il file di installazione 1.5 nella directory
asm-1-5
.Estrai i contenuti del file nella directory
asm-1-5
.Assicurati di essere nella directory root di installazione di Anthos Service Mesh 1.5.
Scarica il pacchetto
kpt
1.5 e configura il pacchettoistio-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
ehelm
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:
- Vai alla console Google Cloud.
- Selezionare il tuo progetto Google Cloud.
Fai clic sul pulsante Attiva Cloud Shell nella parte superiore della finestra della console Google Cloud.
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.
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 ...
Copia il comando lungo e incollalo per aggiornare i componenti.
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 gcloud CLI.
Se hai già installato gcloud CLI:
Esegui l'autenticazione con gcloud CLI:
gcloud auth login
Aggiorna i componenti:
gcloud components update
Installa
kubectl
:gcloud components install kubectl
Installa
kpt
:gcloud components install kpt
Assicurati che Git sia nel tuo percorso in modo che
kpt
possa trovarlo.
Imposta le variabili di ambiente
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
Vai alla pagina Dashboard nella console Google Cloud.
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.
Crea una variabile di ambiente per l'ID del progetto in cui è stato creato il cluster:
export PROJECT_ID=YOUR_PROJECT_ID
Crea una variabile di ambiente per il numero di progetto del progetto host del parco risorse:
export FLEET_PROJECT_NUMBER=YOUR_FLEET_PROJECT_NUMBER
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:
Crea una variabile di ambiente per l'ID mesh:
export MESH_ID="proj-${FLEET_PROJECT_NUMBER}"
Se nel cluster esistono già etichette che vuoi conservare, devi includerle quando aggiungi l'etichetta
mesh_id
.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 camporesourceLabels
, ad esempio:resourceLabels: csm: '' env: dev release: stable
Non è necessario conservare l'elemento
mesh_id
esistente. Sovrascrivilo con la nuova etichettamesh_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 formatoKEY=VALUE
, ad esempio:env=dev,release=stable
export EXISTING_LABELS="YOUR_EXISTING_LABELS"
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
Ottieni le credenziali di autenticazione per interagire con il cluster:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${PROJECT_ID}
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...
-
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
-
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
-
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
manifests/profiles
.
- Applicazioni di esempio nella directory
-
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
-
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
-
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
manifests/profiles
.
- Applicazioni di esempio nella directory
-
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
-
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
-
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 directorybin
. - I profili di configurazione di Anthos Service Mesh si trovano nella directory
manifests/profiles
.
- Applicazioni di esempio nella directory
-
Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
cd istio-1.6.14-asm.2
-
Per praticità, aggiungi gli strumenti nella directory
/bin
al tuo PERCORSO:export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
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 iniziare, scegli un pacchetto da scaricare in base all'autorità di certificazione (CA) che vuoi utilizzare:
asm
: thumb_up_alt Questo pacchetto abilita Mesh CA, opzione consigliata per le nuove installazioni.asm-citadel
: facoltativamente, puoi abilitare Citadel come CA. Prima di scegliere questo pacchetto, consulta Scegliere un'autorità di certificazione per ulteriori informazioni.
Per preparare i file di configurazione delle risorse:
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.
Passa alla directory in cui vuoi scaricare il pacchetto Anthos Service Mesh.
Scarica il pacchetto che vuoi utilizzare, in base alla CA
Mesh CA
Scarica il pacchetto
asm
, che abilita Mesh CA:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-asm asm
Cittadella
Scarica il pacchetto
asm-citadel
, che abilita Citadel come CA:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-citadel@release-1.6-asm asm
Imposta l'ID per il progetto in cui è stato creato il cluster:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Imposta il numero di progetto per il progetto host del parco risorse:
kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
Imposta il nome del cluster:
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
Imposta la zona o la regione predefinita:
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
Imposta il profilo di configurazione che prevedi di utilizzare:
Se tutti i cluster si trovano nello stesso progetto, imposta il profilo
asm-gcp
:kpt cfg set asm anthos.servicemesh.profile asm-gcp
Se il tuo mesh di servizi contiene o conterrà più cluster che si trovano in progetti diversi, imposta il profilo
asm-gcp-multiproject
(beta):kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
Se imposti il profilo
asm-gcp-multiproject
e hai scaricato il pacchettoasm
, che attiva Mesh CA, devi configurare gli alias dominio attendibili per gli altri progetti che formeranno il mesh di servizi multi-cluster/più progetti. In caso contrario, salta questo passaggio.Recupera l'ID progetto di tutti i cluster che saranno nel mesh multi-cluster/più progetti.
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
ePROJECT_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.
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:
- gcloud.compute.location
- gcloud.container.cluster
- gcloud.core.project
- gcloud.project.environProjectNumber
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-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
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
.
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'etichettaistio.io/rev
.Riavvia i pod per attivare la reinserimento:
kubectl rollout restart deployment -n NAMESPACE
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
Testa l'applicazione per verificare che i carichi di lavoro funzionino correttamente.
Se disponi di carichi di lavoro in altri spazi dei nomi, ripeti i passaggi precedenti per ogni spazio dei nomi.
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.
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
Riavvia i pod per attivare la reiniezione in modo che i proxy abbiano la versione precedente:
kubectl rollout restart deployment -n NAMESPACE
Esegui il rollback dei componenti del piano di controllo:
Rollback alla versione 1.6 precedente
Esegui di nuovo il deployment della versione precedente di
istio-ingressgateway
:kubectl -n istio-system rollout undo deploy istio-ingressgateway
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
Passa alla directory in cui hai scaricato il file di installazione di Anthos Service Mesh 1.5.
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:
Rimuovi il piano di controllo precedente:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
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.