Upgrade di Anthos Service Mesh

In questa pagina viene spiegato come:

  • Esegui asmcli per eseguire l'upgrade da Anthos Service Mesh o Istio open source 1.9 or a 1.10 patch release ad Anthos Service Mesh 1.10.6. Gli upgrade dalle versioni precedenti non sono supportati.

  • Esegui un upgrade canary per eseguire la migrazione dei carichi di lavoro al nuovo piano di controllo.

Prima di iniziare

Prima di iniziare, assicurati di:

Personalizzazioni del piano di controllo

Se hai personalizzato l'installazione precedente, avrai bisogno delle stesse personalizzazioni quando esegui l'upgrade a una nuova versione di Anthos Service Mesh o esegui la migrazione da Istio. Se hai personalizzato l'installazione aggiungendo il flag --set values a istioctl install, devi aggiungere queste impostazioni a un file YAML IstioOperator, chiamato file di overlay. Puoi specificare il file dell'overlay utilizzando l'opzione --custom_overlay con il nome del file quando esegui lo script. Lo script passa il file dell'overlay a istioctl install.

Autorità di certificazione

La modifica dell'autorità di certificazione (CA) durante un upgrade causa tempi di inattività. Durante l'upgrade, il traffico mTLS viene interrotto fino a quando tutti i carichi di lavoro non vengono passati al nuovo piano di controllo con la nuova CA.

Upgrade di Anthos Service Mesh

Di seguito viene descritto come eseguire l'upgrade di Anthos Service Mesh:

  1. Esegui asmcli install per installare Anthos Service Mesh su un singolo cluster. Consulta le seguenti sezioni per gli esempi di riga di comando. Gli esempi contengono sia argomenti obbligatori sia argomenti facoltativi che potrebbero esserti utili. Ti consigliamo di specificare sempre l'argomento output_dir in modo da poter individuare facilmente strumenti e gateway di esempio come istioctl. Consulta la barra di navigazione sulla destra per un elenco di esempi.

  2. Facoltativamente, installa o esegui l'upgrade di un gateway in entrata.

  3. Per completare la configurazione di Anthos Service Mesh, devi abilitare l'inserimento automatico di file collaterali e eseguire il deployment o rieseguire il deployment dei carichi di lavoro.

Esegui l'upgrade con funzionalità predefinite e Mesh CA

Questa sezione mostra come eseguire asmcli per eseguire l'upgrade di Anthos Service Mesh con le funzionalità supportate predefinite per la tua piattaforma e come abilitare l'autorità di certificazione Anthos Service Mesh (Mesh CA) come autorità di certificazione.

GKE

Esegui questo comando per installare il nuovo piano di controllo con funzionalità predefinite. Inserisci i valori nei segnaposto forniti.

./asmcli install \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH \
  --enable_all \
  --ca mesh_ca
  • --project_id, --cluster_name e --cluster_location Specifica l'ID progetto in cui si trova il cluster, il nome del cluster e la zona o la regione del cluster.
  • --fleet_id L'ID progetto del progetto host del parco risorse. Se non includi questa opzione, asmcli utilizza il progetto in cui è stato creato il cluster durante la registrazione del cluster.
  • --output_dir Includi questa opzione per specificare una directory in cui asmcli scarica il pacchetto anthos-service-mesh ed estrae il file di installazione, che contiene istioctl, esempi e file manifest. In caso contrario, asmcli scarica i file in una directory tmp. Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
  • --enable_all Consente allo script di:
    • Concedi le autorizzazioni IAM richieste.
    • Abilita le API di Google richieste.
    • Imposta un'etichetta sul cluster che identifica il mesh.
    • Registra il cluster nel parco risorse, se non è già registrato.
  • --ca mesh_ca Utilizza Mesh CA come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa tempi di inattività. asmcliConfigura la CA mesh per l'utilizzo dell'identità del carico di lavoro del parco risorse

On-premise

  1. Imposta il contesto attuale per il tuo cluster utente:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui questo comando per installare il nuovo piano di controllo con funzionalità predefinite. Inserisci i valori nei segnaposto forniti.

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca mesh_ca
    
    • --fleet_id L'ID progetto del progetto host del parco risorse.
    • --kubeconfig Il percorso del file kubeconfig Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
    • --output_dir Includi questa opzione per specificare una directory in cui asmcli scarica il pacchetto anthos-service-mesh ed estrae il file di installazione, che contiene istioctl, esempi e file manifest. In caso contrario, asmcli scarica i file in una directory tmp. Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
    • --platform multicloud Specifica che la piattaforma è on-premise.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API di Google richieste.
      • Imposta un'etichetta sul cluster che identifica il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca mesh_ca Utilizza Mesh CA come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa tempi di inattività. asmcliconfigura Mesh CA per utilizzare l'identità del carico di lavoro del parco risorse

Esegui l'upgrade delle funzionalità predefinite con Istio CA

Questa sezione mostra come eseguire asmcli per eseguire l'upgrade di Anthos Service Mesh con le funzionalità supportate predefinite per la tua piattaforma e abilitare la CA Istio.

GKE

./asmcli install \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH \
  --enable_all \
  --ca citadel
  • --project_id, --cluster_name e --cluster_location Specifica l'ID progetto in cui si trova il cluster, il nome del cluster e la zona o la regione del cluster.
  • --fleet_id L'ID progetto del progetto host del parco risorse. Se non includi questa opzione, asmcli utilizza il progetto in cui è stato creato il cluster durante la registrazione del cluster.
  • --output_dir Includi questa opzione per specificare una directory in cui asmcli scarica il pacchetto anthos-service-mesh ed estrae il file di installazione, che contiene istioctl, esempi e file manifest. In caso contrario, asmcli scarica i file in una directory tmp. Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
  • --enable_all Consente allo script di:
    • Concedi le autorizzazioni IAM richieste.
    • Abilita le API di Google richieste.
    • Imposta un'etichetta sul cluster che identifica il mesh.
    • Registra il cluster nel parco risorse, se non è già registrato.
  • -ca citadel Usa la CA Istio. La modifica delle autorità di certificazione durante un upgrade causa tempi di inattività.

On-premise

  1. Imposta il contesto attuale per il tuo cluster utente:

     kubectl config use-context CLUSTER_NAME
    
  2. Esegui questo comando per installare Anthos Service Mesh con le funzionalità predefinite e la CA Istio:

     ./asmcli install \
       --fleet_id FLEET_PROJECT_ID \
       --kubeconfig KUBECONFIG_FILE \
       --output_dir DIR_PATH \
       --platform multicloud \
       --enable_all \
       --ca citadel \
    

    • --fleet_id L'ID progetto del progetto host del parco risorse.
    • --kubeconfig Il percorso del file kubeconfig Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
    • --output_dir Includi questa opzione per specificare una directory in cui asmcli scarica il pacchetto anthos-service-mesh ed estrae il file di installazione, che contiene istioctl, esempi e file manifest. In caso contrario, asmcli scarica i file in una directory tmp. Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
    • --platform multicloud Specifica che la piattaforma è on-premise.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API di Google richieste.
      • Imposta un'etichetta sul cluster che identifica il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.

    • -ca citadel Usa la CA Istio. La modifica dell'autorità di certificazione durante un upgrade causa tempi di inattività.

Esegui l'upgrade con funzionalità facoltative

Un file overlay è un file YAML contenente una risorsa IstioOperator personalizzata (CR) che passi a asmcli per configurare il piano di controllo. Puoi eseguire l'override della configurazione predefinita del piano di controllo e abilitare una funzionalità facoltativa passando il file YAML a asmcli. Puoi aggiungere più overlay: ogni file di overlay sostituisce la configurazione dei livelli precedenti.

GKE

Esegui questo comando per installare il nuovo piano di controllo con funzionalità predefinite. Inserisci i valori nei segnaposto forniti.

./asmcli install \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH \
  --enable_all \
  --ca mesh_ca \
  --custom_overlay OVERLAY_FILE
  • --project_id, --cluster_name e --cluster_location Specifica l'ID progetto in cui si trova il cluster, il nome del cluster e la zona o la regione del cluster.
  • --fleet_id L'ID progetto del progetto host del parco risorse. Se non includi questa opzione, asmcli utilizza il progetto in cui è stato creato il cluster durante la registrazione del cluster.
  • --output_dir Includi questa opzione per specificare una directory in cui asmcli scarica il pacchetto anthos-service-mesh ed estrae il file di installazione, che contiene istioctl, esempi e file manifest. In caso contrario, asmcli scarica i file in una directory tmp. Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
  • --enable_all Consente allo script di:
    • Concedi le autorizzazioni IAM richieste.
    • Abilita le API di Google richieste.
    • Imposta un'etichetta sul cluster che identifica il mesh.
    • Registra il cluster nel parco risorse, se non è già registrato.
  • --ca mesh_ca Utilizza Mesh CA come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa tempi di inattività. asmcliConfigura la CA mesh per l'utilizzo dell'identità del carico di lavoro del parco risorse
  • --custom_overlay Specifica il nome del file dell'overlay.

On-premise

  1. Imposta il contesto attuale per il tuo cluster utente:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui questo comando per installare il nuovo piano di controllo con funzionalità predefinite. Inserisci i valori nei segnaposto forniti.

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca mesh_ca \
      --custom_overlay OVERLAY_FILE
    
    • --fleet_id L'ID progetto del progetto host del parco risorse.
    • --kubeconfig Il percorso del file kubeconfig Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
    • --output_dir Includi questa opzione per specificare una directory in cui asmcli scarica il pacchetto anthos-service-mesh ed estrae il file di installazione, che contiene istioctl, esempi e file manifest. In caso contrario, asmcli scarica i file in una directory tmp. Puoi specificare un percorso relativo o un percorso completo. La variabile di ambiente $PWD non funziona in questo caso.
    • --platform multicloud Specifica che la piattaforma è on-premise.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API di Google richieste.
      • Imposta un'etichetta sul cluster che identifica il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca mesh_ca Utilizza Mesh CA come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa tempi di inattività. asmcliConfigura la CA mesh per l'utilizzo dell'identità del carico di lavoro del parco risorse
    • --custom_overlay Specifica il nome del file dell'overlay.

Esegui l'upgrade dei gateway

Se hai eseguito il deployment dei gateway, dovrai eseguire l'upgrade anche di questi. Per un upgrade semplice, segui la sezione Upgrade in loco nella guida Installare ed eseguire l'upgrade dei gateway.

Passa al nuovo piano di controllo

  1. Recupera l'etichetta di revisione che si trova il giorno istiod.

    kubectl get pod -n istio-system -L istio.io/rev
    

    L'output del comando è simile al seguente.

    NAME                                             READY   STATUS    RESTARTS   AGE   REV
    istiod-asm-176-1-67998f4b55-lrzpz                1/1     Running   0          68m   asm-198-3
    istiod-asm-176-1-67998f4b55-r76kr                1/1     Running   0          68m   asm-198-3
    istiod-asm-182-2-5cd96f88f6-n7tj9                1/1     Running   0          27s   asm-1106-2
    istiod-asm-182-2-5cd96f88f6-wm68b                1/1     Running   0          27s   asm-1106-2
    1. Nell'output, sotto la colonna REV, prendi nota del valore dell'etichetta di revisione per la nuova versione. In questo esempio, il valore è asm-1106-2.

    2. Nota anche il valore nell'etichetta di revisione per la vecchia versione di istiod. Questa operazione ti consente di eliminare la versione precedente di istiod quando hai finito di spostare i carichi di lavoro alla nuova versione. Nell'output di esempio, il valore dell'etichetta di revisione per la versione precedente è asm-198-3.

  2. Aggiungi l'etichetta di revisione allo spazio dei nomi di un'applicazione e rimuovi l'etichetta istio-injection (se esistente). Nel comando seguente, imposta REVISION sul valore che corrisponde alla nuova revisione di istiod.

    kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite

    Se vedi "istio-injection not found" nell'output, puoi ignorarlo. Ciò significa che in precedenza lo spazio dei nomi non aveva l'etichetta istio-injection. Poiché l'inserimento automatica non riesce se uno spazio dei nomi contiene sia l'etichetta istio-injection sia l'etichetta di revisione, tutti i comandi kubectl label nella documentazione di Anthos Service Mesh comprendono la rimozione dell'etichetta istio-injection.

  3. Riavvia i pod per attivare la reinserimento.

    kubectl rollout restart deployment -n NAMESPACE
  4. Verifica che i pod siano configurati in modo da puntare alla nuova versione di istiod.

    kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
  5. Testa l'applicazione per verificare che i carichi di lavoro funzionino correttamente.

  6. Se disponi di carichi di lavoro in altri spazi dei nomi, ripeti i passaggi per etichettare lo spazio dei nomi e riavviare i pod.

  7. Se sei soddisfatto del funzionamento previsto dell'applicazione, continua con i passaggi per la transizione alla nuova versione di istiod. Se si verifica un problema con l'applicazione, segui la procedura per eseguire il rollback.

    Completa la transizione

    Se l'applicazione funziona come previsto, rimuovi il piano di controllo precedente per completare la transizione alla nuova versione.

    1. Passa alla directory in cui si trovano i file del repository GitHub di anthos-service-mesh.

    2. Configura il webhook di convalida per utilizzare il nuovo piano di controllo.

      kubectl apply -f asm/istio/istiod-service.yaml
      
    3. Elimina la versione precedente di istiod. Il comando da utilizzare varia a seconda che tu stia eseguendo la migrazione da Istio o da una versione precedente di Anthos Service Mesh.

      Esegui migrazione

      Se hai eseguito la migrazione da Istio, il vecchio istio-ingressgateway non avrà un'etichetta di revisione.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
      

      Esegui l'upgrade

      Se hai eseguito l'upgrade da una versione precedente di Anthos Service Mesh, assicurati che OLD_REVISION corrisponda all'etichetta di revisione della versione precedente di istiod nel comando seguente.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
      
    4. Rimuovi la versione precedente della configurazione di IstioOperator.

      kubectl delete IstioOperator installed-state-OLD_REVISION -n istio-system
      

      L'output previsto è simile al seguente:

      istiooperator.install.istio.io "installed-state-OLD_REVISION" deleted

    Esegui il rollback

    Se hai riscontrato un problema durante il test dell'applicazione con la nuova versione di istiod, segui questi passaggi per ripristinare la versione precedente:

    1. Rietichetta lo spazio dei nomi per abilitare l'inserimento automatico con la versione precedente di istiod. Il comando da utilizzare varia a seconda che tu abbia utilizzato un'etichetta di revisione o istio-injection=enabled con la versione precedente.

      • Se hai utilizzato un'etichetta di revisione per l'inserimento automatico:

        kubectl label namespace NAMESPACE istio.io/rev=OLD_REVISION --overwrite
        
      • Se utilizzavi istio-injection=enabled:

        kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
        

      Output previsto:

      namespace/NAMESPACE labeled
    2. Conferma che l'etichetta della revisione nello spazio dei nomi corrisponda all'etichetta della revisione della versione precedente di istiod:

      kubectl get ns NAMESPACE --show-labels
      
    3. Riavvia i pod per attivare la reiniezione in modo che i proxy abbiano la versione precedente:

      kubectl rollout restart deployment -n NAMESPACE
      
    4. Rimuovi la nuova versione di istiod. Assicurati che il valore di REVISION nel seguente comando sia corretto.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION -n istio-system --ignore-not-found=true
      
    5. Rimuovi la nuova versione della configurazione IstioOperator.

      kubectl delete IstioOperator installed-state-REVISION -n istio-system
      

      L'output previsto è simile al seguente:

      istiooperator.install.istio.io "installed-state-REVISION" deleted
    6. Se non hai incluso il flag --disable_canonical_service, lo script abilitava il controller del servizio canonico. Ti consigliamo di lasciarlo abilitato, ma se devi disabilitarlo, consulta Attivazione e disattivazione del controller del servizio canonico.

    7. Se hai eseguito il deployment di gateway, assicurati di modificare l'etichetta di revisione nello spazio dei nomi o nel deployment in modo che corrisponda alla versione precedente di istiod. Segui la stessa procedura descritta nella sezione Upgrages in loco nella guida Installare ed eseguire l'upgrade dei gateway.