Sequenziare l'implementazione degli upgrade dei cluster con fasi personalizzate

Questo documento mostra come gestire gli upgrade dei cluster Google Kubernetes Engine (GKE) che utilizzano il sequenziamento del rollout con fasi personalizzate. Crea una sequenza di implementazione utilizzando gruppi di cluster organizzati in parchi risorse e, facoltativamente, sottoinsiemi di cluster di questi parchi risorse. Puoi scegliere il tempo di test di durata che vuoi dopo il completamento degli upgrade del cluster in un gruppo (massimo 30 giorni). Puoi includere sia cluster Autopilot che Standard. Per saperne di più sul funzionamento di questa funzionalità, consulta la sezione Informazioni sul sequenziamento delle implementazioni con fasi personalizzate.

Se gestisci implementazioni in più flotte, ti consigliamo di utilizzare un progetto dedicato per ospitare gli oggetti RolloutSequence. Questo progetto funge da genitore e coordinatore per i rollout nella sequenza. In genere, questo progetto non fa parte della sequenza, ovvero non contiene flotte o cluster che fanno parte della sequenza.

Prima di iniziare

Ruoli obbligatori

Per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come assegnare ruoli.

Per creare o modificare una sequenza di implementazione, devi disporre del ruolo IAM di editor del parco risorse (roles/gkehub.editor) in ogni progetto host del parco risorse nella sequenza di implementazione e nel progetto host della sequenza di implementazione. Questo ruolo fornisce le seguenti autorizzazioni:

  • gkehub.rolloutsequences.create
  • gkehub.rolloutsequences.get
  • gkehub.rolloutsequences.list
  • gkehub.rolloutsequences.update
  • gkehub.rolloutsequences.delete
  • gkehub.fleet.update

Queste autorizzazioni ti consentono di creare, accedere e modificare gli oggetti RolloutSequence e di utilizzare le flotte nella sequenza di implementazione.

Se devi registrare o annullare la registrazione dei cluster in un parco risorse, devi disporre di tutte le seguenti autorizzazioni:

Puoi creare sequenze di implementazione utilizzando flotte ospitate in progetti in una o più organizzazioni, se disponi delle autorizzazioni necessarie per questi progetti.

Per saperne di più sui ruoli IAM con privilegi minimi richiesti per diverse attività, consulta Ricevere suggerimenti sui ruoli predefiniti con l'assistenza di Gemini.

Configurare una sequenza di implementazione

Per creare una sequenza di implementazione, i cluster devono essere organizzati in gruppi di parchi risorse. Puoi anche creare fasi granulari che possono essere indirizzate a sottoinsiemi specifici di cluster all'interno di un parco risorse utilizzando le etichette Kubernetes. Per indicazioni su come organizzare i cluster, consulta l'esempio di banca della community. Dopo aver organizzato i cluster in gruppi e averli etichettati, se vuoi, crea una sequenza di implementazione definendo l'elenco ordinato delle fasi e il periodo di prova per ogni gruppo.

Organizzare i cluster in parchi risorse

In una sequenza di implementazione, ti consigliamo di registrare tutti i cluster nello stesso canale di rilascio. Se i cluster non sono registrati nello stesso canale, GKE seleziona una versione dal canale più conservativo della sequenza. Ad esempio, se i cluster sono registrati sia nel canale stabile che in quello regolare, GKE sceglie la versione del canale stabile. Inoltre, consigliamo di eseguire la stessa versione secondaria su tutti i cluster per poter essere idonei alla stessa versione di destinazione dell'upgrade automatico.

Se hai già organizzato i cluster in parchi risorse, puoi saltare i passaggi seguenti e passare alla sezione Crea sottoinsiemi di cluster.

  1. Raggruppa i cluster in parchi risorse. Puoi organizzare i cluster in base agli ambienti di deployment, ad esempio test, gestione temporanea e produzione (consigliato).
  2. Registra ogni cluster in un parco risorse in base al raggruppamento scelto.

(Facoltativo) Creare sottoinsiemi di cluster

Per fare in modo che una fase della sequenza di implementazione abbia come target cluster specifici, devi etichettare questi cluster.

Ad esempio, per testare una nuova versione su un piccolo sottoinsieme di cluster prima di un'implementazione completa, puoi applicare un'etichetta canary a questi cluster. Per aggiungere l'etichetta canary con il valore true a un cluster utilizzando Google Cloud CLI, esegui questo comando:

gcloud container clusters update CLUSTER_NAME \
    --location=CLUSTER_LOCATION\
    --update-labels=canary=true

Sostituisci quanto segue:

Il flag --update-labels=canary=true indica a GKE di applicare l'etichetta canary al cluster .

Per ulteriori informazioni sull'aggiunta di un'etichetta a un cluster, vedi Aggiungere o aggiornare le etichette per i cluster esistenti.

Creare una sequenza di implementazione con fasi personalizzate

Una sequenza di implementazione con fasi personalizzate definisce l'ordine degli upgrade definendo in modo dichiarativo le fasi. Con gcloud CLI, utilizzi un file YAML, mentre con Terraform aggiungi un blocco di risorse alla configurazione. Se esegui i passaggi descritti in questa sezione, crei un RolloutSequence.

Per garantire che la sequenza acquisisca tutti i cluster, ogni flotta deve includere una fase catch-all (una fase senza un selettore di etichette). Questa fase generica acquisisce tutti i cluster rimanenti che GKE non ha selezionato nelle fasi precedenti. Se assegni un singolo cluster a più fasi all'interno di un RolloutSequence, per risolvere i conflitti, GKE assegna implicitamente il cluster solo alla prima fase.

Le seguenti configurazioni di esempio creano tre fasi:

  • La prima fase ha come target tutti i cluster nel parco risorse dev. Una volta completato l'upgrade, è previsto un periodo di rodaggio di 7 giorni (7d).
  • La seconda fase ha come target i cluster nel parco risorse prod che hanno l'etichetta canary=true. Una volta completato l'upgrade, è previsto un periodo di rodaggio di 7 giorni (7d).
  • La terza fase ha come target i cluster rimanenti nel parco risorse prod. Una volta completato l'upgrade, è previsto un periodo di rodaggio di 7 giorni (7d).

gcloud

  1. Salva il seguente manifest come rollout-sequence.yaml:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 7d
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
      label-selector: resource.labels.canary=='true'
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
    

    Tieni presente quanto segue:

    • stage: include un parco risorse o un sottoinsieme di cluster all'interno di un parco risorse. I cluster nelle fasi precedenti devono essere completamente sottoposti ad upgrade e testati prima che la sequenza proceda alla fase successiva. Tuttavia, se un cluster non ha terminato l'upgrade 30 giorni dopo l'inizio della procedura di upgrade, GKE inizia il periodo di sospensione.
    • fleet-projects: un elenco di flotte da cui selezionare i cluster per questa fase. È possibile fare riferimento a un massimo di una flotta per fase. Un parco risorse è identificato dal progetto in cui è ospitato. Questo progetto può essere diverso da quello in cui si trovano i cluster, se il parco risorse contiene appartenenze tra progetti. Il formato per specificare un progetto del parco risorse è projects/PROJECT_ID.
    • label-selector (facoltativo): seleziona un sottoinsieme di cluster dai parchi risorse specificati. Questo campo utilizza la sintassi Common Expression Language (CEL) e deve iniziare con resource.labels.
    • soak-duration: il tempo di attesa dopo l'upgrade di tutti i cluster in una fase precedente prima di procedere alla fase successiva. Espresso in secondi, minuti, ore e giorni.
  2. Per creare la sequenza di implementazione definita nel manifest rollout-sequence.yaml, esegui questo comando:

    gcloud container fleet rolloutsequences create ROLLOUT_SEQUENCE_NAME \
        --display-name=DISPLAY_NAME \
        --stage-config=rollout-sequence.yaml
    

    Sostituisci quanto segue:

    • ROLLOUT_SEQUENCE_NAME: un identificatore immutabile conforme alle specifiche RFC-1034, ad esempio test-rollout-sequence.
    • DISPLAY_NAME: una stringa leggibile per la sequenza di implementazione.

Terraform

Questa sezione mostra come creare una sequenza di implementazione con fasi personalizzate utilizzando Terraform. Puoi anche utilizzare questa risorsa per aggiornare la sequenza. Per maggiori informazioni, consulta la documentazione di riferimento per google_gke_hub_rollout_sequence.

  1. Aggiungi il seguente blocco alla configurazione di Terraform per creare una risorsa di sequenza di implementazione:

    resource "google_gke_hub_rollout_sequence" "rollout_sequence" {
      rollout_sequence_id = "ROLLOUT_SEQUENCE_NAME"
      display_name        = "DISPLAY_NAME"
      stages {
        fleet_projects = ["projects/dev"]
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        cluster_selector {
          label_selector = "resource.labels.canary=='true'"
        }
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        soak_duration  = "7d"
      }
    }
    

    Sostituisci quanto segue:

    • ROLLOUT_SEQUENCE_NAME: un identificatore immutabile conforme alle specifiche RFC-1034, ad esempio test-rollout-sequence.
    • DISPLAY_NAME: una stringa leggibile per la sequenza di implementazione.

Implementare una versione specifica

Puoi implementare una versione specifica nella sequenza di implementazione. Per saperne di più, consulta Implementazione di una versione specifica.

Puoi eseguire il rollout di una versione sui control plane o sui nodi dei cluster nella sequenza di rollout. Puoi selezionare in modo indipendente le versioni da implementare nei piani di controllo o nei nodi.

GKE può implementare una sola versione alla volta in una fase per il control plane o i nodi, rispettivamente. Se hai un rollout esistente in esecuzione nella prima fase della sequenza di rollout, GKE esegue le seguenti operazioni, a seconda che tu gestisca la sequenza di rollout con gcloud CLI o Terraform:

  • gcloud CLI: quando esegui il comando, una richiesta interattiva ti chiede se vuoi annullare l'implementazione esistente per creare l'implementazione alla versione che hai specificato. Se rispondi in modo affermativo, GKE annulla l'implementazione esistente e ne crea una nuova. In caso contrario, GKE mantiene l'implementazione esistente e non ne crea una nuova come richiesto originariamente nel comando.
  • Terraform: quando aggiorni la configurazione Terraform come descritto nella sezione successiva, GKE annulla l'implementazione esistente se è in esecuzione nella prima fase.

Implementa una versione nei control plane in una sequenza di implementazione

gcloud

Esegui questo comando:

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --control-plane-version="CONTROL_PLANE_VERSION"

Sostituisci quanto segue:

  • ROLLOUT_SEQUENCE_NAME: il nome della sequenza di rollout.
  • CONTROL_PLANE_VERSION: la versione da implementare. Puoi scegliere una versione specifica, ad esempio 1.34.7-gke.1055000, o utilizzare un alias di versione. Per ulteriori informazioni, consulta la sezione Specifica della versione del cluster.

Terraform

Se utilizzi Terraform per gestire la sequenza di implementazione, puoi implementare una versione specifica aggiungendola al blocco che hai utilizzato per creare la sequenza di implementazione.

Aggiungi il seguente campo al blocco. Puoi aggiungere il campo ovunque tranne tra i blocchi stages, che devono essere consecutivi:

min_control_plane_version = "CONTROL_PLANE_VERSION"

Sostituisci CONTROL_PLANE_VERSION con la versione da implementare. Puoi scegliere una versione specifica, ad esempio 1.34.7-gke.1055000, o utilizzare un alias di versione. Per ulteriori informazioni, consulta la sezione Specifica della versione del cluster.

Se hai già utilizzato questo campo per implementare una versione del control plane, il campo rimane nel blocco. Sostituisci la versione precedente implementata con CONTROL_PLANE_VERSION che vuoi implementare questa volta.

Implementa una versione nei nodi in una sequenza di implementazione

gcloud

Esegui questo comando:

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --node-version="NODE_VERSION"

Sostituisci quanto segue:

  • ROLLOUT_SEQUENCE_NAME: il nome della sequenza di rollout.
  • NODE_VERSION: la versione da implementare, ad esempio 1.34.7-gke.1055000.

Terraform

Se utilizzi Terraform per gestire la sequenza di implementazione, puoi implementare una versione specifica aggiungendola al blocco che hai utilizzato per creare la sequenza di implementazione.

Aggiungi il seguente campo al blocco. Puoi aggiungere il campo ovunque tranne tra i blocchi stages, che devono essere consecutivi:

min_node_version = "NODE_VERSION"

Sostituisci NODE_VERSION con la versione da implementare, ad esempio 1.34.7-gke.1055000. Se hai già utilizzato questo campo per implementare una versione del nodo, il campo rimane nel blocco. Sostituisci la versione precedente implementata con NODE_VERSION che vuoi implementare questa volta.

Controllare lo stato di un'implementazione

Dopo aver configurato una sequenza di implementazione, il sistema crea automaticamente oggetti Rollout per gestire gli upgrade. Puoi osservare e monitorare l'avanzamento di questi oggetti utilizzando i comandi Google Cloud CLI.

Elenco implementazioni

Per elencare tutti i rollout attivi e storici nel progetto host della sequenza di rollout, esegui questo comando:

gcloud container fleet rollouts list --project=HOST_PROJECT_ID

Sostituisci HOST_PROJECT_ID con l'ID del progetto host della sequenza di implementazione.

Puoi omettere il flag --project=HOST_PROJECT_ID se ti trovi già nel progetto in cui è ospitata la sequenza di implementazione.

L'output è simile al seguente:

NAME                                              STATE      CREATE_TIME
05eb251e4f19269e23-node-1-33-5-gke-1201000-t7mqd  COMPLETED  2025-10-30T20:07:46
05eb251e4f19269e23-kcp-1-33-5-gke-1201000-djwst   COMPLETED  2025-10-30T18:07:06
05eb251e4f19269e23-node-1-33-5-gke-1125000-6bxvu  COMPLETED  2025-10-23T17:46:54
05eb251e4f19269e23-kcp-1-33-5-gke-1125000-2f6ct   RUNNING    2025-10-23T16:41:33

Nell'output precedente, i nomi dei rollout che contengono kcp si riferiscono agli upgrade del piano di controllo, mentre i nomi che contengono node si riferiscono agli upgrade dei nodi. Il segmento del nome dell'implementazione dopo kcp o node deriva dalla versione di GKE.

Descrivere un'implementazione

Per ottenere informazioni dettagliate su un particolare rollout, inclusi la versione di destinazione, lo stato e i cluster che sono stati aggiornati, utilizza il comando describe con l'ID rollout ottenuto dal comando precedente:

gcloud container fleet rollouts describe ROLLOUT_ID \
  --project=HOST_PROJECT_ID

Sostituisci quanto segue:

  • ROLLOUT_ID: l'ID del rollout che hai ottenuto quando hai elencato i rollout.
  • HOST_PROJECT_ID: l'ID progetto in cui è ospitata la sequenza di implementazione.

Ad esempio:

gcloud container fleet rollouts describe 927e9a989930cf3b55-kcp-1-32-4-gke-1106006 \
  --project=my-hostfleet

L'output è simile al seguente:

createTime: '2025-05-26T11:47:29.909959672Z'
membershipStates:
  projects/dev-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T12:20:55.601542481Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-1234567890-abcdefg-hijklm-nopqrst
      state: SUCCEEDED
    stageAssignment: 1
  projects/dev-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T12:22:57.151203493Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-2
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-987654321-ghijkl-mno-pqr-stu-vwxyz
      state: SUCCEEDED
    stageAssignment: 1
  projects/prod-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T13:03:34.134308942Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-567891234-efghij-klm-nopq-rstu-vwxyz
      state: SUCCEEDED
    stageAssignment: 2
  projects/prod-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T13:06:34.025261641Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-765432198-01a7b896-67c2-523-6fjjh4-icmdydh
      state: SUCCEEDED
    stageAssignment: 2
name: projects/user-hostfleet/locations/global/rollouts/05eb251e4f19269e23-kcp-1-32-4-gke-1106006
rolloutSequence: projects/project-id/locations/global/rolloutSequences/my-sequence
state: COMPLETED
updateTime: '2025-07-22T07:36:51.052691989Z'
versionUpgrade:
  desiredVersion: 1.32.4-gke.1106006
  type: TYPE_CONTROL_PLANE
stages:
- state: COMPLETED
  endTime: '2025-05-26T12:22:28.828506491Z'
  stageNumber: 1
  startTime: '2025-05-26T11:48:28.772658427Z'
  soakDuration: 600s
- state: COMPLETED
  endTime: '2025-05-26T13:06:20.026390832Z'
  stageNumber: 2
  startTime: '2025-05-26T12:32:38.419372153Z'
  soakDuration: 600s

Informazioni sullo stato di un'implementazione

Quando descrivi un rollout, i campi stages e membershipStates dell'output forniscono lo stato di avanzamento di ogni fase e cluster all'interno di quella fase, rispettivamente.

La tabella seguente elenca i potenziali stati di una fase:

Stato Descrizione
PENDING L'upgrade non è ancora iniziato per questa fase.
RUNNING L'upgrade è in corso per questa fase. Se hai configurato un periodo di manutenzione per i cluster nella fase, GKE attende l'apertura del periodo prima di eseguire l'upgrade dei cluster.
SOAKING Tutti i cluster in questa fase hanno completato gli upgrade e la fase si trova nel periodo di assorbimento configurato.
FORCED_SOAKING L'upgrade ha richiesto più tempo di quello massimo (30 giorni), pertanto GKE ha avviato forzatamente la fase di sospensione. L'upgrade continua sui cluster rimanenti.
COMPLETED La fase di rodaggio è terminata e l'implementazione procede alla fase successiva.

La tabella seguente elenca i potenziali stati di un cluster all'interno di una sequenza:

Stato Descrizione
PENDING L'upgrade è in attesa su questo cluster.
INELIGIBLE Questo cluster non è idoneo per l'upgrade, probabilmente a causa di una discrepanza di versione. Il motivo della non idoneità è fornito nell'output.
RUNNING L'upgrade è in corso su questo cluster.
SUCCEEDED L'upgrade è stato completato correttamente su questo cluster.
FAILED L'upgrade non è riuscito su questo cluster. I target non riusciti vengono ritentati all'infinito mentre la fase è attiva (in stato RUNNING o FORCED_SOAKING).

Gestire un'implementazione

Puoi gestire un singolo rollout seguendo le istruzioni fornite nelle sezioni seguenti. Per saperne di più sulla gestione di un'implementazione e sulle azioni corrispondenti che puoi intraprendere, consulta Gestire un'implementazione.

Per gestire un'intera sequenza di implementazione e non solo un'implementazione specifica, consulta la sezione seguente, Gestisci una sequenza di implementazione.

Mettere in pausa un'implementazione

Puoi mettere in pausa un lancio attivo. Per saperne di più su questa azione, consulta Mettere in pausa un lancio.

Per mettere in pausa un'implementazione, esegui questo comando:

gcloud container fleet rollouts pause ROLLOUT_ID

Sostituisci ROLLOUT_ID con l'ID del rollout che vuoi mettere in pausa. Per ottenere gli ID implementazione per le implementazioni nella sequenza di implementazione, consulta Elencare le implementazioni.

Riprendere un'implementazione

Puoi riprendere un'implementazione interrotta da meno di 90 giorni. Per maggiori informazioni su questa azione, consulta Riprendere un lancio.

Per riprendere un'implementazione in pausa, esegui questo comando:

gcloud container fleet rollouts resume ROLLOUT_ID

Sostituisci ROLLOUT_ID con l'ID dell'implementazione che vuoi riprendere. Per ottenere gli ID implementazione per le implementazioni nella sequenza di implementazione, consulta Elenco delle implementazioni.

Annullare un'implementazione

Puoi annullare un'implementazione, incluse quelle attive o in pausa. Non puoi annullare i rollout per gli upgrade automatici obbligatori. Per ulteriori informazioni sull'annullamento delle implementazioni, consulta Annullare un'implementazione.

Per annullare un'implementazione, esegui questo comando:

gcloud container fleet rollouts cancel ROLLOUT_ID

Sostituisci ROLLOUT_ID con l'ID dell'implementazione che vuoi annullare. Per ottenere gli ID implementazione per le implementazioni nella sequenza di implementazione, consulta Elenco delle implementazioni.

Completare una fase di implementazione

Puoi completare una fase di implementazione se vuoi che gli upgrade passino alla fase successiva. Per saperne di più su questa azione, consulta Completare una fase di implementazione.

Per completare una fase di implementazione, esegui questo comando:

gcloud container fleet rollouts force-complete-stage ROLLOUT_ID \
    --stage=STAGE

Sostituisci quanto segue:

  • ROLLOUT_ID: l'ID dell'implementazione in cui vuoi completare una fase. Per ottenere gli ID implementazione per le implementazioni nella sequenza di implementazione, consulta Elenco delle implementazioni.
  • STAGE: la fase che vuoi completare ora. Ad esempio, se vuoi completare la seconda fase, inserisci 2. La fase deve essere in esecuzione o in ammollo per utilizzare questo comando.

Ignorare un cluster in una sequenza di implementazione per un'implementazione specifica

Puoi fare in modo che GKE ignori un cluster in una sequenza di implementazione se non vuoi che venga eseguito l'upgrade del cluster nell'ambito di un'implementazione attiva. Tuttavia, questa azione rimuove il cluster dalla sequenza di implementazione per le implementazioni attive e future, non solo per quelle attive.

Per eseguire questa azione per impedire l'upgrade di un cluster in un rollout attivo, consulta Ignorare un cluster in una sequenza di rollout.

Gestisci una sequenza di implementazione

Puoi controllare gli upgrade automatici dei cluster con la sequenza di implementazione in diversi modi, come spiegato nelle sezioni seguenti.

Se vuoi gestire un'implementazione da una sequenza di implementazione anziché l'intera sequenza di implementazione e tutte le relative implementazioni, consulta Gestire un'implementazione.

Elenca le sequenze di implementazione

Per elencare tutte le sequenze di implementazione nel progetto host, esegui questo comando:

gcloud container fleet rolloutsequences list --project=HOST_PROJECT_ID

Sostituisci HOST_PROJECT_ID con l'ID del progetto host della sequenza di implementazione.

Descrivere una sequenza di implementazione

Per visualizzare i dettagli di una sequenza di implementazione specifica, esegui questo comando:

gcloud container fleet rolloutsequences describe ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

Sostituisci quanto segue:

  • ROLLOUT_SEQUENCE_NAME: il nome della sequenza di implementazione.
  • HOST_PROJECT_ID: l'ID del progetto host della sequenza di implementazione.

L'output è simile al seguente:

createTime: '2025-10-23T16:40:16.403871189Z'
displayName: my-display-name
name: projects/HOST_PROJECT_ID/locations/global/rolloutSequences/ROLLOUT_SEQUENCE_NAME
stages:
- clusterSelector:
    labelSelector: resource.labels.canary=='true'
  fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 600s
- fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 300s
uid: 5c5b2ac8-9d76-45f9-92ca-5e6bd3fbcaef
updateTime: '2025-10-23T17:11:57.285678399Z'

Scegli i tipi di upgrade eseguiti da GKE in una sequenza di implementazione

Per impostazione predefinita, GKE esegue tutti i tipi di upgrade del cluster in una sequenza di implementazione. Puoi limitare l'ambito degli upgrade del cluster in una sequenza di implementazione per eseguire solo tipi specifici di upgrade. Per informazioni, vedi Scegliere i tipi di upgrade eseguiti da GKE in una sequenza di implementazione.

Per specificare i tipi di upgrade che vuoi che GKE esegua in una sequenza di implementazione, segui queste istruzioni, a seconda di come gestisci la sequenza di implementazione:

gcloud

Esegui questo comando:

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --auto-rollout-scope=TYPES_OF_UPGRADES

Sostituisci quanto segue:

Terraform

Se utilizzi Terraform per gestire la sequenza di implementazione, puoi specificare i tipi di upgrade che vuoi che GKE esegua in quella sequenza di implementazione aggiungendoli al blocco che hai utilizzato per creare la sequenza di implementazione.

Aggiungi il seguente campo al blocco. Puoi aggiungere il campo ovunque tranne tra i blocchi stages, che devono essere consecutivi:

auto_upgrade_config {
  rollout_creation_scope {
    upgrade_types = [
      UPGRADE_TYPES
    ]
  }
}

Sostituisci UPGRADE_TYPES con l'elenco degli upgrade da eseguire, che può essere uno o più dei seguenti (ciascuno tra virgolette):

Ad esempio, se vuoi che solo le versioni patch vengano implementate nella sequenza di implementazione, specifica la configurazione upgrade_types = ["CONTROL_PLANE_PATCH", "NODE_PATCH"].

Se imposti upgrade_types = [], GKE non esegue upgrade dei cluster nella sequenza di implementazione, ad eccezione delle implementazioni per gli upgrade automatici obbligatori.

Per ripristinare il comportamento predefinito in cui GKE esegue tutti i tipi di upgrade del cluster nella sequenza di implementazione, specifica la configurazione upgrade_types = ["CONTROL_PLANE_PATCH", "CONTROL_PLANE_MINOR", "NODE_PATCH", "NODE_MINOR"]. In alternativa, rimuovi il blocco auto_upgrade_config dalla configurazione Terraform.

Modifica una sequenza di implementazione

Puoi modificare una sequenza di implementazione esistente dopo averla creata. Modifica la sequenza di implementazione seguendo le istruzioni riportate di seguito, a seconda di come la gestisci.

gcloud

Se utilizzi gcloud CLI per gestire la sequenza di implementazione, puoi modificare il file di configurazione YAML in cui hai definito la sequenza. Ad esempio, puoi aggiornare il tempo di ammollo per una fase o aggiornare la fase per modificare l'ordine degli upgrade. Dopo aver modificato il file, applica le modifiche.

Ad esempio, se hai definito la sequenza di implementazione originale in un file denominato rollout-sequence.yaml, modificalo in base alle esigenze. Quindi, esegui il comando seguente:

gcloud container fleet rolloutsequences update test-rollout-sequence \
  --display-name="My Updated Rollout Sequence" \
  --stage-config=rollout-sequence.yaml

Terraform

Se utilizzi Terraform per gestire la sequenza di implementazione, modifica la sequenza di implementazione modificando il blocco che hai utilizzato per creare la sequenza di implementazione.

Ignorare un cluster in una sequenza di implementazione

Puoi fare in modo che GKE ignori un cluster in una sequenza di implementazione. Puoi ignorare uno o più cluster in una sequenza di implementazione. Per ulteriori informazioni, vedi Ignorare un cluster in una sequenza di implementazione.

Per fare in modo che GKE ignori un cluster in una sequenza di implementazione, segui questi passaggi:

  1. Aggiungi un'etichetta al cluster che vuoi che GKE ignori o utilizza un'etichetta esistente. Puoi fare in modo che GKE ignori, ad esempio, un'etichetta come status oppure un'etichetta quando ha un valore specifico, ad esempio status=quarantine.
  2. Imposta la sequenza di implementazione in modo che ignori i cluster con questa etichetta. Per farlo, segui questi passaggi, a seconda di come gestisci la sequenza di implementazione:

    gcloud

    Esegui questo comando:

    gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
        --ignored-clusters-selector="resource.labels.LABEL_TO_IGNORE"
    

    Sostituisci quanto segue:

    • ROLLOUT_SEQUENCE_NAME: il nome della sequenza di implementazione.
    • LABEL_TO_IGNORE: il nome dell'etichetta per i cluster che GKE deve ignorare per la sequenza di implementazione.

    Terraform

    Se utilizzi Terraform per gestire la sequenza di implementazione, aggiungi il seguente campo al blocco che hai utilizzato per creare la sequenza di implementazione. Puoi aggiungere il campo ovunque tranne che tra i blocchi stages, che devono essere consecutivi:

    ignored_clusters_selector {
      label_selector = "resource.labels.LABEL_TO_IGNORE"
    }
    

    Sostituisci LABEL_TO_IGNORE con il nome dell'etichetta per i cluster che GKE deve ignorare per la sequenza di implementazione.

Queste istruzioni configurano GKE in modo che ignori un tipo di etichetta nella sequenza di implementazione. Se vuoi ignorare più etichette o creare espressioni più complesse per ignorare i cluster con etichette specifiche, puoi passare i valori a questo campo utilizzando la sintassi dell'espressione CEL. Tutte le etichette devono utilizzare il prefisso resource.labels..

Aggiungere un cluster a una sequenza di implementazione

Se hai seguito le istruzioni nella sezione precedente per GKE per ignorare un cluster in una sequenza di implementazione, puoi annullare questa azione. Se vuoi che GKE non ignori più i cluster, rimuovi il selettore di ignoranza seguendo le istruzioni riportate di seguito, a seconda di come gestisci la sequenza di implementazione:

gcloud

Esegui questo comando:

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --clear-ignored-clusters-selector

Sostituisci ROLLOUT_SEQUENCE_NAME con il nome della sequenza di rollout.

Questo comando reimposta il selettore di ignoranza in modo che GKE non ignori alcun cluster nella sequenza.

Terraform

Se utilizzi Terraform per gestire la sequenza di implementazione, rimuovi il blocco ignored_clusters_selector dal blocco che hai utilizzato per creare la sequenza di implementazione.

In alternativa, se vuoi che GKE non ignori un cluster specifico, rimuovi le etichette dal cluster.

Elimina una sequenza di implementazione

Per eliminare una sequenza di implementazione, esegui questo comando:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

Sostituisci quanto segue:

  • ROLLOUT_SEQUENCE_NAME con il nome della sequenza di implementazione.
  • HOST_PROJECT_ID con l'ID del progetto host della sequenza di implementazione.

Quando elimini una sequenza di implementazione, vengono annullate tutte le implementazioni in corso per quella sequenza. I cluster che facevano parte della sequenza tornano al comportamento di upgrade automatico predefinito per il canale di rilascio registrato.

Eseguire la migrazione di una sequenza di implementazione esistente per utilizzare fasi personalizzate

Se utilizzi la versione basata sulla flotta del sequenziamento del lancio, puoi eseguire la migrazione a una sequenza che utilizza fasi personalizzate creando un nuovo RolloutSequence che fa riferimento alle tue flotte esistenti. Tieni presente che questa versione del sequenziamento del lancio non supporta la console Cloud de Confiance .

Per eseguire la migrazione della sequenza di implementazione:

  1. (Facoltativo) Prima di eseguire la migrazione della sequenza, crea una copia della configurazione della sequenza di implementazione corrente. Per creare una copia della configurazione, esegui una delle seguenti operazioni:

    Ti consigliamo di non eliminare la sequenza di implementazione basata sulla flotta per semplificare il ripristino della versione precedente della sequenza di implementazione, se necessario. Non è necessario eliminare la sequenza di implementazione basata sul parco per far funzionare la sequenza di implementazione con fasi personalizzate, perché GKE rispetta solo la sequenza di implementazione con fasi personalizzate quando sono presenti entrambe.

  2. Crea un progetto Cloud de Confiance by S3NS dedicato per ospitare la sequenza di implementazione. Questo progetto in genere non fa parte della sequenza, ovvero non contiene flotte o cluster che fanno parte della sequenza.

  3. Se vuoi che la sequenza di implementazione includa cluster specifici all'interno di un parco risorse, aggiungi etichette a questi cluster. Questo passaggio è facoltativo.

  4. Segui le istruzioni riportate nella sezione Creare una sequenza di implementazione con fasi personalizzate.

    Ad esempio, il seguente manifest, denominato rollout-sequence-migrate.yaml, fa riferimento alle flotte esistenti in una sequenza di implementazione precedente. Questo manifest descrive tre fasi, tra cui una fase canary nel parco risorse prod:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 604800s
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
      label-selector: canary=true
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
    

Subito dopo aver definito un nuovo RolloutSequence per i tuoi parchi risorse, GKE inizia l'upgrade dei parchi risorse in base alla nuova sequenza e rimuove la configurazione precedente.

Eseguire la migrazione di una sequenza di implementazione con fasi personalizzate alla sequenza di implementazione precedente

Questa sezione descrive come ripristinare la sequenza di implementazione con fasi personalizzate al modello di sequenza di implementazione basato sul parco risorse. Questa procedura prevede l'eliminazione del nuovo RolloutSequence e il ripristino della configurazione originale basata sulla flotta.

Evitare l'upgrade fuori ordine durante la migrazione

Per evitare upgrade involontari o fuori sequenza durante la riconfigurazione della sequenza, applica un'esclusione dalla manutenzione ai cluster di produzione. Questo passaggio mette temporaneamente in pausa tutti gli upgrade automatici su questi cluster. Ad esempio, puoi configurare un'esclusione dalla manutenzione di tipo no upgrades sui cluster di produzione.

Elimina la sequenza di implementazione

Elimina l'oggetto RolloutSequence che gestisce i cluster. Questa eliminazione disattiva la funzionalità delle fasi personalizzate.

Per eliminare RolloutSequence, esegui questo comando:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME

Sostituisci ROLLOUT_SEQUENCE_NAME con il nome della sequenza di rollout.

Ripristina la configurazione della sequenza di implementazione precedente (senza fasi personalizzate)

Dopo aver eliminato RolloutSequence, puoi ripristinare la configurazione originale basata sul parco risorse. Questo processo prevede la ricreazione delle funzionalità clusterupgrade con i relativi parametri originali, inclusi i link upstreamFleet e i tempi di rodaggio per ogni flotta nella sequenza. Per saperne di più, vedi Creare una sequenza di implementazione.

Rimuovi le esclusioni dalla manutenzione

Dopo aver ripristinato la configurazione originale della sequenza di implementazione basata sulla flotta, rimuovi l'esclusione per la manutenzione che hai applicato nel primo passaggio di questa sezione. GKE riprende gli upgrade automatici, ora regolati dalla sequenza basata sul parco risorse ripristinata.

Passaggi successivi