Questa guida spiega come eseguire l'upgrade di Anthos Service Mesh dalla versione 1.4.5+ or 1.5.4+ alla versione 1.5.10 su Google Kubernetes Engine.
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 illustra i passaggi da seguire per eseguire l'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 apply
.Se esegui l'upgrade da Anthos Service Mesh 1.4.5 o versioni successive e hai abilitato funzionalità facoltative in un file YAML, devi convertire il codice YAML dall'API IstioControlPlane all'API IstioOperator.
Se esegui l'upgrade di Anthos Service Mesh su un cluster privato, devi aggiungere una regola firewall per aprire la porta 15017 se vuoi utilizzare l'inserimento automatico di sidecar. Se non aggiungi la regola firewall e l'inserimento automatico di sidecar è abilitato, ricevi un errore quando esegui il deployment dei carichi di lavoro. Per maggiori dettagli sull'aggiunta di una regola firewall, consulta Aggiunta di regole firewall per casi d'uso specifici.
Programma un tempo di riposo. L'upgrade può richiedere fino a un'ora, a seconda della scala del cluster. Tieni presente che non è incluso il tempo necessario per rieseguire il deployment dei carichi di lavoro per aggiornare i proxy sidecar.
Eliminazione delle risorse 1.4
Se hai installato Anthos Service Mesh 1.4 utilizzando la versione alpha dell'interfaccia a riga di comando di GKE Enterprise, potrebbe essere necessario eliminare le risorse 1.4 prima di eseguire l'upgrade alla versione 1.5.10.
Verifica se le risorse Anthos Service Mesh hanno operator.istio.io/component
etichette.
kubectl get all -n istio-system --selector operator.istio.io/component
Se il comando restituisce No resources found in istio-system namespace
, utilizza i comandi seguenti per eliminare le risorse Anthos Service Mesh 1.4.
kubectl delete deploy -n istio-system promsd
kubectl delete all -n istio-system --selector 'app in (galley, istio-ingressgateway, istio-nodeagent, sidecarInjectorWebhook, promsd, pilot)'
Impostazione delle impostazioni predefinite per progetti e cluster
Ottieni l'ID del progetto in cui è stato creato il cluster:
gcloud
gcloud projects list
Console
Nella console Google Cloud, vai alla pagina Dashboard:
Fai clic sull'elenco a discesa Seleziona da nella parte superiore della pagina. Nella finestra Seleziona da visualizzata, seleziona 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 progetto:
export PROJECT_ID=
YOUR_PROJECT_ID
Imposta l'ID progetto predefinito per Google Cloud CLI:
gcloud config set project ${PROJECT_ID}
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
Imposta la zona o la regione predefinita per Google Cloud CLI.
Se hai un cluster a zona singola, imposta la zona predefinita:
gcloud config set compute/zone ${CLUSTER_LOCATION}
Se hai un cluster a livello di regione, imposta la regione predefinita:
gcloud config set compute/region ${CLUSTER_LOCATION}
Impostazione di credenziali e autorizzazioni
-
Ottieni le
credenziali di autenticazione per interagire con il cluster:
gcloud container clusters get-credentials ${CLUSTER_NAME}
-
Concedi all'utente corrente le autorizzazioni di amministratore del cluster. Devi disporre delle seguenti autorizzazioni per creare le regole di 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.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz.1.sig openssl dgst -verify - -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.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.5.10-asm.2-linux.tar.gz
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.5.10-asm.2
che contiene:- Applicazioni di esempio in
samples
- I seguenti strumenti nella directory
bin
:istioctl
: utilizziistioctl
per installare Anthos Service Mesh.asmctl
: utilizziasmctl
per convalidare la configurazione di sicurezza dopo l'installazione di Anthos Service Mesh. (Attualmente,asmctl
non è supportato su GKE su VMware).
- Applicazioni di esempio in
-
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.5.10-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.5.10-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-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.5.10-asm.2-osx.tar.gz
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.5.10-asm.2
che contiene:- Applicazioni di esempio in
samples
- I seguenti strumenti nella directory
bin
:istioctl
: utilizziistioctl
per installare Anthos Service Mesh.asmctl
: utilizziasmctl
per convalidare la configurazione di sicurezza dopo l'installazione di Anthos Service Mesh. (Attualmente,asmctl
non è supportato su GKE su VMware).
- Applicazioni di esempio in
-
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.5.10-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.5.10-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-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.5.10-asm.2-win.zip
Il comando crea una directory di installazione nella directory di lavoro attuale denominata
istio-1.5.10-asm.2
che contiene:- Applicazioni di esempio in
samples
- I seguenti strumenti nella directory
bin
:istioctl
: utilizziistioctl
per installare Anthos Service Mesh.asmctl
: utilizziasmctl
per convalidare la configurazione di sicurezza dopo l'installazione di Anthos Service Mesh. (Attualmente,asmctl
non è supportato su GKE su VMware).
- Applicazioni di esempio in
-
Assicurati di essere nella directory principale dell'installazione di Anthos Service Mesh.
cd istio-1.5.10-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 istioctl apply command
per eseguire l'upgrade di Anthos Service Mesh, devi specificare -f istio-operator.yaml
nella riga di comando. Questo file contiene informazioni sul progetto e sul cluster necessarie per abilitare le funzionalità di sicurezza mesh e di telemetria mesh. Devi scaricare i file di configurazione istio-operator.yaml
e di altre risorse e impostare le informazioni sul progetto e sul cluster.
Per preparare i file di configurazione delle risorse:
Se non l'hai ancora fatto, installa
kpt
:gcloud components install kpt
Facoltativamente, crea una nuova directory per i file di configurazione delle risorse del pacchetto Anthos Service Mesh. Se prevedi di configurare più cluster, potresti voler utilizzare il nome del cluster come nome della directory.
Passa alla directory in cui vuoi scaricare il pacchetto Anthos Service Mesh.
Scarica il pacchetto Anthos Service Mesh nella directory di lavoro attuale:
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm .
Imposta il nome del cluster:
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
Facoltativamente, personalizza i file di configurazione delle risorse utilizzando i setter di
kpt
. Per impostazione predefinita, questi setter utilizzano i valori predefiniti pergcloud config
. Se imposti i valori predefiniti digcloud config
o se vuoi modificare i valori, esegui i seguenti setter:Imposta l'ID progetto:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Imposta la zona o la regione predefinita:
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
Facoltativamente, puoi registrare i file di configurazione delle risorse nel tuo sistema di controllo del codice sorgente, ad esempio Cloud Source Repositories, in modo da poter tenere traccia delle modifiche ai file.
Upgrade di Anthos Service Mesh
Questa sezione spiega come eseguire l'upgrade di Anthos Service Mesh e attivare:
- Le funzionalità predefinite supportate elencate nella pagina Funzionalità supportate.
- Autorità di certificazione Anthos Service Mesh (Mesh CA).
- La pipeline di dati di telemetria su cui si basano le dashboard di Anthos Service Mesh nella console Google Cloud.
Per informazioni sull'abilitazione delle funzionalità facoltative supportate, consulta Attivazione delle funzionalità facoltative.
Per installare Anthos Service Mesh:
Scegli uno dei seguenti comandi per configurare Anthos Service Mesh in modalità di autenticazione
PERMISSIVE
mTLS (mutual TLS)
o STRICT
in modalità mTLS.
mTLS PERMISSIVO
istioctl manifest apply --set profile=asm \ -f asm/cluster/istio-operator.yaml
mTLS STRETTA
istioctl manifest apply --set profile=asm \ -f asm/cluster/istio-operator.yaml \ --set values.global.mtls.enabled=true
Controlla i componenti del piano di controllo
L'upgrade richiede la reinstallazione dei componenti del piano di controllo, che richiede circa 5-10 minuti. I vecchi componenti del piano di controllo vengono terminati e poi eliminati man mano che vengono installati i nuovi componenti. Puoi verificare l'avanzamento osservando il valore nella colonna AGE
dei carichi di lavoro.
kubectl get pod -n istio-system
Output di esempio:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-5bfdf7c586-v6wxx 2/2 Terminating 0 25m istio-ingressgateway-7b598c5557-b88md 2/2 Running 0 5m44s istiod-78cdbbbdb-d7tps 1/1 Running 0 5m16s promsd-576b8db4d6-lqf64 2/2 Running 1 5m26s
In questo esempio sono presenti due istanze di istio-ingressgateway
. È in corso l'arresto dell'istanza con 25m
nella colonna AGE
. Tutti gli altri componenti sono stati installati di recente.
Convalida dell'installazione in corso...
Ti consigliamo di utilizzare lo strumento di analisi asmctl
per convalidare la configurazione di base del progetto, del cluster e dei carichi di lavoro. Se un test asmctl
non va a buon fine, asmctl
consiglia le soluzioni, se possibile. Il comando asmctl validate
esegue test di base che verificano:
- Che le API richieste da Anthos Service Mesh siano abilitate nel progetto.
- Che Istio-Ingressgateway sia configurato correttamente per le chiamate alla CA mesh.
- Stato generale di Istiod e Istio-Ingressgateway.
Se esegui il comando asmctl validate
con il flag facoltativo --with-testing-workloads
, oltre ai test di base, asmctl
esegue test di sicurezza che controllano:
- La comunicazione TLS reciproca (mTLS) sia configurata correttamente.
- Mesh CA può emettere certificati.
Per eseguire i test di sicurezza, asmctl
esegue il deployment dei carichi di lavoro sul tuo cluster in uno spazio dei nomi di test, esegue i test di comunicazione mTLS, restituisce i risultati ed elimina lo spazio dei nomi di test.
Per eseguire asmctl
:
Assicurati che le credenziali gcloud application-default siano impostate:
gcloud auth application-default login
Se non l'hai ancora fatto, ottieni credenziali di autenticazione per interagire con il cluster:
gcloud container clusters get-credentials ${CLUSTER_NAME}
Per eseguire sia il test di base che quello di sicurezza (supponendo che
istio-1.5.10-asm.2/bin
) sia nel tuoPATH
:asmctl validate --with-testing-workloads
In caso di esito positivo, il comando risponde con un output simile al seguente:
[asmctl version 0.3.0] Using Kubernetes context: example-project_us-central1-example-cluster To change the context, use the --context flag Validating enabled APIs OK Validating ingressgateway configuration OK Validating istio system OK Validating sample traffic Launching example services... Sent traffic to example service http code: 200 verified mTLS configuration OK Validating issued certs OK
Aggiornamento dei proxy sidecar
Tutti i carichi di lavoro in esecuzione sul tuo cluster prima dell'upgrade di Anthos Service Mesh devono avere inserito o aggiornato il proxy sidecar in modo che abbia la versione attuale di Anthos Service Mesh.
Con l'inserimento automatico dei file collaterali, puoi aggiornare i file collaterali per i pod esistenti con il riavvio dei pod. La modalità di riavvio dei pod dipende dal fatto che siano stati creati nell'ambito di un deployment.
Se hai utilizzato un deployment, riavvialo, in modo da riavviare tutti i pod con i file collaterali:
kubectl rollout restart YOUR_DEPLOYMENT -n YOUR_NAMESPACE
Se non hai utilizzato un deployment, elimina i pod, che vengono ricreati automaticamente con i file collaterali:
kubectl delete pod -n YOUR_NAMESPACE --all
Verifica che tutti i pod nello spazio dei nomi abbiano dei sidecar inseriti:
kubectl get pod -n YOUR_NAMESPACE --all
Nel seguente esempio di output del comando precedente, puoi notare che la colonna
READY
indica che esistono due container per ciascuno dei tuoi carichi di lavoro: il container principale e il container per il proxy sidecar.NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...