Questa guida spiega come eseguire la migrazione da Istio 1.6 ad Anthos Service Mesh1.6.14 su un cluster GKE. Se hai installato una versione precedente di Istio, devi prima eseguire l'upgrade di Istio a 1.6.
Prima di iniziare
Prima di installare Anthos Service Mesh, assicurati di avere:
- Configura il tuo ambiente per installare gli strumenti di cui hai bisogno.
- Configura il tuo progetto per abilitare le API richieste e impostare le autorizzazioni.
- Configura il tuo cluster per abilitare le opzioni richieste per il cluster.
- Esaminato la preparazione alla migrazione da Istio.
Impostazione di credenziali e autorizzazioni
Inizializza il progetto per prepararlo per l'installazione. Tra le altre cose, questo comando crea un account di servizio per consentire ai componenti del piano di controllo, ad esempio il proxy sidecar, di accedere in modo sicuro ai dati e alle risorse del tuo progetto:
curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --data '' \ "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"
Il comando risponde con parentesi graffe vuote:
{}
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
Migrazione ad Anthos Service Mesh
Per eseguire la migrazione da Istio, ti consigliamo di seguire il processo di upgrade del doppio piano di controllo (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 immediatamente la versione precedente del piano di controllo.
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, vai a Completare la migrazione. In caso contrario, segui questi passaggi per ripristinare la versione precedente:
Per eseguire il rollback:
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 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
Completa la migrazione
Se ritieni che la tua applicazione funzioni come previsto, svolgi i passaggi che seguono per completare la migrazione ad Anthos Service Mesh:
Se stai eseguendo la migrazione dal componente aggiuntivo Istio su GKE, disabilita il componente aggiuntivo:
gcloud beta container clusters update CLUSTER_NAME \ --project=CLUSTER_PROJECT_ID \ --update-addons=Istio=DISABLED
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.
Rimuovi il piano di controllo precedente:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
Visualizzazione delle dashboard di Anthos Service Mesh
Questa sezione è applicabile solo se hai installato Anthos Service Mesh con il profilo di configurazione asm-gcp
. Se hai utilizzato il profilo asm-gcp-multiproject
per installare Anthos Service Mesh, i dati di telemetria non saranno disponibili nelle dashboard di Anthos Service Mesh nella console Google Cloud.
Dopo aver eseguito il deployment dei carichi di lavoro nel tuo cluster con i proxy sidecar inseriti, puoi esplorare le pagine Anthos Service Mesh nella console Google Cloud per vedere tutte le funzionalità di osservabilità offerte da Anthos Service Mesh. Tieni presente che sono necessari circa uno o due minuti per la visualizzazione dei dati di telemetria nella console Google Cloud dopo il deployment dei carichi di lavoro.
L'accesso ad Anthos Service Mesh nella console Google Cloud è controllato da Identity and Access Management (IAM). Per accedere alle pagine di Anthos Service Mesh, un Proprietario progetto deve concedere agli utenti il ruolo Editor di progetto o Visualizzatore oppure i ruoli più restrittivi descritti in Controllare l'accesso ad Anthos Service Mesh nella console Google Cloud.
Nella console Google Cloud, vai ad Anthos Service Mesh.
Seleziona il progetto Google Cloud dall'elenco a discesa nella barra dei menu.
Se disponi di più mesh di servizi, selezionalo dall'elenco a discesa Mesh di servizi.
Per scoprire di più, consulta Esplorazione di Anthos Service Mesh nella console Google Cloud.
Oltre alle pagine Anthos Service Mesh, le metriche relative ai tuoi servizi (ad esempio il numero di richieste ricevute da un determinato servizio) vengono inviate a Cloud Monitoring, dove vengono visualizzate in Metrics Explorer.
Per visualizzare le metriche:
Nella console Google Cloud, vai alla pagina Monitoring:
Seleziona Risorse > Metrics Explorer.
Per un elenco completo delle metriche, consulta la pagina relativa alle metriche Istio nella documentazione di Cloud Monitoring.
Registrazione del cluster in corso
Devi registrare il cluster nel parco risorse del progetto per ottenere l'accesso all'interfaccia utente unificata nella console Google Cloud. Un parco risorse offre un modo unificato per visualizzare e gestire i cluster e i relativi carichi di lavoro, inclusi i cluster esterni a Google Cloud.
Consulta Registrazione dei cluster nel parco risorse per informazioni sulla registrazione del cluster.
Passaggi successivi
- Esegui il deployment dell'applicazione di esempio di Boutique Online
- Aggiungi cluster ad Anthos Service Mesh