Esegui il provisioning di Cloud Service Mesh gestito con asmcli

Panoramica

Cloud Service Mesh gestito con asmcli è un piano di controllo e un piano dati gestiti che puoi semplicemente configurare. Google ne gestisce l'affidabilità, gli upgrade, la scalabilità e la sicurezza in modo compatibile con le versioni precedenti. Questo spiega come configurare o migrare le applicazioni a Cloud Service Mesh gestito in una configurazione a cluster singolo o multi-cluster con asmcli.

Per scoprire le funzionalità supportate e le limitazioni della versione gestita di Cloud Service Mesh, consulta Funzionalità supportate da Managed Cloud Service Mesh.

Prerequisiti

Come punto di partenza, questa guida presuppone che tu abbia:

Requisiti

  • Uno o più cluster con una versione supportata di GKE, in una delle regioni supportate.
  • Assicurati che il cluster abbia capacità sufficiente per i componenti richiesti le installazioni Cloud Service Mesh nel cluster.
    • Il deployment mdp-controller nello spazio dei nomi kube-system richiede la CPU: 50 m, memoria: 128 Mi.
    • Il daemonset istio-cni-node nello spazio dei nomi kube-system richiede una CPU: 100m, memoria: 100 Mi su ciascun nodo.
  • Assicurati che il criterio dell'organizzazione constraints/compute.disableInternetNetworkEndpointGroup sia disattivato. Se il criterio viene attivato, ServiceEntry potrebbe non funzionare.
  • Assicurati che il computer client da cui esegui il provisioning di Cloud Service Mesh gestito abbia connettività di rete al server API.
  • I cluster devono essere registrati a un parco risorse. Questo passaggio può essere fatto separatamente prima del provisioning o nell'ambito della eseguire il provisioning passando i flag --enable-registration e --fleet-id.
  • Nel progetto deve essere abilitata la funzionalità del parco risorse Service Mesh. Puoi attivarla nell'ambito della definizione passando --enable-gcp-components o eseguendo il seguente comando:

    gcloud container fleet mesh enable --project=FLEET_PROJECT_ID
    

    dove FLEET_PROJECT_ID è l'ID progetto del progetto host del parco risorse.

  • GKE Autopilot è supportato solo con la versione GKE 1.21.3+.

  • Cloud Service Mesh può utilizzare più cluster GKE in un ambiente con una rete e un progetto oppure in un ambiente con una rete e più progetti.

    • Se unisci cluster che non si trovano nello stesso progetto, questi devono essere registrati con la stessa progetto host del parco risorse, e i cluster devono trovarsi in un VPC condiviso configurazione sulla stessa rete.
    • Per un ambiente multi-cluster con un solo progetto, il progetto del parco risorse può essere uguale al progetto del cluster. Per ulteriori informazioni sui parchi risorse, vedi Panoramica dei parchi risorse.
    • Per un ambiente con più progetti, ti consigliamo di ospitare il parco risorse in un un progetto separato dai progetti del cluster. Se la tua organizzazione criteri e configurazione esistente lo consentono, ti consigliamo di utilizzare il progetto VPC condiviso come progetto host del parco risorse. Per ulteriori informazioni, consulta Configurare i cluster con VPC condiviso.
    • Se la tua organizzazione utilizza Controlli di servizio VPC e esegui il provisioning di Cloud Service Mesh sui cluster GKE con una release maggiore o uguale a 1.22.1-gke.10, potresti dover eseguire ulteriori passaggi di configurazione:

Ruoli richiesti per installare Cloud Service Mesh

La tabella seguente descrive i ruoli necessari per installare i ruoli Cloud Service Mesh.

Nome del ruolo ID ruolo Concedere l'accesso alla posizione Descrizione
Amministratore GKE Hub roles/gkehub.admin Progetto parco risorse Accesso completo a GKE Hub e alle risorse correlate.
Amministratore Service Usage roles/serviceusage.serviceUsageAdmin Progetto parco risorse Può abilitare, disabilitare e analizzare gli stati dei servizi, analizzare le operazioni e utilizzare la quota e la fatturazione per un progetto consumer. (Nota 1)
CA Service Admin Beta roles/privateca.admin Progetto parco risorse Accesso completo a tutte le risorse del servizio CA. (Nota 2)

Limitazioni

Ti consigliamo di consultare l'elenco delle limitazioni e delle funzionalità supportate da Cloud Service Mesh. In particolare, tieni presente quanto segue:

  • L'API IstioOperator non è supportata perché il suo scopo principale è controllare nel cluster.

  • Per i cluster GKE Autopilot, la configurazione tra progetti è supportato con GKE 1.23 o versioni successive.

  • Per i cluster GKE Autopilot, per adattarsi Limite di risorse di GKE Autopilot, le richieste e i limiti di risorse proxy predefiniti sono impostati su 500 m di CPU e 512 Mb la memoria. Puoi sostituire i valori predefiniti utilizzando l'iniezione personalizzata.

  • Durante il processo di provisioning per un piano di controllo gestito, i CRD di Istio di cui è stato eseguito il provisioning nel cluster specificato. Se sono presenti CRD Istio nella verranno sovrascritti nel tuo cluster

  • Istio CNI e Cloud Service Mesh non sono compatibili con la sandbox GKE. Pertanto, Cloud Service Mesh gestito con l'implementazione TRAFFIC_DIRECTOR non supporta i cluster con la sandbox GKE abilitata.

  • Lo strumento asmcli deve avere accesso all'endpoint Google Kubernetes Engine (GKE). Puoi configurare l'accesso tramite una "jump" server, ad esempio un VM di Compute Engine all'interno del Virtual Private Cloud (VPC) che fornisce l'accesso.

Prima di iniziare

Configura gcloud

Completa i seguenti passaggi anche se utilizzi Cloud Shell.

  1. Esegui l'autenticazione con Google Cloud CLI:

    gcloud auth login --project PROJECT_ID
    

    dove PROJECT_ID è l'identificatore univoco del progetto del cluster. Esegui questo comando per recuperare PROJECT_ID:

       gcloud projects list --filter="<PROJECT ID>" --format="value(PROJECT_NUMBER)"
       ```
    
  2. Aggiorna i componenti:

    gcloud components update
    
  3. Configura kubectl in modo che punti al cluster.

    gcloud container clusters get-credentials CLUSTER_NAME \
         --zone CLUSTER_LOCATION \
         --project PROJECT_ID
    

Scarica lo strumento di installazione

  1. Scarica la versione più recente dello strumento nella directory di lavoro corrente:

    curl https://storage.googleapis.com/csm-artifacts/asm/asmcli > asmcli
    
  2. Rendi eseguibile lo strumento:

    chmod +x asmcli
    

Configura ogni cluster

Utilizza i seguenti passaggi per configurare Cloud Service Mesh gestito per ciascun cluster in della tua rete mesh.

Applica il piano di controllo gestito

Prima di applicare il piano di controllo gestito, devi selezionare un canale di rilascio. Il canale Cloud Service Mesh è determinato dal canale del cluster GKE all'indirizzo per eseguire il provisioning di Cloud Service Mesh gestito. Tieni presente che più canali nello stesso cluster contemporaneamente non è supportata.

Esegui lo strumento di installazione per ciascun cluster che utilizzerà Cloud Service Mesh gestito. Ti consigliamo di includere entrambe le seguenti opzioni:

  • --enable-registration --fleet_id FLEET_PROJECT_ID Questi due flag registrano il cluster in un parco risorse, dove FLEET_ID è l'ID progetto del progetto host del parco risorse. Se utilizzi un singolo progetto, FLEET_PROJECT_ID è uguale a PROJECT_ID, il progetto di destinazione del parco risorse e il progetto del cluster sono uguali. In più complessi ad esempio per più progetti, è consigliabile utilizzare un host del parco risorse separato progetto.

  • --enable-all. Questo flag abilita sia i componenti obbligatori sia la registrazione.

Lo strumento asmcli configura il piano di controllo gestito direttamente utilizzando gli strumenti e la logica all'interno dello strumento CLI. Segui le istruzioni riportate di seguito a seconda la tua CA preferita.

Autorità di certificazione

Seleziona un'autorità di certificazione da utilizzare per la rete mesh.

Mesh CA

Esegui questo comando per installare il piano di controllo con funzionalità predefinite e Mesh CA. Inserisci i valori negli appositi segnaposto.

  ./asmcli install \
      -p PROJECT_ID \
      -l LOCATION \
      -n CLUSTER_NAME \
      --fleet_id FLEET_PROJECT_ID \
      --managed \
      --verbose \
      --output_dir DIR_PATH \
      --enable-all

Servizio CA

  1. Segui i passaggi descritti in Configurare Certificate Authority Service.
  2. Esegui il seguente comando per installare il piano di controllo con le funzionalità predefinite e il servizio Certificate Authority. Inserisci i valori negli appositi segnaposto.
  ./asmcli install \
      -p PROJECT_ID \
      -l LOCATION \
      -n CLUSTER_NAME \
      --fleet_id FLEET_PROJECT_ID \
      --managed \
      --verbose \
      --output_dir DIR_PATH \
      --enable-all \
      --ca gcp_cas \
      --ca_pool pool_name

Lo strumento scarica tutti i file per la configurazione del piano di controllo gestito al --output_dir specificato, installando lo strumento istioctl e diverse applicazioni. I passaggi di questa guida presuppongono che tu esegua istioctl dalla --output_dir posizione specificata durante l'esecuzione di asmcli install, con istioctl presente nella sottodirectory <Istio release dir>/bin.

Se esegui di nuovo asmcli sullo stesso cluster, la configurazione del piano di controllo esistente viene sovrascritta. Assicurati di specificare le stesse opzioni e se vuoi la stessa configurazione.

Verifica che sia stato eseguito il provisioning del piano di controllo

Dopo qualche minuto, verifica che lo stato del piano di controllo sia ACTIVE:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

L'output è simile al seguente:

membershipStates:
  projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
    servicemesh:
      controlPlaneManagement:
        details:
        - code: REVISION_READY
          details: 'Ready: asm-managed'
        state: ACTIVE
      ...
    state:
      code: OK
      description: 'Revision(s) ready for use: asm-managed.'

Se lo stato non raggiunge ACTIVE in pochi minuti, consulta Controllare lo stato del control plane gestito per ulteriori informazioni su possibili errori.

Upgrade zero-touch

Una volta installato il piano di controllo gestito, Google ne eseguirà automaticamente l'upgrade quando saranno disponibili nuove release o patch.

Piano dati gestito

Se utilizzi Cloud Service Mesh gestito, Google gestisce completamente gli upgrade dei tuoi proxy a meno che non lo disattivi.

Con il piano di dati gestito, i proxy sidecar e i gateway iniettati vengono aggiornati automaticamente in combinazione con il piano di controllo gestito riavviando i carichi di lavoro per iniettare nuovamente nuove versioni del proxy. Questa operazione normalmente vengono completati 1-2 settimane dopo l'upgrade del piano di controllo gestito.

Se disabilitata, la gestione dei proxy è guidata dal ciclo di vita naturale dei pod in nel cluster e deve essere attivato manualmente dall'utente per controllare l'aggiornamento di conversione.

Il piano di dati gestito esegue l'upgrade dei proxy espellendo i pod che eseguono versioni precedenti del proxy. L'eliminazione avviene gradualmente, nel rispetto delle il budget per l'interruzione dei pod e il controllo della frequenza di modifica.

Il piano dati gestito non gestisce quanto segue:

  • Pod non inseriti
  • Pod inseriti manualmente
  • Job
  • StatefulSet
  • DaemonSet

Se hai eseguito il provisioning di Cloud Service Mesh gestito su un cluster precedente, puoi attivare la gestione del piano dati per l'intero cluster:

kubectl annotate --overwrite controlplanerevision -n istio-system \
REVISION_LABEL \
mesh.cloud.google.com/proxy='{"managed":"true"}'

In alternativa, puoi attivare il piano di dati gestito in modo selettivo per una revisione, uno spazio dei nomi o un pod del piano di controllo specifico annotandolo con la stessa annotazione. Se controlli i singoli componenti in modo selettivo, l'ordine di precedenza è revisione del piano di controllo, spazio dei nomi e pod.

Potrebbero essere necessari fino a dieci minuti prima che il servizio sia pronto per gestire dei proxy nel cluster. Esegui il seguente comando per controllare lo stato:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

Risultato previsto

membershipStates:
  projects/PROJECT_NUMBER/locations/global/memberships/CLUSTER_NAME:
    servicemesh:
      dataPlaneManagement:
        details:
        - code: OK
          details: Service is running.
        state: ACTIVE
    state:
      code: OK
      description: 'Revision(s) ready for use: asm-managed-rapid.'

Se il servizio non è pronto entro dieci minuti, consulta Stato del piano di dati gestito per conoscere i passaggi successivi.

(Facoltativo) Disabilita il piano dati gestito

Se esegui il provisioning di Cloud Service Mesh gestito su un nuovo cluster, puoi disattivare completamente il piano dati gestito o per singoli namespace o pod. Il piano di dati gestito continuerà a essere disattivato per i cluster esistenti in cui è stato disattivato per impostazione predefinita o manualmente.

Per disattivare il piano dati gestito a livello di cluster e tornare alla gestione autonoma dei proxy sidecar, modifica l'annotazione:

kubectl annotate --overwrite controlplanerevision -n istio-system \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Per disabilitare il piano dati gestito per uno spazio dei nomi:

kubectl annotate --overwrite namespace NAMESPACE \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Per disabilitare il piano dati gestito per un pod:

kubectl annotate --overwrite pod POD_NAME \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Attiva le notifiche di manutenzione

Puoi richiedere di ricevere una notifica relativa alla manutenzione imminente del piano di dati gestito fino a una settimana prima della pianificazione della manutenzione. Le notifiche relative alla manutenzione non vengono inviate per impostazione predefinita. Devi inoltre Configura un periodo di manutenzione di GKE prima di poter ricevere le notifiche. Quando questa impostazione è attiva, le notifiche vengono inviate al almeno due giorni prima dell'operazione di upgrade.

Per attivare le notifiche di manutenzione del piano dati gestito:

  1. Vai alla pagina Comunicazione.

    Vai alla pagina Comunicazione

  2. Nella riga Upgrade di Cloud Service Mesh, nella colonna Email, seleziona il pulsante di opzione per attivare le notifiche di manutenzione ON.

Ogni utente che vuole ricevere notifiche deve attivarle separatamente. Se vuoi per impostare un filtro email per queste notifiche, l'oggetto è:

Upcoming upgrade for your Cloud Service Mesh cluster "CLUSTER_LOCATION/CLUSTER_NAME".

L'esempio seguente mostra una tipica manutenzione del piano dati gestito notifica:

Oggetto: Aggiornamento imminente per il cluster Cloud Service Mesh "<location/cluster-name>"

Gentile utente di Cloud Service Mesh,

L'upgrade dei componenti di Cloud Service Mesh nel tuo cluster ${instance_id} (https://console.cloud.google.com/kubernetes/clusters/details/${instance_id}/details?project=${project_id}) è pianificato per l'upgrade il giorno ${scheduled_date_human_Leggi} alle ore ${scheduled_time_human_ read}.

Per informazioni sul nuovo aggiornamento, consulta le note di rilascio (https://cloud.google.com/service-mesh/docs/release-notes).

Se questa manutenzione verrà annullata, riceverai un'altra email.

Cordiali saluti,

Il team di Cloud Service Mesh

(c) 2023 Google LLC 1600 Amphitheater Parkway, Mountain View, CA 94043, USA Ti abbiamo inviato questa comunicazione per informarti di importanti cambiamenti che riguardano Google Cloud o il tuo account. Puoi disattivare le notifiche relative al periodo di manutenzione modificando le preferenze utente: https://console.cloud.google.com/user-preferences/communication?project=${project_id}

Configura il rilevamento degli endpoint (solo per le installazioni multi-cluster)

Se il mesh ha un solo cluster, salta questi passaggi per l'utilizzo di più cluster e procedi con Esegui il deployment delle applicazioni o Eseguire la migrazione delle applicazioni.

Prima di continuare, assicurati che Cloud Service Mesh sia configurato su ogni cluster.

Cluster pubblici

Configurare il rilevamento degli endpoint tra i cluster pubblici

Se utilizzi cluster pubblici (cluster non privati), puoi: Configura il rilevamento degli endpoint tra cluster pubblici o più semplicemente Abilita il rilevamento degli endpoint tra cluster pubblici.

Cluster privati

Configura il rilevamento degli endpoint tra cluster privati

Quando utilizzi i cluster privati GKE, devi configurare endpoint del piano di controllo del cluster in modo che sia l'endpoint pubblico e non privato. Fai riferimento a Configurare il rilevamento degli endpoint tra cluster privati.

Per un'applicazione di esempio con due cluster, vedi Esempio di servizio HelloWorld.

Esegue il deployment delle applicazioni

Abilita lo spazio dei nomi per l'inserimento. I passaggi dipendono dall'implementazione del piano di controllo.

Gestito (TD)

  1. Applica l'etichetta di inserimento predefinita allo spazio dei nomi:
kubectl label namespace NAMESPACE \
    istio.io/rev- istio-injection=enabled --overwrite

Gestito (Istiod)

Consigliato: esegui questo comando per applicare l'inserimento predefinito etichetta allo spazio dei nomi:

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

Se sei già un utente con il piano di controllo Istiod gestito: consigliamo di utilizzare l'iniezione predefinita, ma è supportata anche l'iniezione basata su revisione. Segui queste istruzioni:

  1. Esegui il comando seguente per individuare i canali di rilascio disponibili:

    kubectl -n istio-system get controlplanerevision
    

    L'output è simile al seguente:

    NAME                AGE
    asm-managed-rapid   6d7h
    

    NOTA: se nell'elenco precedente sono presenti due revisioni del piano di controllo, rimuovine una. La presenza di più canali del piano di controllo nel cluster non è supportata.

    Nell'output, il valore nella colonna NAME è l'etichetta di revisione corrispondente al canale di rilascio disponibile per la versione di Cloud Service Mesh.

  2. Applica l'etichetta di revisione allo spazio dei nomi:

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

A questo punto, hai configurato correttamente Cloud Service Mesh gestito. Se carichi di lavoro esistenti in spazi dei nomi etichettati, quindi riavviali proxy inseriti.

Se esegui il deployment di un'applicazione in una configurazione multi-cluster, replica la configurazione di Kubernetes e del piano di controllo in tutti i cluster, a meno che prevedi di limitare quella particolare configurazione a un sottoinsieme di cluster. La applicata a un determinato cluster sia la fonte di riferimento in un cluster Kubernetes.

Personalizza l'iniezione (facoltativo)

Puoi ignorare i valori predefiniti e personalizzare le impostazioni di inserimento, ma causare errori di configurazione imprevisti e conseguenti problemi con il file collaterale containerizzati. Prima di personalizzare l'inserimento, leggi le informazioni dopo il per note su impostazioni e consigli specifici.

La configurazione per pod è disponibile per eseguire l'override di queste opzioni sui singoli pod. Aggiungi un contenitore istio-proxy al pod. Il file collaterale l'inserimento tratterà qualsiasi configurazione qui definita come un override del il modello di inserimento predefinito.

Ad esempio, la seguente configurazione personalizza una serie di impostazioni, tra cui la riduzione delle richieste di CPU, l'aggiunta di un montaggio del volume e l'aggiunta di un hook preStop:

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
  - name: hello
    image: alpine
  - name: istio-proxy
    image: auto
    resources:
      requests:
        cpu: "200m"
        memory: "256Mi"
      limits:
        cpu: "200m"
        memory: "256Mi"
    volumeMounts:
    - mountPath: /etc/certs
      name: certs
    lifecycle:
      preStop:
        exec:
          command: ["sleep", "10"]
  volumes:
  - name: certs
    secret:
      secretName: istio-certs

In generale, è possibile impostare qualsiasi campo di un pod. Tuttavia, è necessario prestare attenzione per alcuni campi:

  • Kubernetes richiede che il campo image venga impostato prima dell'esecuzione dell'iniezione. Sebbene sia possibile impostare un'immagine specifica per sostituire quella predefinita, consigliamo di impostare image su auto, in modo che l'iniettore sidecar selezioni automaticamente l'immagine da utilizzare.
  • Alcuni campi di containers dipendono dalle impostazioni correlate. Ad esempio, deve essere inferiore o uguale al limite della CPU. Se entrambi i campi non sono corretti configurato, il pod potrebbe non avviarsi.
  • Kubernetes ti consente di impostare sia requests che limits per le risorse nel tuo spec pod. GKE Autopilot prende in considerazione solo requests. Per ulteriori informazioni, consulta Impostare i limiti di risorse in Autopilot.

Inoltre, alcuni campi sono configurabili tramite annotazioni nel pod, anche se è consigliabile utilizzare l'approccio sopra indicato per personalizzare le impostazioni. Presta particolare attenzione alle seguenti annotazioni:

  • Per GKE Standard, se è impostato sidecar.istio.io/proxyCPU, imposta assicurati di impostare esplicitamente sidecar.istio.io/proxyCPULimit. In caso contrario, il limite della CPU del sidecar verrà impostato come illimitato.
  • Per GKE Standard, se è impostato sidecar.istio.io/proxyMemory, assicurati di impostare esplicitamente sidecar.istio.io/proxyMemoryLimit. In caso contrario, il limite di memoria del sidecar verrà impostato come illimitato.
  • Per GKE Autopilot, la configurazione delle risorse requests e limits con le annotazioni potrebbe comportare un overprovisioning delle risorse. Utilizza l'approccio basato sui modelli di immagine da evitare. Consulta gli esempi di modifica delle risorse in Autopilot.

Ad esempio, consulta l'annotazione delle risorse riportata di seguito:

spec:
  template:
    metadata:
      annotations:
        sidecar.istio.io/proxyCPU: "200m"
        sidecar.istio.io/proxyCPULimit: "200m"
        sidecar.istio.io/proxyMemory: "256Mi"
        sidecar.istio.io/proxyMemoryLimit: "256Mi"

Verifica le metriche del piano di controllo

Puoi visualizzare la versione del piano di controllo e del piano di dati in Metrics Explorer.

Per verificare che la configurazione funzioni come previsto:

  1. Nella console Google Cloud, visualizza le metriche del piano di controllo:

    Vai a Esplora metriche

  2. Scegli l'area di lavoro e aggiungi una query personalizzata utilizzando i seguenti parametri:

    • Tipo di risorsa: container Kubernetes
    • Metrica: Client proxy
    • Filtro: container_name="cr-REVISION_LABEL"
    • Raggruppa per: etichetta revision ed etichetta proxy_version
    • Aggregatore: somma
    • Periodo: 1 minuto

    Quando esegui Cloud Service Mesh con un piano di controllo gestito da Google e in-cluster, puoi distinguere le metriche dal nome del container. Ad esempio, le metriche gestite hanno container_name="cr-asm-managed", mentre quelle non gestite hanno container_name="discovery". Per visualizzare le metriche di entrambi, rimuovi il filtro su container_name="cr-asm-managed".

  3. Verifica la versione del piano di controllo e la versione del proxy controllando i seguenti campi in Metrics Explorer:

    • Il campo revision indica la versione del piano di controllo.
    • Il campo proxy_version indica proxy_version.
    • Il campo value indica il numero di proxy connessi.

    Per la mappatura del canale attuale alla versione di Cloud Service Mesh, consulta Versioni di Cloud Service Mesh per canale.

Esegui la migrazione delle applicazioni a Cloud Service Mesh gestito

Prepararsi per la migrazione

Per prepararti alla migrazione delle applicazioni da Cloud Service Mesh nel cluster agli ambienti gestiti Cloud Service Mesh, segui questi passaggi:

  1. Esegui lo strumento come indicato nella sezione Applicare il piano di controllo gestito da Google.

  2. (Facoltativo) Se vuoi utilizzare il piano di dati gestito da Google, attiva la gestione del piano di dati:

      kubectl annotate --overwrite controlplanerevision REVISION_TAG \
      mesh.cloud.google.com/proxy='{"managed":"true"}'
    

Esegui la migrazione delle applicazioni

Per eseguire la migrazione delle applicazioni da Cloud Service Mesh nel cluster a Cloud Service Mesh gestito: segui questi passaggi:

  1. Sostituisci l'etichetta dello spazio dei nomi corrente. I passaggi dipendono dall'implementazione del piano di controllo.

Gestito (TD)

  1. Applica l'etichetta di inserimento predefinita allo spazio dei nomi:
kubectl label namespace NAMESPACE \
    istio.io/rev- istio-injection=enabled --overwrite

Gestito (Istiod)

Consigliato: esegui questo comando per applicare l'inserimento predefinito etichetta allo spazio dei nomi:

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

Se sei già un utente con il piano di controllo Istiod gestito: consigliamo di utilizzare l'iniezione predefinita, ma è supportata anche l'iniezione basata su revisione. Segui queste istruzioni:

  1. Esegui il comando seguente per individuare i canali di rilascio disponibili:

    kubectl -n istio-system get controlplanerevision
    

    L'output è simile al seguente:

    NAME                AGE
    asm-managed-rapid   6d7h
    

    NOTA: se nell'elenco precedente sono presenti due revisioni del piano di controllo, rimuovine una. La presenza di più canali del piano di controllo nel cluster non è supportata.

    Nell'output, il valore sotto la colonna NAME è l'etichetta di revisione che corrisponde al canale di rilascio disponibile per la versione di Cloud Service Mesh.

  2. Applica l'etichetta di revisione allo spazio dei nomi:

    kubectl label namespace NAMESPACE \
        istio-injection- istio.io/rev=REVISION_LABEL --overwrite
    
  1. Esegui un upgrade in sequenza dei deployment nello spazio dei nomi:

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

  3. Se hai carichi di lavoro in altri spazi dei nomi, ripeti i passaggi precedenti per per ogni spazio dei nomi.

  4. Se hai eseguito il deployment dell'applicazione in una configurazione multi-cluster, replica Configurazione di Kubernetes e Istio in tutti i cluster, a meno che non sia presente un limitare la configurazione a un sottoinsieme di cluster. La di sicurezza applicata a un determinato cluster è la fonte di riferimento per quel cluster.

Se ritieni che l'applicazione funzioni come previsto, puoi rimuovere il nel cluster istiod dopo aver trasferito tutti gli spazi dei nomi al controllo gestito o di mantenerli come backup: istiod farà automaticamente fare lo scale down per utilizzare meno risorse. Per rimuoverlo, vai a Elimina il piano di controllo precedente.

Se riscontri problemi, puoi identificarli e risolverli utilizzando le informazioni in Risolvere i problemi relativi al piano di controllo gestito e, se necessario, esegui il rollback alla versione precedente.

Elimina piano di controllo precedente

Dopo aver installato e verificato che tutti gli spazi dei nomi utilizzino il piano di controllo gestito da Google, puoi eliminare il vecchio piano di controllo.

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

Se hai utilizzato istioctl kube-inject anziché l'iniezione automatica o se hai installato gateway aggiuntivi, controlla le metriche per il piano di controllo e verifica che il numero di endpoint collegati sia pari a zero.

Rollback

Se devi eseguire il rollback alla versione precedente del piano di controllo, svolgi i seguenti passaggi:

  1. Aggiorna i carichi di lavoro da inserire con la versione precedente del dal piano di controllo. Nel comando seguente, il valore della revisione asm-191-1 è utilizzato solo come esempio. Sostituisci il valore di esempio con l'etichetta di revisione del piano di controllo precedente.

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-191-1 --overwrite
    
  2. Riavvia i pod per attivare la reiniezione in modo che i proxy abbiano versione precedente:

    kubectl rollout restart deployment -n NAMESPACE
    

Il piano di controllo gestito scalerà automaticamente fino a zero e non utilizzerà quando non è in uso. I webhook mutanti e il provisioning rimarranno e non influiscono sul comportamento del cluster.

Il gateway è ora impostato sulla revisione asm-managed. Per eseguire il rollback, esegui di nuovo il comando di installazione di Cloud Service Mesh, che rieseguirà il deployment del gateway al piano di controllo nel cluster:

kubectl -n istio-system rollout undo deploy istio-ingressgateway

Se l'operazione riesce, ipotizza questo output:

deployment.apps/istio-ingressgateway rolled back

Disinstalla

Il piano di controllo gestito scala automaticamente fino a zero quando non è utilizzato da nessuno spazio dei nomi. Per la procedura dettagliata, vedi Disinstallare Cloud Service Mesh.

Risoluzione dei problemi

Per identificare e risolvere i problemi relativi all'utilizzo del piano di controllo gestito, consulta Risoluzione dei problemi relativi al piano di controllo gestito.

Passaggi successivi