Eseguire l'upgrade di Cloud Service Mesh

Questa pagina spiega come:

  • Esegui asmcli per eseguire l'upgrade da Cloud Service Mesh a Cloud Service Mesh 1.19.10.

  • (Facoltativo) Esegui il deployment di un gateway in entrata.

  • Esegui un upgrade canary per eseguire la migrazione dei tuoi carichi di lavoro al nuovo control plane.

La versione di Cloud Service Mesh da cui puoi eseguire l'upgrade varia in base alla piattaforma.

GKE

Puoi eseguire l'upgrade direttamente a Cloud Service Mesh 1.19.10-asm.9 su Google Kubernetes Engine dalle seguenti versioni:

1.17+

On-premise

Puoi eseguire l'upgrade direttamente a Cloud Service Mesh 1.19.10-asm.9 su Google Distributed Cloud e Google Distributed Cloud dalle seguenti versioni:

1.17+

GKE su AWS

Puoi eseguire l'upgrade direttamente a Cloud Service Mesh 1.19.10-asm.9 su GKE su AWS dalle seguenti versioni:

1.17+

GKE su Azure

GKE su Azure supporta solo Cloud Service Mesh 1.16. Gli upgrade da versioni precedenti di Cloud Service Mesh non sono supportati.

Amazon EKS

Se hai installato Cloud Service Mesh 1.7 su EKS, dovrai installare Cloud Service Mesh 1.19 su un nuovo cluster. Gli upgrade da Cloud Service Mesh 1.7 a Cloud Service Mesh1.19 non sono supportati.

Microsoft AKS

Se hai installato Cloud Service Mesh 1.7 su AKS, dovrai installare Cloud Service Mesh 1.19 su un nuovo cluster. Gli upgrade da Cloud Service Mesh 1.7 a Cloud Service Mesh1.19 non sono supportati.

Prima di iniziare

Prima di iniziare, assicurati di:

Personalizzazioni del piano di controllo

Se hai personalizzato l'installazione precedente, devi eseguire le stesse personalizzazioni quando esegui l'upgrade a una nuova versione di Cloud 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 overlay. Specifica il file overlay utilizzando l'opzione --custom_overlay con il nome 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 un tempo di riposo. Durante l'upgrade, il traffico mTLS viene interrotto finché non viene eseguito il passaggio a tutti i workload per utilizzare il nuovo piano di controllo con la nuova CA.

Upgrade di Anthos Service Mesh

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

  1. Se stai eseguendo l'upgrade di un mesh multicluster su GKE che utilizza l'autorità di certificazione Cloud Service Mesh, esegui asmcli create-mesh per configurare il mesh multicluster in modo che attenda come attendibile l'identità di carico di lavoro del parco risorse per il bilanciamento del carico tra cluster senza tempi di riposo durante l'upgrade.

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

  3. Se vuoi, installa o esegui l'upgrade di un gateway di ingresso. Per impostazione predefinita, asmcli non installa istio-ingressgateway. Ti consigliamo di eseguire il deployment e gestire il piano di controllo e i gateway separatamente. Se hai bisogno del istio-ingressgateway predefinito installato con il piano di controllo in-cluster, includi l'argomento --option legacy-default-ingressgateway.

  4. Per completare la configurazione di Cloud Service Mesh, devi attivare l'iniezione automatica dei sidecar e eseguire il deployment o il redeployment dei carichi di lavoro.

Configura il mesh multi-cluster in modo che attenda l'identità del carico di lavoro del parco risorse

Se stai eseguendo l'upgrade di un mesh multi-cluster su GKE che utilizza l'autorità di certificazione Cloud Service Mesh come autorità di certificazione, devi eseguire asmcli create-mesh prima di eseguire l'upgrade di ciascun cluster. Questo comando configura la CA di Cloud Service Mesh in modo da utilizzare il pool di identità per i workload del parco risorse,FLEET_PROJECT_ID.svc.id.goog, come dominio attendibile dopo l'upgrade. Il comando asmcli create-mesh:

  • Registra tutti i cluster nello stesso parco risorse.
  • Configura il mesh in modo che attenda l'identità del workload del parco risorse.
  • Crea secret remoti.

Puoi specificare l'URI per ogni cluster o il percorso del file kubeconfig.

URI cluster

Nel comando seguente, sostituisci FLEET_PROJECT_ID con l'ID progetto del progetto host della flotta e l'URI del cluster con il nome del cluster, la zona o la regione e l'ID progetto per ogni cluster.

./asmcli create-mesh \
    FLEET_PROJECT_ID \
    PROJECT_ID_1/CLUSTER_LOCATION_1/CLUSTER_NAME_1 \
    PROJECT_ID_2/CLUSTER_LOCATION_2/CLUSTER_NAME_2 # \
    # Add a line for each cluster in the mesh

File kubeconfig

Nel comando seguente, sostituisci FLEET_PROJECT_ID con l'ID progetto del progetto host del parco risorse e PATH_TO_KUBECONFIG con il percorso di ciascun file kubeconfig.

./asmcli create-mesh \
    FLEET_PROJECT_ID \
    PATH_TO_KUBECONFIG_1 \
    PATH_TO_KUBECONFIG_2 # \
    # Add a line for each cluster in the mesh

Eseguire l'upgrade con le funzionalità predefinite e Mesh CA

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

GKE

Esegui il seguente comando per eseguire l'upgrade del piano di controllo con le funzionalità predefinite e l'autorità di certificazione Cloud Service Mesh. 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 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, i sample e i 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 qui.
  • --enable_all Consente allo script di:
    • Concedi le autorizzazioni IAM richieste.
    • Abilita le API Google richieste.
    • Imposta un'etichetta sul cluster che identifichi il mesh.
    • Registra il cluster nel parco risorse, se non è già registrato.
  • --ca mesh_ca Utilizza l'autorità di certificazione Cloud Service Mesh come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa un tempo di riposo. asmcliconfigura l'autorità di certificazione Cloud Service Mesh per utilizzare l'identità per i workload del parco risorse

Altri cluster GKE Enterprise

Esegui i seguenti comandi su altri cluster GKE Enterprise per eseguire l'upgrade del piano di controllo con le funzionalità predefinite e l'autorità di certificazione Cloud Service Mesh. Inserisci i valori nei segnaposto forniti.

  1. Imposta il contesto corrente sul cluster di utenti:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui asmcli install:

    ./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 del progetto host del parco risorse.
    • --kubeconfig Il percorso completo del file kubeconfig. La variabile di ambiente $PWD non funziona qui. Inoltre, le posizioni dei file kubeconfig relative che utilizzano un carattere `~` non funzioneranno.
    • --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, i sample e i 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 qui.
    • --platform multicloud Specifica che la piattaforma è diversa da Google Cloud, ad esempio on-premise o multi-cloud.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API Google richieste.
      • Imposta un'etichetta sul cluster che identifichi il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca mesh_ca Utilizza l'autorità di certificazione Cloud Service Mesh come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa tempi di inattività. asmcliconfigura la CA di Cloud Service Mesh per utilizzare l'identità per i workload della flotta

Eseguire l'upgrade delle funzionalità predefinite con il servizio CA

Questa sezione mostra come eseguire asmcli per eseguire l'upgrade di Cloud Service Mesh con le funzionalità supportate predefinite per la tua piattaforma e attivare Certificate Authority Service.

GKE

Esegui il seguente comando per eseguire l'upgrade del piano di controllo con le funzionalità predefinite e Certificate Authority Service. 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 gcp_cas \
  --ca_pool projects/PROJECT_NAME/locations/ca_region/caPools/CA_POOL
  • --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 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, i sample e i 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 qui.
  • --enable_all Consente allo script di:
    • Concedi le autorizzazioni IAM richieste.
    • Abilita le API Google richieste.
    • Imposta un'etichetta sul cluster che identifichi il mesh.
    • Registra il cluster nel parco risorse, se non è già registrato.
  • --ca gcp_cas Utilizza Certificate Authority Service come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa un tempo di riposo. asmcliconfigura Certificate Authority Service per utilizzare l'identità workload del parco
  • --ca_pool L'identificatore completo del pool di CA di Certificate Authority Service.

On-premise

Esegui i seguenti comandi su Google Distributed Cloud o su Google Distributed Cloud per eseguire l'upgrade del control plane con le funzionalità predefinite e Certificate Authority Service. Inserisci i valori nei segnaposto forniti.

  1. Imposta il contesto corrente sul cluster di utenti:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui asmcli install:

    ./asmcli install \
     --kubeconfig KUBECONFIG_FILE \
     --fleet_id FLEET_PROJECT_ID \
     --output_dir DIR_PATH \
     --enable_all \
     --ca gcp_cas \
     --platform multicloud \
     --ca_pool projects/PROJECT_NAME/locations/ca_region/caPools/CA_POOL
    
    • --fleet_id L'ID del progetto host del parco risorse.
    • --kubeconfig Il percorso completo del file kubeconfig. La variabile di ambiente $PWD non funziona qui. Inoltre, le posizioni dei file kubeconfig relative che utilizzano un carattere `~` non funzioneranno.
    • --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, i sample e i 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 qui.
    • --platform multicloud Specifica che la piattaforma è diversa da Google Cloud, ad esempio on-premise o multi-cloud.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API Google richieste.
      • Imposta un'etichetta sul cluster che identifichi il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca gcp_cas Utilizza Certificate Authority Service come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa un tempo di riposo. asmcliconfigura Certificate Authority Service per utilizzare l'identità workload del parco
    • --ca_pool L'identificatore completo del pool di CA di Certificate Authority Service.

Eseguire l'upgrade delle funzionalità predefinite con la CA Istio

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

GKE

Esegui il comando seguente per eseguire l'upgrade del piano di controllo con le funzionalità predefinite e la CA Istio. 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 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 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, i sample e i 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 qui.
  • --enable_all Consente allo script di:
    • Concedi le autorizzazioni IAM richieste.
    • Abilita le API Google richieste.
    • Imposta un'etichetta sul cluster che identifichi il mesh.
    • Registra il cluster nel parco risorse, se non è già registrato.
  • --ca citadel Utilizza la CA Istio. La modifica delle autorità di certificazione durante un upgrade causa tempi di inattività.

On-premise

Esegui i comandi seguenti su Google Distributed Cloud o su Google Distributed Cloud per eseguire l'upgrade del piano di controllo con le funzionalità predefinite e la CA Istio. Inserisci i valori nei segnaposto forniti.

  1. Imposta il contesto corrente sul cluster di utenti:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
    
    • --fleet_id L'ID del progetto host del parco risorse.
    • --kubeconfig Il percorso completo del file kubeconfig. La variabile di ambiente $PWD non funziona qui. Inoltre, le posizioni dei file kubeconfig relative che utilizzano un carattere `~` non funzioneranno.
    • --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, i sample e i 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 qui.
    • --platform multicloud Specifica che la piattaforma è diversa da Google Cloud, ad esempio on-premise o multi-cloud.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API Google richieste.
      • Imposta un'etichetta sul cluster che identifichi il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca citadel Utilizza la CA Istio come autorità di certificazione.
    • --ca_cert Il certificato intermedio
    • --ca_key La chiave del certificato intermedio
    • --root_cert Il certificato radice
    • --cert_chain La catena di certificati

AWS

Esegui i seguenti comandi su GKE su AWS per eseguire l'upgrade del control plane con le funzionalità predefinite e la CA Istio. Inserisci i valori nei segnaposto forniti. Puoi scegliere di attivare Ingress per la subnet pubblica o per la subnet privata.

Pubblico

  1. Imposta il contesto corrente sul cluster di utenti:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
    
    • --fleet_id L'ID del progetto host del parco risorse.
    • --kubeconfig Il percorso completo del file kubeconfig. La variabile di ambiente $PWD non funziona qui. Inoltre, le posizioni dei file kubeconfig relative che utilizzano un carattere `~` non funzioneranno.
    • --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, i sample e i 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 qui.
    • --platform multicloud Specifica che la piattaforma è diversa da Google Cloud, ad esempio on-premise o multi-cloud.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API Google richieste.
      • Imposta un'etichetta sul cluster che identifichi il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca citadel Utilizza la CA Istio come autorità di certificazione.
    • --ca_cert Il certificato intermedio
    • --ca_key La chiave del certificato intermedio
    • --root_cert Il certificato radice
    • --cert_chain La catena di certificati

Privato

  1. Imposta il contesto corrente sul cluster di utenti:

    kubectl config use-context CLUSTER_NAME
    
  2. Salva il seguente codice YAML in un file denominato istio-operator-internal-lb.yaml:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - enabled: true
          k8s:
            serviceAnnotations:
              service.beta.kubernetes.io/aws-load-balancer-internal: "true"
          name: istio-ingressgateway
    
  3. Esegui asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
      --custom_overlay istio-operator-internal-lb.yaml
    
    • --fleet_id L'ID del progetto host del parco risorse.
    • --kubeconfig Il percorso completo del file kubeconfig. La variabile di ambiente $PWD non funziona qui. Inoltre, le posizioni dei file kubeconfig relative che utilizzano un carattere `~` non funzioneranno.
    • --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, i sample e i 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 qui.
    • --platform multicloud Specifica che la piattaforma è diversa da Google Cloud, ad esempio on-premise o multi-cloud.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API Google richieste.
      • Imposta un'etichetta sul cluster che identifichi il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca citadel Utilizza la CA Istio come autorità di certificazione.
    • --ca_cert Il certificato intermedio
    • --ca_key La chiave del certificato intermedio
    • --root_cert Il certificato radice
    • --cert_chain La catena di certificati

Amazon EKS

Esegui i seguenti comandi su Amazon EKS per eseguire l'upgrade del control plane con le funzionalità predefinite e la CA Istio. Inserisci i valori nei segnaposto forniti.

  1. Imposta il contesto corrente sul cluster di utenti:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
    
    • --fleet_id L'ID del progetto host del parco risorse.
    • --kubeconfig Il percorso completo del file kubeconfig. La variabile di ambiente $PWD non funziona qui. Inoltre, le posizioni dei file kubeconfig relative che utilizzano un carattere `~` non funzioneranno.
    • --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, i sample e i 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 qui.
    • --platform multicloud Specifica che la piattaforma è diversa da Google Cloud, ad esempio on-premise o multi-cloud.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API Google richieste.
      • Imposta un'etichetta sul cluster che identifichi il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca citadel Utilizza la CA Istio come autorità di certificazione.
    • --ca_cert Il certificato intermedio
    • --ca_key La chiave del certificato intermedio
    • --root_cert Il certificato radice
    • --cert_chain La catena di certificati

Microsoft AKS

Esegui i seguenti comandi su Amazon EKS per eseguire l'upgrade del control plane con le funzionalità predefinite e la CA Istio. Inserisci i valori nei segnaposto forniti.

  1. Imposta il contesto corrente sul cluster di utenti:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui asmcli install:

    HUB_REGISTRATION_EXTRA_FLAGS=--has-private-issuer ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
    
    • --fleet_id L'ID del progetto host del parco risorse.
    • --kubeconfig Il percorso completo del file kubeconfig. La variabile di ambiente $PWD non funziona qui. Inoltre, le posizioni dei file kubeconfig relative che utilizzano un carattere `~` non funzioneranno.
    • --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, i sample e i 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 qui.
    • --platform multicloud Specifica che la piattaforma è diversa da Google Cloud, ad esempio on-premise o multi-cloud.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API Google richieste.
      • Imposta un'etichetta sul cluster che identifichi il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca citadel Utilizza la CA Istio come autorità di certificazione.
    • --ca_cert Il certificato intermedio
    • --ca_key La chiave del certificato intermedio
    • --root_cert Il certificato radice
    • --cert_chain La catena di certificati

Eseguire l'upgrade con funzionalità facoltative

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

GKE

Esegui il seguente comando per installare il piano di controllo con un'opzione facoltativa. Per aggiungere più file, specifica --custom_overlay e il nome del file, ad esempio: --custom_overlayoverlay_file1.yaml --custom_overlay overlay_file2.yaml --custom_overlay overlay_file3.yaml. 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 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, i sample e i 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 qui.
  • --enable_all Consente allo script di:
    • Concedi le autorizzazioni IAM richieste.
    • Abilita le API Google richieste.
    • Imposta un'etichetta sul cluster che identifichi il mesh.
    • Registra il cluster nel parco risorse, se non è già registrato.
  • --ca mesh_ca Utilizza l'autorità di certificazione Cloud Service Mesh come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa un tempo di riposo. asmcliconfigura l'autorità di certificazione Cloud Service Mesh per utilizzare l'identità per i workload del parco risorse
  • --custom_overlay Specifica il nome del file di overlay.

Al di fuori di Google Cloud

Esegui i seguenti comandi su Google Distributed Cloud, GKE su AWS, Amazon EKS o Microsoft AKS. Inserisci i valori nei segnaposto forniti.

  1. Imposta il contesto corrente sul cluster di utenti:

    kubectl config use-context CLUSTER_NAME
    
  2. Esegui asmcli install:

    ./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 del progetto host del parco risorse.
    • --kubeconfig Il percorso completo del file kubeconfig. La variabile di ambiente $PWD non funziona qui. Inoltre, le posizioni dei file kubeconfig relative che utilizzano un carattere `~` non funzioneranno.
    • --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, i sample e i 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 qui.
    • --platform multicloud Specifica che la piattaforma è diversa da Google Cloud, ad esempio on-premise o multi-cloud.
    • --enable_all Consente allo script di:
      • Concedi le autorizzazioni IAM richieste.
      • Abilita le API Google richieste.
      • Imposta un'etichetta sul cluster che identifichi il mesh.
      • Registra il cluster nel parco risorse, se non è già registrato.
    • --ca mesh_ca Utilizza l'autorità di certificazione Cloud Service Mesh come autorità di certificazione. La modifica delle autorità di certificazione durante un upgrade causa un tempo di riposo. asmcliconfigura l'autorità di certificazione Cloud Service Mesh per utilizzare l'identità per i workload del parco risorse
    • --custom_overlay Specifica il nome del file di overlay.

Eseguire l'upgrade dei gateway

Se hai implementato gateway, dovrai eseguire l'upgrade anche di questi. Per un upgrade semplice, segui la sezione Upgrade in situ della guida Installare e eseguire l'upgrade dei gateway.

Passare al nuovo control plane

  1. Recupera l'etichetta di revisione che si trova su 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-11910-9-67998f4b55-lrzpz           1/1     Running   0          68m   asm-11910-9
    istiod-asm-11910-9-67998f4b55-r76kr           1/1     Running   0          68m   asm-11910-9
    istiod-1187-26-1-5cd96f88f6-n7tj9    1/1     Running   0          27s   asm-11910-9
    istiod-1187-26-1-5cd96f88f6-wm68b    1/1     Running   0          27s   asm-11910-9
    1. Nell'output, nella colonna REV, prendi nota del valore dell'etichetta della revisione per la nuova versione. In questo esempio, il valore è asm-11910-9.

    2. Prendi nota anche del valore nell'etichetta della revisione per la vecchia versione istiod. Ti serve per eliminare la vecchia versione di istiod al termine del trasferimento dei carichi di lavoro alla nuova versione. Nell'output di esempio, il valore dell'etichetta di revisione per la versione precedente è asm-11910-9.

  2. Aggiungi l'etichetta di revisione a uno spazio dei nomi dell'applicazione e rimuovi l'etichetta istio-injection (se esistente). Nel comando seguente, sostituisci REVISION con il valore corrispondente alla nuova revisione di istiod.

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

    Se nell'output viene visualizzato "istio-injection not found", puoi ignorarlo. Ciò significa che lo spazio dei nomi non aveva precedentemente l'etichettaistio-injection. Poiché il comportamento di inserimento automatico è undefined quando uno spazio dei nomi ha sia l'etichetta istio-injection sia l'etichetta revision, tutti i comandi kubectl label nella documentazione di Cloud Service Mesh garantiscono esplicitamente che ne sia impostato solo uno.

  3. Riavvia i pod per attivare la re-iniezione.

    kubectl rollout restart deployment -n NAMESPACE
  4. Testa l'applicazione per verificare che i carichi di lavoro funzionino correttamente.

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

  6. Se ritieni che la tua applicazione funzioni come previsto, continua con i passaggi per la transizione alla nuova versione di istiod. Se si verifica un problema con l'applicazione, segui i passaggi per il rollback.

    Completare la transizione

    Se ritieni che la tua applicazione funzioni come previsto, rimuovi il vecchio piano di controllo per completare la transizione alla nuova versione.

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

    2. Configura il webhook di convalida in modo da utilizzare il nuovo piano di controllo:

      kubectl apply -f asm/istio/istiod-service.yaml
      
    3. Sposta il tag predefinito:

      <OUTPUT_DIR>/istioctl tag set default --revision <NEW REVISION NAME>
      
    4. Elimina la vecchia versione di istiod. Il comando che utilizzi dipende se esegui la migrazione da Istio o l'upgrade da una versione precedente di Cloud Service Mesh.

      Esegui la migrazione

      Se hai eseguito la migrazione da Istio, il vecchio istio-ingressgateway non ha un'etichetta di revisione:

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

      Esegui l'upgrade

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

        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
        
      2. Elimina la risorsa validatingwebhookconfiguration per la vecchia revisione:

        kubectl delete validatingwebhookconfiguration istio-validator-OLD_REVISION-istio-system -n istio-system --ignore-not-found
        
    5. Rimuovi la versione precedente della configurazione 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 eseguire il rollback alla versione precedente:

    1. Rinomina lo spazio dei nomi per attivare l'iniezione automatica con la versione precedente di istiod. Il comando che utilizzi dipende dal fatto che tu abbia usato un'etichetta di revisione o istio-injection=enabled con la versione precedente.

      • Se hai utilizzato un'etichetta di revisione per l'iniezione automatica:

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

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

      Risultato previsto:

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

      kubectl get ns NAMESPACE --show-labels
      
    3. Riavvia i pod per attivare la re-iniezione 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, asmcli ha attivato il controller del servizio di canonicalizzazione. Ti consigliamo di lasciarlo abilitato, ma se devi disattivarlo, consulta Abilitazione e disattivazione del controller del servizio di canonicalizzazione.

    7. Se hai implementato 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 relativa agli upgrade in situ della guida Installare e eseguire l'upgrade dei gateway.

Deployment e nuovo deployment dei carichi di lavoro

L'installazione (o l'upgrade) non è completa finché non attivi l'iniezione automatica del proxy sidecar (iniezione automatica). Le migrazioni da Istio OSS e gli upgrade seguono la procedura di upgrade basata sulle revisioni (chiamata "upgrade canary" nella documentazione di Istio). Con un upgrade basato sulle revisioni, la nuova versione del piano di controllo viene installata insieme a quella esistente. Poi sposti alcuni dei tuoi workload nella nuova versione, il che ti consente di monitorare l'effetto dell'upgrade con una piccola percentuale di workload prima di eseguire la migrazione di tutto il traffico alla nuova versione.

Lo script imposta un'etichetta di revisione nel formato istio.io/rev=asm-11910-9 su istiod. Per attivare l'iniezione automatica, aggiungi un'etichetta di revisione corrispondente ai tuoi spazi dei nomi. L'etichetta di revisione viene utilizzata dall'webhook di iniezione di sidecar per associare i sidecar iniettati a una determinata revisioneistiod. Dopo aver aggiunto l'etichetta, riavvia i pod nello spazio dei nomi per eseguire l'iniezione dei sidecar.

  1. Recupera l'etichetta di revisione su istiod e istio-ingressgateway.

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

    L'output del comando è simile al seguente.

    NAME                                                READY   STATUS    RESTARTS   AGE   REV
    istio-ingressgateway-65d884685d-6hrdk               1/1     Running   0          67m
    istio-ingressgateway-65d884685d-94wgz               1/1     Running   0          67m
    istio-ingressgateway-asm-182-2-8b5fc8767-gk6hb      1/1     Running   0          5s    asm-11910-9
    istio-ingressgateway-asm-182-2-8b5fc8767-hn4w2      1/1     Running   0          20s   asm-11910-9
    istiod-asm-11910-9-67998f4b55-lrzpz          1/1     Running   0          68m   asm-11910-9
    istiod-asm-11910-9-67998f4b55-r76kr          1/1     Running   0          68m   asm-11910-9
    istiod-asm-1187-26-5cd96f88f6-n7tj9 1/1     Running   0          27s   asm-11910-9
    istiod-asm-1187-26-5cd96f88f6-wm68b 1/1     Running   0          27s   asm-11910-9
    1. Nell'output, nella colonna REV, prendi nota del valore dell'etichetta della revisione per la nuova versione. In questo esempio, il valore è asm-11910-9.

    2. Prendi nota anche del valore nell'etichetta della revisione per la vecchia versione istiod. Ti serve per eliminare la vecchia versione di istiod al termine del trasferimento dei carichi di lavoro alla nuova versione. Nell'output di esempio, il valore dell'etichetta di revisione per la versione precedente è asm-11910-9.

  2. Passa istio-ingressgateway alla nuova revisione. Nel seguente comando, sostituisci REVISION con il valore corrispondente all'etichetta della revisione della nuova versione.

    kubectl patch service -n istio-system istio-ingressgateway --type='json' -p='[{"op": "replace", "path": "/spec/selector/service.istio.io~1canonical-revision", "value": "REVISION"}]'

    Risultato previsto: service/istio-ingressgateway patched

  3. Aggiungi l'etichetta di revisione a uno spazio dei nomi e rimuovi l'etichetta istio-injection (se esistente). Nel comando seguente, sostituisci REVISION con il valore corrispondente alla nuova revisione di istiod.

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

    Se nell'output viene visualizzato "istio-injection not found", puoi ignorarlo. Ciò significa che lo spazio dei nomi non aveva precedentemente l'etichettaistio-injection. Poiché il comportamento di inserimento automatico è undefined quando uno spazio dei nomi ha sia l'etichetta istio-injection sia l'etichetta revision, tutti i comandi kubectl label nella documentazione di Cloud Service Mesh garantiscono esplicitamente che ne sia impostato solo uno.

  4. Riavvia i pod per attivare la re-iniezione.

    kubectl rollout restart deployment -n NAMESPACE
  5. Testa l'applicazione per verificare che i carichi di lavoro funzionino correttamente.

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

  7. Se ritieni che la tua applicazione funzioni come previsto, continua con i passaggi per la transizione alla nuova versione di istiod. Se si verifica un problema con l'applicazione, segui i passaggi per il rollback.

    Completare la transizione

    Se ritieni che la tua applicazione funzioni come previsto, rimuovi il vecchio piano di controllo per completare la transizione alla nuova versione.

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

    2. Configura il webhook di convalida in modo che utilizzi il nuovo piano di controllo.

      kubectl apply -f asm/istio/istiod-service.yaml
      
    3. Sposta il tag predefinito.

      <OUTPUT_DIR>/istioctl tag set default --revision <NEW REVISION NAME> --overwrite
      
    4. Elimina il vecchio istio-ingressgatewaydeployment. Il comando eseguito dipende dal fatto che esegui la migrazione da Istio o l'upgrade da una versione precedente di Cloud Service Mesh:

      Esegui la migrazione

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

      kubectl delete deploy/istio-ingressgateway -n istio-system
      

      Esegui l'upgrade

      Se hai eseguito l'upgrade da una versione precedente di Cloud Service Mesh, nel comando seguente, sostituisci OLD_REVISION con l'etichetta di revisione per la versione precedente del istio-ingressgateway.

      kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=OLD_REVISION -n istio-system --ignore-not-found=true
      
    5. Elimina la vecchia versione di istiod. Il comando che utilizzi dipende se esegui la migrazione da Istio o l'upgrade da una versione precedente di Cloud Service Mesh.

      Esegui la migrazione

      Se hai eseguito la migrazione da Istio, il vecchio istio-ingressgateway non ha 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 Cloud Service Mesh, nel comando seguente assicurati che OLD_REVISION corrisponda all'etichetta di revisione della versione precedente di istiod.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
      
    6. Rimuovi la versione precedente della configurazione 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 eseguire il rollback alla versione precedente:

    1. Rinomina lo spazio dei nomi per attivare l'iniezione automatica con la versione precedente di istiod. Il comando che utilizzi dipende dal fatto che tu abbia usato un'etichetta di revisione o istio-injection=enabled con la versione precedente.

      • Se hai utilizzato un'etichetta di revisione per l'iniezione automatica:

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

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

      Risultato previsto:

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

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

      kubectl rollout restart deployment -n NAMESPACE
      
    4. Rimuovi il nuovo deployment istio-ingressgateway. Assicurati che il valore di REVISION nel seguente comando sia corretto.

      kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=REVISION -n istio-system --ignore-not-found=true
      
    5. 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
      
    6. 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
    7. Se non hai incluso il flag --disable_canonical_service, lo script ha attivato il controller del servizio di canonicalizzazione. Ti consigliamo di lasciarlo abilitato, ma se devi disattivarlo, consulta Abilitazione e disattivazione del controller del servizio di canonicalizzazione.