本頁面說明如何將環境升級至新的 Airflow 版本。
關於升級作業
在 Managed Airflow (第 3 代) 中,您不需管理環境的 Managed Airflow 版本:
- Managed Airflow 會自動升級環境的基礎架構元件。這些元件與 Managed Airflow 功能相關,不會改變 Airflow 的運作方式或 Airflow DAG 的執行方式。
- Managed Airflow 不會自動升級 Airflow 版本和建構作業、Airflow 元件,或與 Airflow 工作負載密切相關的元件。基礎架構元件自動升級時,這些設定不會變更。
- 您可以手動升級至新的 Airflow 版本或建構。
舉例來說,您可以連續幾個月使用相同版本和建構作業的 Airflow,不執行任何升級,環境仍會收到最新的 Managed Airflow 更新、修正和環境基礎架構元件改善項目。日後決定改用新版或新建構的 Airflow 時,請升級環境中的 Airflow 版本。
關於 Airflow 版本升級
環境會透過下列方式變更 Airflow 的版本或建構:
您可以控管環境的 Airflow 版本 (和建構作業)。選擇將環境切換至其他 Airflow 版本時,可以執行 Airflow 版本升級作業。舉例來說,如果目前的 Airflow 版本和建構不再支援,就可能發生這種情況。
Managed Airflow 會使用指定的 Airflow 版本和建構作業,重新部署環境的 Airflow 元件。
如果環境在升級前有自訂 PyPI 套件或 Airflow 設定選項覆寫等設定,Managed Airflow 會套用這些 Airflow 設定變更。
Managed Airflow 會更新 Airflow
airflow_db連線,指向新的 Cloud SQL 資料庫。
變更 Airflow 版本不會影響您連線至環境中資源的方式,例如環境 bucket 的網址或 Airflow 網路伺服器。
關於基礎架構自動升級作業
Managed Airflow 會定期執行自動基礎架構升級作業:
系統會在為環境指定的維護期間,定期執行自動基礎架構升級作業。
在 Managed Airflow (第 3 代) 中,無法停用基礎架構自動升級功能。您可以為環境指定自訂維護期間,控管自動升級作業的執行時間範圍。
這項作業會顯示在 Cloud de Confiance 控制台和環境記錄中,就像其他長時間執行的作業一樣。作業執行期間,您無法在環境層級啟動其他作業,但仍可執行 Airflow DAG。
在某些情況下,自動基礎架構升級可能會重新啟動 Airflow 元件。重新啟動期間,Airflow worker 會安全終止,寬限期為 24 小時。如果工作需要超過 24 小時才能完成,建議使用可延遲運算子。升級可能會導致環境的基礎架構元件 (例如環境監控) 短暫無法使用。
升級和復原作業的限制
升級作業有下列限制:
Managed Airflow 版本會在幾天內,逐步向 Managed Airflow 支援的所有區域推出。您所在地區可能尚未推出最新版本。
在 Managed Airflow (第 3 代) 中,您可以復原升級,回到先前的 Airflow 版本或建構,但有下列限制:
- 如果升級作業是從 Airflow 3 版本或 Airflow 2 版本 (從 airflow-2.7.3-build.0 版本開始) 執行,則支援復原。
- 復原功能支援升級至目標版本 airflow-2.11.1-build.20 以上版本、airflow-3.2.2-build.7 以上版本,以及 airflow-3.3.1-build.3 以上版本。
- 您可以在升級後 30 天內開始復原作業。如果目標 Airflow 版本已超過支援終止日期,您仍可復原至該版本。您可以復原至更早的版本。如果您在 30 天內升級多次,只要符合資格限制,就能復原至先前使用的任何版本。
- 開始復原時,環境會處於
RUNNING狀態。
如果 Airflow 資料庫包含超過 20 GB 的資料,您就無法升級環境。升級期間,如果 Airflow 資料庫大小超過 20 GB,系統會顯示警告。在這種情況下,請執行資料庫維護作業,縮減資料庫大小。
如果您使用 XCom 機制傳輸檔案,請務必依據 Airflow 的指南使用。使用 XCom 傳輸大型檔案或大量檔案會影響 Airflow 資料庫的效能,並可能導致載入快照或升級環境時失敗。建議改用 Cloud Storage 等替代方案來移轉大量資料。
事前準備
確認環境為最新版本
如果環境的 Airflow 版本即將停止支援,Managed Airflow 會顯示警告。您可以根據這些警告,確保環境始終受到支援。
Managed Airflow 會追蹤環境所依據的 Airflow 版本和建構作業。接近支援終止日期時,環境清單和「Environment details」(環境詳細資料) 頁面會顯示警告。
如要檢查環境是否為最新版本,請按照下列步驟操作:
控制台
前往 Cloud de Confiance 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下環境名稱。「Environment details」(環境詳細資料) 頁面隨即開啟。
前往「Environment configuration」(環境設定) 分頁。
「Image version」(映像檔版本) 欄位會顯示下列其中一則訊息:
最新可用版本。完全支援環境圖片。
新版本已推出。您的環境映像檔受到完整支援,可以升級至較新版本。
這個映像檔版本的支援將於...結束環境映像檔即將結束完整支援期。
{DEPRECATION_DATE}起不再支援這個版本您的環境已超過完整支援期限。
gcloud
這項功能無法透過 Google Cloud CLI 使用。您可以改為查看建議的升級版本,瞭解有哪些新版本可用。
API
這項功能無法透過 API 使用。您可以改為查看建議的升級版本,瞭解有哪些新版本可用。
查看建議的升級項目
Managed Airflow 會列出可升級環境的 Airflow 版本。
如要查看建議升級的 Managed Airflow 版本,請按照下列步驟操作:
控制台
前往 Cloud de Confiance 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下環境名稱。「Environment details」(環境詳細資料) 頁面隨即開啟。
前往「Environment configuration」(環境設定) 分頁,然後按一下「Upgrade Image Version」(升級映像檔版本)。
如需建議版本清單,請按一下 Managed Airflow 的「Image version」(映像檔版本) 下拉式選單。
gcloud
gcloud composer environments list-upgrades \
ENVIRONMENT_NAME \
--location LOCATION
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。
範例:
gcloud composer environments list-upgrades example-environment \
--location us-central1
API
您可以查看某個位置的可用版本。方法是建構 imageVersions.list API 要求。
例如:
// GET https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/imageVersions
檢查 PyPI 套件衝突
您可以檢查環境中安裝的 PyPI 套件,是否與新 Airflow 版本或建構中預先安裝的套件有任何衝突。
如果檢查成功,代表目前版本和指定版本的 PyPI 套件依附元件之間沒有衝突。不過,升級作業仍可能因其他原因而失敗。
控制台
如要對環境執行升級檢查,請按照下列步驟操作:
前往 Cloud de Confiance 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下環境名稱。「Environment details」(環境詳細資料) 頁面隨即開啟。
前往「Environment configuration」(環境設定) 分頁,找到「Image version」(映像檔版本) 項目,然後按一下「Upgrade」(升級)。
在「Environment version upgrade」(環境版本升級) 對話方塊中,從「New version」(新版本) 下拉式選單選取要升級的 Airflow 版本或建構。
在「PyPI packages compatibility」(PyPI 套件相容性) 專區,按一下「Check for conflicts」(檢查衝突)。
等待檢查完成。如果 PyPI 套件依附元件發生衝突,顯示的錯誤訊息會包含衝突套件和套件版本的詳細資料。
gcloud
如要對環境執行升級檢查,請執行 environments check-upgrade 指令,並指定要升級至哪個 Airflow 版本或建構。
gcloud composer environments check-upgrade \
ENVIRONMENT_NAME \
--location LOCATION \
--airflow-version VERSION
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。 VERSION:要升級的新 Airflow 版本和建構,格式為airflow-x.y.z-build.t。您可以使用所有版本別名。
範例:
gcloud composer environments check-upgrade example-environment \
--location us-central1 \
--airflow-version airflow-2.11.1-build.21
輸出內容範例:
Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-3-airflow-2.11.1-build.21. Operation [projects/example-project/locations/
us-central1/operations/04d0e8b2-...]...done.
...
Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1.CheckUpgradeResponse
buildLogUri: ...
containsPypiModulesConflict: CONFLICT
pypiConflictBuildLogExtract: |-
The Cloud Build image build failed: Build failed; check build logs for
details. Full log can be found at ...
Error details: tensorboard 2.2.2 has requirement
setuptools>=41.0.0, but you have setuptools 40.3.0.
或者,您也可以以非同步方式執行升級檢查。使用 --async 引數發出非同步呼叫,然後使用 gcloud composer operations describe 指令檢查結果。
API
建構 environments.checkUpgrade API 要求。
在 imageVersion 欄位中指定映像檔版本:
{
"imageVersion": "VERSION"
}
將 VERSION 替換為要升級的新版本,格式為 composer-3-airflow-x.y.z-build.t。
檢查是否與 Managed Airflow (第 3 代) 衝突
Managed Airflow (第 3 代) 是 Managed Airflow 的最新主要版本。您可以執行升級檢查,確認 Managed Airflow (第 2 代) 環境是否能升級至 Managed Airflow (第 3 代)。下列說明適用於 Managed Airflow (第 2 代) 環境。
雖然無法將環境從 Managed Airflow (第 2 代) 就地遷移至 Managed Airflow (第 3 代),但您可以使用升級檢查功能,檢查是否有相容性問題。建議您在遷移至 Managed Airflow (第 3 代) 之前完成這項操作。
如要檢查與 Managed Airflow (第 3 代) 的相容性,請定期檢查 Managed Airflow (第 2 代) 環境的升級作業,並指定 Managed Airflow (第 3 代) 版本做為目標。
回報的衝突可能包含下列類型:
BLOCKING衝突會回報 Managed Airflow (第 3 代) 不支援的不相容環境設定元素。建議您先解決這些衝突,再開始遷移至 Managed Airflow (第 3 代)。NON_BLOCKING衝突會回報 Managed Airflow (第 3 代) 中不同的環境設定元素,這些元素可能會導致非預期的行為。舉例來說,如果變更預設值 (例如預設維護期間),系統會回報為非封鎖衝突。建議您在開始遷移程序前,先檢查這些衝突是否會造成問題。這項檢查也會回報 PyPI 套件衝突。這些問題會與設定衝突分開回報,回報方式與一般 PyPI 套件相容性檢查相同。
控制台
如要檢查與 Managed Airflow (第 3 代) 的相容性,請使用 gcloud CLI 或 Cloud Composer API。Cloud de Confiance 控制台僅支援檢查 PyPI 套件相容性。
gcloud
如要檢查與 Managed Airflow (第 3 代) 的相容性,請執行 environments check-upgrade 指令,並指定 Managed Airflow (第 3 代) 版本做為目標。
gcloud composer environments check-upgrade \
ENVIRONMENT_NAME \
--location LOCATION \
--image-version COMPOSER_3_VERSION
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。 COMPOSER_3_VERSION替換為要升級的 Airflow 版本和建構,格式為airflow-x.y.z-build.t。您可以使用所有版本別名。
範例:
gcloud composer environments check-upgrade example-environment \
--location us-central1 \
--image-version composer-3-airflow-2
衝突訊息範例:
...
- message: Error validating property [core]unit_test_mode. Overriding [core]
unit_test_mode is not permitted.
type: BLOCKING
- message: Environment variables [GOOGLE_CLOUD_PROJECT] may not be overridden.
type: BLOCKING
- message: You have to specify Worker CPUs to be 0.5, 1.0 or multiples of 2.0.
type: BLOCKING
- message: The environment uses a default maintenance window, which is
different in Composer 2 and Composer 3. Unless set to a custom value, the
maintenance window will be changed to a new default after the upgrade.
type: NON_BLOCKING
...
您也可以改用非同步方式執行這項檢查。使用 --async 引數發出非同步呼叫,然後使用 gcloud composer operations describe 指令檢查結果。
API
建構 environments.checkUpgrade API 要求。
在 imageVersion 欄位中指定映像檔版本:
{
"imageVersion": "COMPOSER_3_VERSION"
}
將 COMPOSER_3_VERSION 替換為要升級的 Airflow 版本和建構,格式為 airflow-x.y.z-build.t。您可以使用所有版本別名。
升級環境
如要將環境升級至新版 Airflow 或建構作業,請按照下列步驟操作:
控制台
前往 Cloud de Confiance 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下環境名稱。「Environment details」(環境詳細資料) 頁面隨即開啟。
前往「Environment configuration」(環境設定) 分頁。
找到「Image version」(映像檔版本) 項目,然後按一下「Upgrade」(升級)。
從「Image version」(映像檔版本) 下拉式選單中,選取要升級至哪個 Airflow 版本或建構。
按一下「升級」。
gcloud
gcloud composer environments update \
ENVIRONMENT_NAME \
--location LOCATION \
--airflow-version VERSION
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。 VERSION:要升級的新 Airflow 版本和建構,格式為airflow-x.y.z-build.t。您也可以使用所有版本別名。
例如:
gcloud composer environments update \
example-environment \
--location us-central1 \
--airflow-version airflow-2.11.1-build.21
API
建構
environments.patchAPI 要求。在這項要求中:
在
updateMask參數中,指定config.softwareConfig.imageVersion遮罩。在要求主體的
imageVersion欄位中,指定要升級至的新版本。
例如:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.imageVersion
{
"config": {
"softwareConfig": {
"imageVersion": "composer-3-airflow-2.11.1-build.21"
}
}
}
Terraform
config.software_config 區塊中的 image_version 欄位可控制環境的 Airflow 版本和建構作業。在這個欄位中,指定新的 Airflow 版本和建構。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "VERSION"
}
}
}
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。 VERSION:要升級至的新 Airflow 版本和建構,格式為airflow-x.y.z-build.t。您也可以使用所有版本別名。
範例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
image_version = "airflow-2.11.1-build.21"
}
}
}
復原升級
如果遇到效能降低、Airflow 錯誤,或 DAG、外掛程式或依附元件的相容性問題,可以復原環境升級。
如果環境處於 RUNNING 狀態,您可以在升級作業後的 30 天內復原升級。您可以復原至已達支援終止日期的版本。詳情請參閱「升級和復原作業的限制」。
除了復原單一升級作業,您還可以:
復原期間,只有環境的 Airflow 版本會還原至指定版本。復原期間,Managed Airflow 會保留環境的資料和狀態:
DAG 檔案和執行記錄:所有 DAG 定義、DAG 執行記錄、工作執行個體狀態和 XCom 都會完整保留在中繼資料資料庫中。
環境設定:Airflow 設定覆寫、環境變數、自訂 PyPI 套件和資源調度設定都會保留。如果您對自訂 PyPI 套件使用非嚴格的 PyPI 套件版本需求,復原後環境可能會有不同的套件版本 (這個版本仍會符合指定的版本需求)。
如果您在升級期間變更環境設定,例如修改環境變數或調整 Airflow 元件的資源限制,這些變更不會還原。如有需要,您可以在復原前後手動還原變更。
記錄和監控:儲存在 Cloud Logging 的工作執行記錄,以及 Cloud Monitoring 的指標記錄都會保留。
Airflow 資料庫結構定義更新 (Alembic 遷移) 會自動復原,以符合目標 Airflow 版本結構定義。如要查看各 Airflow 版本中的資料庫遷移清單,請參閱 Airflow 說明文件中的「Airflow 資料庫遷移」。復原作業期間,系統會復原目前 Airflow 版本與目標 Airflow 版本之間列出的所有遷移作業。
找出先前使用的版本
如要找出先前使用的版本,請按照下列步驟操作:
gcloud
您可以在作業中找到先前使用的映像檔版本資訊:
gcloud composer operations list \
--locations LOCATION \
--filter='metadata.resource ~ "environments/ENVIRONMENT_NAME$" (metadata.operationType=UPDATE OR metadata.operationType=CREATE)'
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。
輸出內容包含環境作業的記錄。UPDATE 類型的最後一項作業,就是您要復原的升級作業。找出在該作業之前的 UPDATE 作業 (如果只有一個升級作業,則為 CREATE)。通常是清單中的倒數第二個項目。
在以下範例中,71c3d5c9-5b26-4a98-8b19-7f62e9f4ed51 作業是要復原的升級作業,63da3be2-3acf-4fb4-986a-90552a6df8b3 作業則是升級至先前使用的版本。
┌──────────────────────────────────────┬───────────────┬─────────────┬──────────────────────────────┬───────────┬─────────────────────────────┐
│ UUID │ TYPE │ LOCATION │ TARGET_ENVIRONMENT │ STATE │ CREATE_TIME │
├──────────────────────────────────────┼───────────────┼─────────────┼──────────────────────────────┼───────────┼─────────────────────────────┤
│ 71c3d5c9-5b26-4a98-8b19-7f62e9f4ed51 │ UPDATE │ us-central1 │ example-environment │ SUCCEEDED │ 2026-10-15T11:18:32.084039Z │
│ 63da3be2-3acf-4fb4-986a-90552a6df8b3 │ UPDATE │ us-central1 │ example-environment │ SUCCEEDED │ 2026-08-15T10:56:10.628514Z │
│ 4ebc18a9-25bb-4325-b4c9-0957c67c078b │ UPDATE │ us-central1 │ example-environment │ SUCCEEDED │ 2026-06-09T11:30:50.922080Z │
│ 8618f807-abb4-4fc8-9f5b-9353079f6e79 │ UPDATE │ us-central1 │ example-environment │ SUCCEEDED │ 2026-05-31T06:57:27.816925Z │
│ 22022864-0fa5-4d1b-92c6-c3f382b43a35 │ UPDATE │ us-central1 │ example-environment │ SUCCEEDED │ 2025-11-17T11:52:36.923698Z │
│ ec5bf071-e6c6-4760-b3c9-4a117cb08f7b │ CREATE │ us-central1 │ example-environment │ SUCCEEDED │ 2025-11-17T11:17:58.133979Z │
└──────────────────────────────────────┴───────────────┴─────────────┴──────────────────────────────┴───────────┴─────────────────────────────┘
描述作業:
gcloud composer operations describe OPERATION_UUID \
--location LOCATION \
--format="value(response.config.softwareConfig.imageVersion)"
更改項目:
OPERATION_UUID:先前升級作業的 UUID,可透過前一個指令取得。- 將
LOCATION替換為環境所在的區域。
這個指令的輸出內容是先前使用的版本。
執行復原作業
如要將環境復原至先前的 Airflow 版本:
控制台
Cloud de Confiance 控制台不支援復原升級。請改用 gcloud CLI、API 或 Terraform。
gcloud
gcloud composer environments update \
ENVIRONMENT_NAME \
--location LOCATION \
--airflow-version VERSION
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。 VERSION:要復原至的新 Airflow 版本和建構,格式為airflow-x.y.z-build.t。復原作業無法使用版本別名。
範例:
gcloud composer environments update \
example-environment \
--location us-central1 \
--airflow-version airflow-2.11.1-build.21
API
建構
environments.patchAPI 要求。在這項要求中:
在
updateMask參數中,指定config.softwareConfig.imageVersion遮罩。在要求主體的
imageVersion欄位中,指定要復原的版本。
例如:
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.imageVersion
{
"config": {
"softwareConfig": {
"imageVersion": "composer-3-airflow-2.11.1-build.21"
}
}
}
Terraform
config.software_config 區塊中的 image_version 欄位可控制環境的 Airflow 版本和建構作業。在這個欄位中,指定要復原到的 Airflow 版本和建構。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "VERSION"
}
}
}
更改項目:
ENVIRONMENT_NAME:環境名稱。- 將
LOCATION替換為環境所在的區域。 VERSION:要復原到的 Airflow 版本和建構作業,格式為airflow-x.y.z-build.t。復原作業無法使用版本別名。
範例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
image_version = "airflow-2.11.1-build.21"
}
}
}
如果復原作業在執行期間失敗,Managed Airflow 會自動嘗試將環境還原至作業前的狀態,也就是開始復原前使用的 Airflow 版本和建構作業。請查看 Cloud Logging 中的作業錯誤訊息和記錄,瞭解疑難排解詳情。