Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁面說明如何將環境升級至新版 Airflow。
關於升級作業
在 Cloud Composer 3 中,您不會管理環境的 Cloud Composer 版本:
- Cloud Composer 會自動升級環境的基礎架構元件。這些元件與 Cloud Composer 功能相關,不會變更 Airflow 的運作方式或 Airflow DAG 的執行方式。
- Cloud Composer 不會自動升級 Airflow 版本和版本組建、Airflow 元件,或與 Airflow 工作負載密切相關的元件。基礎架構元件自動升級時,這些值不會變更。
- 您可以手動升級至新的 Airflow 版本或版本組建。
舉例來說,您可以使用相同版本和 Airflow 版本幾個月,不必執行任何升級作業,而您的環境仍會收到最新的 Cloud Composer 更新、修正和環境基礎架構元件的改善項目。日後如果決定改用 Airflow 的新版本或版本組建,請在環境中升級 Airflow 版本。
關於 Airflow 版本升級
您的環境會以以下方式變更 Airflow 的版本或版本組建:
您可以控制環境的 Airflow 版本 (和版本)。當您選擇將環境切換為其他 Airflow 版本時,可以執行 Airflow 版本升級作業。舉例來說,如果 Airflow 的目前版本和版本組建已不再支援,就可能發生這種情況。
Cloud Composer 會使用指定的 Airflow 版本和版本組建,重新部署環境的 Airflow 元件。
如果升級前環境已包含自訂 PyPI 套件或 Airflow 設定選項覆寫值,Cloud Composer 會套用 Airflow 設定變更。
Cloud Composer 會更新 Airflow
airflow_db
連線,使其指向新的 Cloud SQL 資料庫。
變更 Airflow 版本不會影響連線至環境中資源的方式,例如環境值區的網址或 Airflow 網路伺服器。
關於自動基礎架構升級作業
Cloud Composer 會定期執行自動基礎架構升級作業:
系統會在為環境指定的維護期間定期執行自動基礎架構升級作業。
無法在 Cloud Composer 3 中停用自動基礎架構升級功能。您可以為環境指定自訂維護期間,控管自動升級作業的執行時段。
這項作業會顯示在 Google Cloud 控制台和環境的記錄中,就像任何其他長時間執行的作業一樣。作業執行期間,您無法在環境層級啟動其他作業 (但仍可執行 Airflow DAG)。
在某些情況下,自動基礎架構升級作業可以重新啟動 Airflow 元件。在這種重新啟動期間,Airflow 工作站會以 24 小時的寬限期安全終止。如果工作需要超過 24 小時才能完成,建議您使用可延遲運算子。升級可能會導致環境的基礎架構元件 (例如環境監控) 在短時間內無法使用。
升級作業的限制
升級作業有下列限制:
Cloud Composer 版本會在幾天內逐步推出,並支援 Cloud Composer 的所有地區。您所在的地區可能尚未提供最新版本。
您無法降級至先前版本或 Airflow 版本。
如果 Airflow 資料庫含有超過 20 GB 的資料,您就無法升級環境。如果 Airflow 資料庫大小超過 20 GB,升級期間就會顯示警告。在這種情況下,請執行資料庫維護作業,以縮減資料庫大小。
如果您使用 XCom 機制傳輸檔案,請務必按照 Airflow 的規範使用。使用 XCom 傳輸大型檔案或大量檔案會影響 Airflow 資料庫的效能,並可能導致載入快照或升級環境時失敗。建議使用 Cloud Storage 等其他方式來傳輸大量資料。
事前準備
確認環境是否為最新版本
當環境的 Airflow 版本即將停止支援時,Cloud Composer 會顯示警告。您可以使用這些警告,確保環境一律受到支援。

Cloud Composer 會追蹤環境所依據的 Airflow 版本和版本組建。當支援期限即將到期時,您會在環境清單和「環境詳細資料」頁面中看到警告。
如何檢查環境是否為最新版本:
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
在「圖片版本」欄位中,系統會顯示下列其中一個訊息:
最新可用版本。系統完全支援您的環境映像檔。
新版本已推出。您的環境映像檔完全支援,您可以將其升級至較新版本。
這個映像檔版本的支援將於...結束您的環境映像檔即將進入完整支援期結束階段。
自...起,系統不再支援這個版本 您的環境已過完整支援期。
gcloud
這項功能無法透過 Google Cloud CLI 使用。您可以改為查看建議的升級,系統會顯示可用的新版本。
API
這項功能無法透過 API 使用。您可以改為查看建議的升級,系統會顯示可用的新版本。
查看建議的升級作業
Cloud Composer 會提供可供您升級環境的 Airflow 版本清單。
如要查看建議升級的 Cloud Composer 版本,請按照下列步驟操作:
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁,然後按一下「升級映像檔版本」。
如要查看建議的版本清單,請按一下 Cloud Composer [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 套件依附元件在目前版本和指定版本之間沒有衝突。不過,升級作業仍可能因其他原因而失敗。
主控台
如要為環境執行升級檢查,請按照下列步驟操作:
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁,找出「映像檔版本」項目,然後按一下「升級」。
在「環境版本升級」對話方塊的「新版本」下拉式清單中,選取要升級至的 Airflow 版本或版本組建。
在「PyPI 套件相容性」部分中,按一下「檢查衝突」。
請等待檢查完成。如果有 PyPI 套件依附元件衝突,系統會顯示錯誤訊息,其中包含衝突套件和套件版本的詳細資料。
gcloud
如要為環境執行升級檢查,請搭配您要升級的 Airflow 版本或版本代號執行 environments check-upgrade
指令。
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.10.5-build.6
輸出內容範例:
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.10.5-build.6. Operation [projects/example-project/locations/
us-central1/operations/04d0e8b2-...]...done.
...
Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1.CheckUpgradeResponse
buildLogUri: https://console.cloud.google.com/cloud-build/builds/79738aa7-...
containsPypiModulesConflict: CONFLICT
pypiConflictBuildLogExtract: |-
The Cloud Build image build failed: Build failed; check build logs for
details. Full log can be found at https://console.cloud.google.com/
cloud-build/builds/79738aa7-...
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
。
升級環境
如要將環境升級至 Airflow 的新版本或新建構版本,請按照下列步驟操作:
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
找出「圖片版本」項目,然後按一下「升級」。
在「圖片版本」下拉式選單中,選取要升級至的 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.10.5-build.6
API
建構
environments.patch
API 要求。在這個要求中:
在
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.10.5-build.6"
}
}
}
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
改成環境所在的地區。您要升級至的 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.10.5-build.6"
}
}
}