Aggiornamento di Istio
Non utilizzare istioctl per aggiornare la versione di Istio installata dal componente aggiuntivo gestito. Quando viene aggiornato, il componente aggiuntivo Istio gestito include anche un aggiornamento della versione di Istio.
Aggiornamento a una versione minore del componente aggiuntivo Istio
IBM Cloud mantiene aggiornati tutti i tuoi componenti Istio distribuendo automaticamente gli aggiornamenti delle patch alla versione più recente di Istio supportata da IBM Cloud Kubernetes Service. Le versioni supportate sono testate da IBM Cloud e approvate per l'uso in IBM Cloud Kubernetes Service.
Prima di cominciare:
Tenete presente quanto segue durante l'aggiornamento delle versioni minori:
-
È possibile aggiornare manualmente il componente aggiuntivo Istio solo una versione alla volta. Per aggiornare il componente aggiuntivo Istio di due o più versioni, è possibile ripetere il processo di aggiornamento manuale oppure disinstallare il componente aggiuntivo e installare la versione successiva.
-
Non è possibile ripristinare il componente aggiuntivo Istio gestito a una versione precedente. Per tornare a una versione minore precedente, è necessario disinstallare il componente aggiuntivo e installare la versione precedente.
-
Quando aggiorni i componenti di controllo istio nello spazio dei nomi
istio-systemalla versione secondaria più recente, potresti riscontrare delle modifiche con interruzione del servizio. Riesamina le seguenti modifiche che si verificano durante un aggiornamento della versione secondaria.- Man mano che gli aggiornamenti vengono distribuiti ai pod del piano di controllo, i pod vengono ricreati. Il piano di controllo Istio è pienamente disponibile solo dopo il completamento dell'aggiornamento.
- Il piano di dati Istio continua a funzionare durante l'aggiornamento. Tuttavia, del traffico alle applicazioni nella rete di servizi potrebbe essere interrotto per un breve periodo di tempo.
- L'indirizzo IP esterno per il programma di bilanciamento del carico
istio-ingressgatewaynon subisce variazioni durante o dopo l'aggiornamento.
Per aggiornare la versione minore del componente aggiuntivo Istio:
-
Verificare la versione attuale del componente aggiuntivo Istio.
kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}' -
Riesamina le versioni di componente aggiuntivo Istio disponibili.
ibmcloud ks addon-versions -
Esaminare le modifiche apportate a ciascuna versione nel registro delle modifiche del componente aggiuntivo Istio.
-
Se si sta eseguendo l'aggiornamento dalla versione 1.11 alla versione 1.12 e i componenti Istio sono stati forniti con la versione 1.10 o precedente:
-
Eseguire il comando per ottenere i dettagli delle configurazioni dei webhook mutanti.
kubectl get mutatingwebhookconfigurationsOutput di esempio
NAME WEBHOOKS AGE istio-sidecar-injector 5 32m -
Nell'output, individuare il sito
istio-sidecar-injectored esaminare la colonna WEBHOOKS. Se ci sono 5 o più webhook, eseguire il seguente comando per eliminare i webhook aggiuntivi.kubectl delete mutatingwebhookconfigurations istio-sidecar-injector && kubectl rollout restart deploy addon-istio-operator -n ibm-operatorsOutput di esempio
mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted -
Verificare che i webhook aggiuntivi siano stati eliminati. Ottenere i dettagli delle configurazioni dei webhook mutanti e verificare che ci siano 4 webhook
istio-sidecar-injector.kubectl get mutatingwebhookconfigurationsOutput di esempio
NAME WEBHOOKS AGE istio-sidecar-injector 4 60s -
Eseguire il comando per ottenere i dettagli della configurazione del webhook di convalida.
kubectl get validatingwebhookconfigurationsOutput di esempio
NAME WEBHOOKS AGE istio-validator-istio-system 2 66s istiod-istio-system 1 31m -
Esaminare l'output. Se il webhook
istiod-istio-systemè presente nell'elenco, eseguire il comando seguente per eliminarlo.kubectl delete ValidatingWebhookConfiguration istiod-istio-systemOutput di esempio
validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted -
Verificare che il webhook
istiod-istio-systemnon sia più elencato.kubectl get validatingwebhookconfigurationsOutput di esempio
NAME WEBHOOKS AGE istio-validator-istio-system 2 2m
-
-
Aggiorna il componente aggiuntivo Istio.
ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID> -
Prima di procedere, verifica che l'aggiornamento sia completo.
Il completamento del processo di aggiornamento può richiedere fino a 20 minuti.
-
Assicurati che Health State sia
normale Health Status siaAddon Ready. Se lo stato èupdating, l'aggiornamento non è ancora completo..ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> -
Assicurati che i pod del componente del piano di controllo nello spazio dei nomi
istio-systemabbiano uno STATUS diRunning.kubectl get pods -n istio-systemNAME READY STATUS RESTARTS AGE istio-system istio-egressgateway-6d4667f999-gjh94 1/1 Running 0 61m istio-system istio-egressgateway-6d4667f999-txh56 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-b9xgp 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-xhkv6 1/1 Running 0 61m istio-system istiod-5b9b5bfbb7-jvcjz 1/1 Running 0 60m istio-system istiod-5b9b5bfbb7-khcht 1/1 Running 0 60m
-
Aggiornamento del client istioctl e dei collaterali
Ogni volta che il componente aggiuntivo gestito da Istio viene aggiornato, aggiorna il tuo client istioctl e i collaterali Istio per la tua applicazione.
Ad esempio, la versione di patch del tuo componente aggiuntivo potrebbe essere aggiornata automaticamente da IBM Cloud Kubernetes Service oppure potresti aggiornare la versione secondaria del tuo componente aggiuntivo.
In entrambi i casi, aggiorna il tuo client istioctl e i collaterali Istio esistenti della tua applicazione in modo che corrispondano alla versione Istio del componente aggiuntivo.
-
Ottieni la versione del tuo client
istioctle dei componenti del piano di controllo del componente aggiuntivo Istio.istioctl version --short=falseOutput di esempio
client version: version.BuildInfo{Version:"1.11.2"} pilot version: version.BuildInfo{Version:1.23.5} pilot version: version.BuildInfo{Version:1.23.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.23.5} ... -
Nell'output, confronta il valore di
client version(istioctl) con la versione dei componenti del piano di controllo di Istio, ad esempio conpilot version. Se le versioni dei componenti diclient versione del piano di controllo non corrispondono:-
Scarica il client
istioctldella stessa versione dei componenti del piano di controllo.curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh - -
Passa alla directory del pacchetto Istio.
cd istio-1.23.5 -
Linux e gli utenti di macOS: Aggiungere il client
istioctlalla variabile di sistemaPATH.export PATH=$PWD/bin:$PATH
-
-
Nell'output del passo 1, confronta la
pilot versionalladata plane versionper ciascun pod di piano dati.- Se
pilot versionedata plane versioncorrispondono, non sono necessari ulteriori aggiornamenti. - Se
pilot versionedata plane versionnon corrispondono, riavviare le distribuzioni per i pod del piano dati che eseguono la vecchia versione. Il nome del pod e lo spazio dei nomi sono elencati in ogni voce comedata plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}.
kubectl rollout restart deployment <deployment> -n <namespace> - Se
Aggiornamento da una versione non supportata del componente aggiuntivo Istio
Aggiornare i componenti di Istio all'ultima versione della patch supportata da IBM Cloud Kubernetes Service.
Migrazione dal componente aggiuntivo Istio a Istio comunitario
È possibile migrare a Istio della comunità invece di utilizzare il componente aggiuntivo Istio gestito.
Prima di iniziare
- Se si utilizza una versione precedente a 1.21, aggiornare il componente aggiuntivo Istio alla versione 1.21 o successiva. Questo aggiornamento è importante perché con questa versione la disattivazione del componente aggiuntivo non rimuove le risorse personalizzate come accadeva nelle versioni precedenti.
- Se non si ha più bisogno di Istio, è possibile disinstallare il componente aggiuntivo senza installare Istio della comunità invece di completare questi passaggi.
Passo 1: disabilitare il componente aggiuntivo Istio dalla console
Disattivare il componente aggiuntivo dalla console o dalla CLI.
-
Nella dashboard del cluster, fai clic sul nome del cluster in cui desideri rimuovere il componente aggiuntivo Istio.
-
Passare alla sezione Componenti aggiuntivi.
-
Nella scheda Managed Istio, fai clic sull'icona del menu Action.
-
Fai clic su Uninstall. Il componente aggiuntivo Istio gestito è disabilitato in questo cluster.
-
Nella scheda Managed Istio, verifica che il componente aggiuntivo che hai disinstallato non sia più elencato.
Passo 1: disabilitare i componenti aggiuntivi di Istio dalla CLI
Disattivare il componente aggiuntivo e verificare che non rimangano altri componenti aggiuntivi di Istio.
- Disabilita il componente aggiuntivo
istio.ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f - Verifica che tutti i componenti aggiuntivi Istio gestiti siano disabilitati in questo cluster. Nell'output non viene restituito alcun componente aggiuntivo Istio.
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> - Attendere 10 minuti prima di passare alla fase successiva. In questo modo abbiamo il tempo di disimparare l'operatore istio.
Passo 2: ridimensionare l'operatore Istio
Ridurre la distribuzione dell'operatore Istio.
Esegui il seguente comando:
kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0
Fase 3: Risparmio di risorse
Salvate tutte le risorse create o modificate nello spazio dei nomi istio-system e tutte le risorse Kubernetes generate automaticamente dalle definizioni di risorse personalizzate (CRD).
-
Salvare il sito
managed-istio-customConfigMap per risolvere un problema o per reinstallare il componente aggiuntivo in un secondo momento.kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml -
Salvare tutti i CR IstioOperator (IOP).
- Elencare le risorse dell'IOP:
kubectl get iop -A - Per ogni risorsa IOP elencata, rimuovere il finalizzatore. Esempio utilizzando la IOP di
managed-istio:kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]' - Per ogni risorsa IOP elencata, salvarla in un file:
kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
- Elencare le risorse dell'IOP:
-
Attendere 10 minuti prima di passare alla fase successiva.
Fase 4: modifica del programma di installazione delle IOP
Eliminare tutte le risorse dell'operatore Istio (IOP), ad esempio per un gateway di ingresso personalizzato.
-
Assicurarsi che lo strumento
istioctlcli sia alla versione di patch necessaria.istioctl version -
Per ogni file IOP salvato nel passaggio precedente, eseguire il comando
upgrade.istioctl upgrade -f <filename>.yaml
Passo 5: rimozione dell'operatore Istio e delle IOP
Eliminare la distribuzione dell'operatore Istio, l'account del servizio, il binding del ruolo del cluster, il ruolo del cluster e tutte le IOP.
-
Eseguire i seguenti comandi per eliminare la distribuzione dell'operatore istio:
kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true kubectl delete clusterrole addon-istio-operator --ignore-not-found=true -
Cancellare le IOP.
- Elencare le risorse dell'IOP:
kubectl get iop -A - Per ogni risorsa IOP elencata, eliminarla:
kubectl delete IstioOperator <resource_name> -n <namespace>
- Elencare le risorse dell'IOP:
Fase 6: Rimozione del ConfigMap
Poiché il sito ConfigMap è stato salvato in precedenza, può essere rimosso.
Rimuovere il sito managed-istio-custom ConfigMap.
kubectl delete cm -n ibm-operators managed-istio-custom
La rimozione del componente aggiuntivo è completa e si può continuare a utilizzare e aggiornare la comunità Istio secondo le necessità.