透過自訂階段,依序推出叢集升級作業

本文說明如何管理 Google Kubernetes Engine (GKE) 叢集升級,這類升級會使用自訂階段的推出順序。您可以透過叢集群組建立推出順序,這些叢集群組會整理成機群,也可以選擇使用這些機群的叢集子集。您可以選擇叢集在群組中升級完成後,要進行多少時間的浸泡測試 (最多 30 天)。您可以同時加入 Autopilot 和 Standard 叢集。如要進一步瞭解這項功能的運作方式,請參閱「使用自訂階段推出序列」。

如果您管理多個車隊的推出作業,建議使用專案代管 RolloutSequence 物件。這個專案會做為父項,並協調整個序列的推出作業。這項專案通常不屬於序列,也就是說,專案不包含屬於序列的車隊或叢集。

事前準備

  • 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

    gcloud init

    若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  • 請確認您已建立 Autopilot 或 Standard 叢集。如要建立新叢集,請參閱「建立 Autopilot 叢集」。
  • (選用) 如果您沒有專屬專案來代管設定,請使用主控台或其他方法建立專案。 Google Cloud RolloutSequence Google Cloud
  • 確認已啟用車隊所需的 API。 如要建立任何類型的推出順序,必須在機群主機專案中啟用這些 API。為推出順序主專案啟用 gkehub.googleapis.com API。
  • 如需 Terraform 操作說明,請務必使用 7.39.0 以上版本的google供應程式。

必要的角色

如要建立專案,您需要具備專案建立者角色 (roles/resourcemanager.projectCreator),其中包含 resourcemanager.projects.create 權限。瞭解如何授予角色

如要建立或修改推出作業序列,您必須在推出作業序列中的每個機群主機專案,以及推出作業序列主機專案中,具備機群編輯者 IAM 角色 (roles/gkehub.editor)。這個角色提供下列權限:

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

具備這些權限,您就能建立、存取及修改 RolloutSequence 物件,並在推出順序中使用車隊。

如要註冊叢集至機群或取消註冊,您必須具備下列所有權限:

如果您具備這些專案的必要權限,可以使用一或多個機構中專案代管的車隊建立推出序列。

如要進一步瞭解不同工作所需的最低權限 IAM 角色,請參閱「透過 Gemini 取得預先定義的角色建議」。

設定推出作業序列

如要建立推出作業順序,叢集必須歸入機群群組。您也可以使用 Kubernetes 標籤建立精細的階段,指定機群內的特定叢集子集。如要瞭解如何整理叢集,請參閱社群銀行範例。將叢集歸類為群組,並視需要加上標籤後,請定義階段的排序清單,以及每個群組的浸泡時間,建立推出順序。

將叢集整理到機群中

在推出順序中,建議您在同一個發布管道中註冊所有叢集。如果叢集未註冊相同發布版本,GKE 會從序列中最保守的發布版本中選取版本。舉例來說,如果叢集同時註冊了穩定版和一般版,GKE 會選擇穩定版的版本。此外,我們也建議所有叢集都執行相同的子版本,這樣才能符合相同的自動升級目標版本資格。

如果您已將叢集整理到機群中,可以略過下列步驟,直接前往「建立叢集子集」一節。

  1. 將叢集分組到機群中。您可以依部署環境 (例如測試、預備和正式環境) 整理叢集 (建議)。
  2. 根據所選分組,向機群註冊每個叢集

建立叢集子集 (選用)

如要讓推出程序中的階段指定特定叢集,請為這些叢集加上標籤。

舉例來說,如要在全面推出新版本前,先在部分叢集上測試,可以對這些叢集套用 canary 標籤。如要使用 Google Cloud CLI 將 canary 標籤 (值為 true) 新增至叢集,請執行下列指令:

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

更改下列內容:

--update-labels=canary=true 旗標會指示 GKE 將 canary 標籤套用至叢集。

如要進一步瞭解如何為叢集新增標籤,請參閱「為現有叢集新增或更新標籤」。

建立包含自訂階段的推出作業序列

透過自訂階段的推出作業序列,您可以宣告式地定義階段,藉此決定升級順序。使用 gcloud CLI 時,您會使用 YAML 檔案;使用 Terraform 時,則會在設定中新增資源區塊。執行本節所述步驟時,您會建立 RolloutSequence

為確保序列能擷取所有叢集,每個機群都必須包含全方位階段 (沒有標籤選取器的階段)。這個階段會擷取 GKE 在先前階段未選取的所有剩餘叢集。如果您在一個RolloutSequence內將單一叢集指派給多個階段,為解決衝突,GKE 只會將叢集隱含指派給最早的階段。

下列範例設定會建立三個階段:

  • 第一階段的目標是 dev 機群中的所有叢集。升級完成後,會有 7 天的浸泡時間 (7d)。
  • 第二階段的目標是 prod 機群中具有 canary=true 標籤的叢集。升級完成後,會有 7 天的浸泡時間 (7d)。
  • 第三階段的目標是 prod 機群中的其餘叢集。升級完成後,會有 7 天的浸泡時間 (7d)。

gcloud

  1. 將下列資訊清單儲存為 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
    

    注意事項:

    • stage:包括機群或機群中的叢集子集。序列必須先完成早期階段的叢集升級和浸潤測試,才能進入下個階段。不過,如果叢集在升級程序開始後 30 天內未完成升級,GKE 就會開始過渡期。
    • fleet-projects:從中選取此階段叢集的車隊清單。每個階段最多可參照一個車隊。機群的識別依據是機群代管的專案。如果機群包含跨專案成員,這個專案可以與叢集所在的專案不同。指定車隊專案的格式為 projects/PROJECT_ID
    • label-selector (選用):從指定機群中選取叢集子集。這個欄位使用一般運算語言 (CEL) 語法,且必須以 resource.labels 開頭。
    • soak-duration:升級前一階段的所有叢集後,等待的時間長度,之後才會進入下一階段。以秒、分鐘、小時和天為單位。
  2. 如要建立在 rollout-sequence.yaml 資訊清單中定義的推出順序,請執行下列指令:

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

    更改下列內容:

    • ROLLOUT_SEQUENCE_NAME:符合 RFC-1034 規格的不變 ID,例如 test-rollout-sequence
    • DISPLAY_NAME:使用者可自然閱讀的推出順序字串。

Terraform

本節說明如何使用 Terraform 建立具有自訂階段的推出順序。您也可以使用這項資源更新序列。詳情請參閱 google_gke_hub_rollout_sequence 的參考文件。

  1. 在 Terraform 設定中新增下列區塊,建立推出順序資源:

    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"
      }
    }
    

    更改下列內容:

    • ROLLOUT_SEQUENCE_NAME:符合 RFC-1034 規格的不變 ID,例如 test-rollout-sequence
    • DISPLAY_NAME:使用者可自然閱讀的推出順序字串。

推出特定版本

您可以將特定版本納入發布順序。詳情請參閱「推出特定版本」。

您可以將版本推出至推出順序中的叢集控制層或節點。

在推出作業序列中,將版本推出至控制層

執行下列指令:

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

更改下列內容:

  • ROLLOUT_SEQUENCE_NAME:推出順序的名稱。
  • CONTROL_PLANE_VERSION:要推出的版本。您可以選擇特定版本,例如 1.34.7-gke.1055000,也可以使用版本別名。詳情請參閱指定叢集版本

將版本推出至推出作業序列中的節點

執行下列指令:

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

更改下列內容:

  • ROLLOUT_SEQUENCE_NAME:推出順序的名稱。
  • NODE_VERSION:要推出的版本,例如 1.34.7-gke.1055000

查看推出作業狀態

設定推出順序後,系統會自動建立 Rollout 物件來管理升級作業。您可以使用 Google Cloud CLI 指令觀察及追蹤這些物件的進度。

列出發布作業

如要列出發布序列主專案中的所有現有和歷來發布作業,請執行下列指令:

gcloud container fleet rollouts list --project=HOST_PROJECT_ID

HOST_PROJECT_ID 替換為推出序列託管專案的 ID。

如果已在推出序列的專案中,可以省略 --project=HOST_PROJECT_ID 旗標。

輸出結果會與下列內容相似:

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

在上述輸出內容中,包含 kcp 的發布名稱是指控制層升級,包含 node 的名稱是指節點升級。kcpnode 後的推出作業名稱區段,是衍生自 GKE 版本。

描述推出作業

如要取得特定推出作業的詳細資訊,包括目標版本、狀態和已升級的叢集,請使用 describe 指令,並搭配您從前一個指令取得的推出作業 ID:

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

更改下列內容:

  • ROLLOUT_ID:列出推出作業時取得的推出作業 ID。
  • HOST_PROJECT_ID:代管推出序列的專案 ID。

例如:

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

輸出結果會與下列內容相似:

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

推出作業的狀態資訊

描述推出作業時,輸出內容的 stagesmembershipStates 欄位會分別提供每個階段的進度狀態,以及該階段內每個叢集的進度狀態。

下表列出階段的可能狀態:

狀態 說明
PENDING 這個階段的升級作業尚未開始。
RUNNING 這個階段的升級作業正在進行中。如果您已為階段中的叢集設定維護期間,GKE 會等待維護期間開始,再升級叢集。
SOAKING 這個階段的所有叢集都已完成升級,且階段處於設定的浸泡期。
FORCED_SOAKING 升級作業超過最長升級時間 (30 天),因此 GKE 強制啟動過渡期。其餘叢集仍會繼續升級。
COMPLETED 浸泡階段已完成,推出作業將進入下一個階段。

下表列出序列中叢集的可能狀態:

狀態 說明
PENDING 這個叢集正在等待升級。
INELIGIBLE 這個叢集不符合升級條件,可能是因為版本不一致。輸出內容會說明不符合資格的原因。
RUNNING 這個叢集正在升級。
SUCCEEDED 這個叢集已順利完成升級。
FAILED 這個叢集升級失敗,如果目標失敗,只要階段處於有效狀態 (RUNNINGFORCED_SOAKING 狀態),系統就會無限次重試。

管理推出作業

如要管理個別推出作業,請按照下列章節的說明操作。如要進一步瞭解如何管理推出作業及可執行的相關動作,請參閱「管理推出作業」。

如要管理整個推出作業序列,而不只是特定推出作業,請參閱下節「管理推出作業序列」。

暫停發布

您可以暫停進行中的發布作業。如要進一步瞭解這項動作,請參閱「暫停推出」。

如要暫停推出作業,請執行下列指令:

gcloud container fleet rollouts pause ROLLOUT_ID

ROLLOUT_ID 替換為要暫停的推出作業 ID。如要取得發布序列中發布作業的發布 ID,請參閱「列出發布作業」。

繼續推出作業

如果推出作業暫停時間未滿 90 天,您可以繼續作業。如要進一步瞭解這項動作,請參閱「繼續推出版本」。

如要繼續暫停的推出作業,請執行下列指令:

gcloud container fleet rollouts resume ROLLOUT_ID

ROLLOUT_ID 替換為要繼續的推出作業 ID。如要取得發布序列中發布作業的發布 ID,請參閱「列出發布作業」。

取消推出作業

您可以取消推出作業,包括有效或已暫停的推出作業。您無法取消強制自動升級的推出作業。如要進一步瞭解如何取消推出作業,請參閱「取消推出作業」。

如要取消推出作業,請執行下列指令:

gcloud container fleet rollouts cancel ROLLOUT_ID

ROLLOUT_ID 替換為要取消的推出作業 ID。如要取得發布序列中發布作業的發布 ID,請參閱「列出發布作業」。

完成發布階段

如果已準備好將升級作業推進至下一個階段,即可完成推出階段。如要進一步瞭解這項操作,請參閱「完成推出階段」。

如要完成發布階段,請執行下列指令:

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

更改下列內容:

  • ROLLOUT_ID:要完成階段的推出作業 ID。如要取得發布序列中發布作業的發布 ID,請參閱「列出發布作業」。
  • STAGE:您現在要完成的階段。舉例來說,如要完成第二階段,請輸入 2。如要使用這項指令,階段必須處於執行或浸泡狀態。

在特定推出作業中,忽略推出順序中的叢集

如果您不希望叢集在進行中的推出作業中升級,可以讓 GKE 忽略推出作業序列中的叢集。不過,這項動作會從有效和日後推出作業的推出順序中移除叢集,而不只是有效推出作業。

如要在進行中的推出作業中執行這項動作,防止叢集升級,請參閱「在推出序列中忽略叢集」。

管理推出作業序列

您可以透過推出作業排序功能,以多種方式控管叢集自動升級作業,詳情請參閱以下各節。

如要管理推出作業序列中的單一推出作業,而非整個推出作業序列和所有推出作業,請參閱「管理推出作業」。

列出推出作業序列

如要列出主機專案中的所有推出程序,請執行下列指令:

gcloud container fleet rolloutsequences list --project=HOST_PROJECT_ID

HOST_PROJECT_ID 替換為推出序列託管專案的 ID。

說明推出作業序列

如要查看特定推出順序的詳細資料,請執行下列指令:

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

更改下列內容:

  • ROLLOUT_SEQUENCE_NAME:推出順序的名稱。
  • HOST_PROJECT_ID:推出程序主機專案的 ID。

輸出結果會與下列內容相似:

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'

選擇 GKE 在推出作業序列中執行的升級類型

根據預設,GKE 會以推出順序執行所有類型的叢集升級。您可以限制推出順序中的叢集升級範圍,只執行特定類型的升級。詳情請參閱「選擇 GKE 在推出程序中執行的升級類型」。

如要指定 GKE 在推出序列中執行的升級類型,請執行下列指令:

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

更改下列內容:

  • ROLLOUT_SEQUENCE_NAME:推出順序的名稱。
  • TYPES_OF_UPGRADES:要執行的升級清單,可能如下:

    • all:預設值,GKE 會依推出作業順序執行所有類型的叢集升級。
    • none:GKE 不會在推出作業序列中執行任何叢集升級,強制自動升級的推出作業除外。
    • 下列一或多個值。如果是多個值,請以半形逗號分隔,且不得有空格:

      舉例來說,如果只想在推出順序中推出修補程式版本,請指定 control-plane-patch,nodes-patch

修改推出作業序列

建立現有的推出順序後,您可以視需要修改。請按照下列操作說明修改推出順序,具體做法取決於您管理推出順序的方式。

gcloud

如果您使用 gcloud CLI 管理推出順序,可以編輯定義順序的 YAML 設定檔。舉例來說,您可以更新階段的浸泡時間,或更新階段來變更升級順序。編輯檔案後,請套用變更。

舉例來說,如果您在名為 rollout-sequence.yaml 的檔案中定義原始推出順序,請視需要編輯該檔案。然後執行下列指令:

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

Terraform

如果您使用 Terraform 管理推出順序,請修改您在建立推出順序時新增至 Terraform 設定的區塊,藉此修改推出順序。

在推出作業序列中忽略叢集

您可以讓 GKE 在推出作業序列中忽略叢集。您可以忽略發布序列中的一或多個叢集。詳情請參閱「在推出順序中忽略叢集」。

如要讓 GKE 在推出作業序列中忽略叢集,請按照下列步驟操作:

  1. 為要讓 GKE 忽略的叢集新增標籤,或使用現有標籤。舉例來說,您可以讓 GKE 忽略 status 等標籤,或是忽略具有特定值的標籤,例如 status=quarantine
  2. 設定推出順序,忽略具有這個標籤的叢集:

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

    更改下列內容:

    • ROLLOUT_SEQUENCE_NAME:推出順序的名稱。
    • LABEL_TO_IGNORE:叢集的標籤名稱,GKE 應忽略這些叢集,不納入推出順序。

這些操作說明會設定 GKE,在推出作業順序中忽略某種標籤。如要忽略多個標籤,或建立更複雜的運算式,說明如何忽略含有特定標籤的叢集,可以使用 CEL 運算式語法將值傳遞至這個標記。所有標籤都必須使用 resource.labels. 前置字元。

將叢集加回推出序列

如果您已按照上一節的 GKE 說明忽略推出作業序列中的叢集,可以還原這項動作。如要讓 GKE 不再忽略叢集,請使用下列指令移除忽略選取器:

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

這個指令會重設忽略選取器,讓 GKE 不會忽略序列中的任何叢集。

或者,如果希望 GKE 不要忽略特定叢集,請從叢集移除標籤

刪除推出作業序列

如要刪除推出程序,請執行下列指令:

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

更改下列內容:

  • ROLLOUT_SEQUENCE_NAME 替換為推出序列的名稱。
  • HOST_PROJECT_ID 替換為推出序列主專案的 ID。

刪除推出序列時,該序列中所有進行中的推出作業都會取消。這些叢集會恢復為註冊發布管道的預設自動升級行為。

將現有的推出作業順序遷移為使用自訂階段

如果您使用以車隊為基礎的推出順序版本,可以建立新的 RolloutSequence 參照現有車隊,藉此遷移至使用自訂階段的序列。請注意,這個版本的推出順序不支援 Google Cloud 管理中心。

如要遷移推出順序,請完成下列步驟:

  1. 視需要,您可以在遷移序號前,複製目前的推出序號設定。如要複製設定,請執行下列其中一項操作:

    建議不要刪除以車隊為準的推出順序,這樣如有需要,就能輕鬆還原至先前的推出順序版本。如果同時存在這兩種推出序列,GKE 只會遵循自訂階段的推出序列,因此您不需要刪除以機群為準的推出序列。

  2. 建立專屬 Google Cloud 專案,用於存放推出作業序列。這個專案通常不屬於序列,也就是說,專案不包含屬於序列的車隊或叢集。

  3. 如要讓推出順序包含機群內的特定叢集,請為這些叢集新增標籤。本步驟為選擇性步驟。

  4. 請按照「建立含有自訂階段的推出順序」一文的說明操作。

    舉例來說,以下名為 rollout-sequence-migrate.yaml 的資訊清單會參照先前推出順序中的現有車隊。這個資訊清單說明三個階段,包括 prod 艦隊中的 canary 階段:

    - 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
    

為機群定義新的 RolloutSequence 後,GKE 會立即開始根據新的順序升級機群,並移除先前的設定。

將含有自訂階段的推出作業序列遷移至先前的推出作業序列

本節說明如何從自訂階段的推出作業排序功能,還原為以機群為基礎的推出作業排序功能模型。這個程序包括刪除新 RolloutSequence,以及還原原始的車隊設定。

防止遷移期間升級順序錯誤

如要避免在重新設定序列時發生非預期的升級或升級順序錯誤,請對正式環境叢集套用維護作業排除時段。這個步驟會暫時停止這些叢集的所有自動升級作業。舉例來說,您可以在正式版叢集上設定 no upgrades 類型的維護作業排除時段。

刪除推出作業序列

刪除管理叢集的 RolloutSequence 物件。刪除後,自訂階段功能就會停用。

如要刪除 RolloutSequence,請執行下列指令:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME

ROLLOUT_SEQUENCE_NAME 替換為推出順序的名稱。

還原先前的推出順序設定 (不含自訂階段)

刪除 RolloutSequence 後,您可以還原原始的機群設定。這個程序包括使用原始參數重新建立 clusterupgrade 功能,包括序列中每個機群的 upstreamFleet 連結和浸泡時間。詳情請參閱「建立推出順序」。

移除排除的維護時間

還原原始的車隊式推出順序設定後,請移除您在本節第一個步驟中套用的維護排除條件。GKE 會繼續自動升級,但現在會依據還原的機群序列進行。

後續步驟