IBM Cloud Docs
Aggiornamento di Istio

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-system alla 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-ingressgateway non subisce variazioni durante o dopo l'aggiornamento.

Per aggiornare la versione minore del componente aggiuntivo Istio:

  1. Verificare la versione attuale del componente aggiuntivo Istio.

    kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}'
    
  2. Riesamina le versioni di componente aggiuntivo Istio disponibili.

    ibmcloud ks addon-versions
    
  3. Esaminare le modifiche apportate a ciascuna versione nel registro delle modifiche del componente aggiuntivo Istio.

  4. 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:

    1. Eseguire il comando per ottenere i dettagli delle configurazioni dei webhook mutanti.

      kubectl get mutatingwebhookconfigurations
      

      Output di esempio

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   5          32m
      
    2. Nell'output, individuare il sito istio-sidecar-injector ed 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-operators
      

      Output di esempio

      mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted
      
    3. 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 mutatingwebhookconfigurations
      

      Output di esempio

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   4          60s
      
    4. Eseguire il comando per ottenere i dettagli della configurazione del webhook di convalida.

      kubectl get validatingwebhookconfigurations
      

      Output di esempio

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          66s
      istiod-istio-system            1          31m
      
    5. Esaminare l'output. Se il webhook istiod-istio-system è presente nell'elenco, eseguire il comando seguente per eliminarlo.

      kubectl delete ValidatingWebhookConfiguration istiod-istio-system
      

      Output di esempio

      validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted
      
    6. Verificare che il webhook istiod-istio-system non sia più elencato.

      kubectl get validatingwebhookconfigurations
      

      Output di esempio

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          2m
      
  5. Aggiorna il componente aggiuntivo Istio.

    ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID>
    
  6. Prima di procedere, verifica che l'aggiornamento sia completo.

    Il completamento del processo di aggiornamento può richiedere fino a 20 minuti.

    1. Assicurati che Health State sia normal e Health Status sia Addon Ready. Se lo stato è updating, l'aggiornamento non è ancora completo..

      ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
      
    2. Assicurati che i pod del componente del piano di controllo nello spazio dei nomi istio-system abbiano uno STATUS di Running.

      kubectl get pods -n istio-system
      
      NAME                                                     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
      
  7. Aggiorna il tuo client istioctl e i collaterali.

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.

  1. Ottieni la versione del tuo client istioctl e dei componenti del piano di controllo del componente aggiuntivo Istio.

    istioctl version --short=false
    

    Output 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}
    ...
    
  2. Nell'output, confronta il valore di client version (istioctl) con la versione dei componenti del piano di controllo di Istio, ad esempio con pilot version. Se le versioni dei componenti di client version e del piano di controllo non corrispondono:

    1. Scarica il client istioctl della stessa versione dei componenti del piano di controllo.

      curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
      
    2. Passa alla directory del pacchetto Istio.

      cd istio-1.23.5
      
    3. Linux e gli utenti di macOS: Aggiungere il client istioctl alla variabile di sistema PATH.

      export PATH=$PWD/bin:$PATH
      
  3. Nell'output del passo 1, confronta la pilot version alla data plane version per ciascun pod di piano dati.

    • Se pilot version e data plane version corrispondono, non sono necessari ulteriori aggiornamenti.
    • Se pilot version e data plane version non 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 come data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}.
    kubectl rollout restart deployment <deployment> -n <namespace>
    

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

Passo 1: disabilitare il componente aggiuntivo Istio dalla console

Disattivare il componente aggiuntivo dalla console o dalla CLI.

  1. Nella dashboard del cluster, fai clic sul nome del cluster in cui desideri rimuovere il componente aggiuntivo Istio.

  2. Passare alla sezione Componenti aggiuntivi.

  3. Nella scheda Managed Istio, fai clic sull'icona del menu Action.

  4. Fai clic su Uninstall. Il componente aggiuntivo Istio gestito è disabilitato in questo cluster.

  5. 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.

  1. Disabilita il componente aggiuntivo istio.
    ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
    
  2. 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>
    
  3. 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).

  1. Salvare il sito managed-istio-custom ConfigMap 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
    
  2. 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
      
  3. 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.

  1. Assicurarsi che lo strumento istioctl cli sia alla versione di patch necessaria.

    istioctl version
    
  2. 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.

  1. 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
    
  2. 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>
      

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à.