Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3
本页面介绍了如何将环境升级到 Airflow 版本。
升级操作简介
在 Cloud Composer 3 中,您不负责管理 Cloud Composer 版本 环境:
- Cloud Composer 会自动升级基础架构 环境组件。这些组件与 Cloud Composer 功能,并且不会更改 Airflow 的运作方式 或 Airflow DAG 的执行方式。
- Cloud Composer 不会自动升级 Airflow 版本 Airflow 组件,或与 Airflow 密切相关的组件 工作负载在基础架构组件升级时,不会更改这些资源。 。
- 您可以手动升级到新的 Airflow
例如,您可以将相同的 Airflow 版本和 build 用于多个 个月,而不必执行任何升级,并且您的环境仍会 Cloud Composer 的最新 Cloud Composer 更新、修复和改进, 环境的基础设施组件。当您之后决定改用 新版本或新 build 时,您需要在自己的 环境
Airflow 版本升级简介
您的环境会在以下情况下更改 Airflow 的版本或 build 方式:
您可以控制环境的 Airflow 版本(和 build)。您可以 执行 Airflow 版本升级操作 其他版本的 Airflow例如,这可能是 当前版本和 build 的 Airflow 不再受支持。
Cloud Composer 重新部署环境的 Airflow 组件 使用指定的 Airflow 版本和 build。
Cloud Composer 会应用 Airflow 配置更改,例如 自定义 PyPI 软件包或 Airflow 配置选项替换 环境在升级前就已拥有它们
Cloud Composer 会将 Airflow
airflow_db
连接更新为 指向新的 Cloud SQL 数据库。
更改 Airflow 版本不会改变您连接到资源的方式 例如您的环境存储桶的网址 Airflow Web 服务器。
基础设施自动升级操作简介
Cloud Composer 会定期运行 基础架构自动升级操作:
基础架构自动升级操作会定期在 为环境指定的维护窗口。
无法在 Cloud Composer 3.您可以控制自动升级的时间段 可以为您的环境指定自定义维护窗口来运行。
此操作在 Google Cloud 控制台和 环境日志,就像任何其他长时间运行的操作一样。虽然 操作正在运行,因此您无法在该环境中启动其他操作 (但您仍然可以运行 Airflow DAG)。
基础架构自动升级不会中断 Airflow 或已在运行的 Airflow 任务)。升级可能会导致 短时间内环境基础设施不可用 例如环境监控
升级操作的限制
升级操作具有以下限制:
- 您无法降级到较低版本的 Airflow。
- 如果 Airflow 数据库包含 超过 16 GB 的数据。升级期间 Airflow 数据库大小超过 16 GB 时显示。 在这种情况下,请执行数据库维护以减少 数据库大小
准备工作
我们建议您为 Cloud Storage 存储分区创建新快照, 以便在需要时重新创建环境。
您的账号必须具有可触发环境升级的角色 operations.此外,环境的服务账号必须具有 具有足够权限执行升级操作的角色。有关 相关信息,请参阅访问权限控制。
检查您的环境是否为最新版本
出现以下情况时,Cloud Composer 会显示警告: 您的环境的 Airflow build 将临近支持终止日期。 您可以根据这些警告,始终保持环境 支持。
![“环境详情”页面上会显示弃用消息](https://cloud.google.com/static/composer/docs/images/environment-deprecation-message-composer-3.png?authuser=6&hl=zh-cn)
Cloud Composer 会跟踪 Airflow 版本和 build 环境所依据的基础架构。当它接近 支持终止日期、 您会在环境列表和 环境详情页面。
如需检查您的环境是否是最新版本,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
映像版本字段中会显示以下消息之一:
最新可用版本。环境映像受到完全支持。
有新版本。环境映像受到完全支持,您可以将其升级到更高版本。
对此映像版本的支持将于...结束 环境映像接近完全支持终止日期。
从...起,此版本将不再受支持环境已超出完全支持期限。
gcloud
此功能无法通过 Google Cloud CLI 使用。您可以 请改为查看可用升级,其中会显示新版本 可用
API
此功能无法通过 API 使用。您可以 请改为查看可用升级,其中会显示新版本 可用
查看可用的升级许可
如需查看您可以升级到的目标 Cloud Composer 版本,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页,然后点击 升级映像版本。
如需查看可用版本的列表,请点击 Cloud Composer 图标 映像版本下拉菜单。
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 版本或 build。
检查成功即表示 PyPI 软件包中没有冲突 依赖项。不过, 也可能会因其他原因而未能成功升级。
控制台
如需为您的环境运行升级检查,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页,找到印象版本条目后,点击升级。
在环境版本升级对话框中, 在新版本下拉列表中,选择 Airflow 版本 要升级到的目标版本
在 PyPI 软件包兼容性 (PyPI packages compatibility) 部分,点击检查是否存在冲突 (Check for conflicts)。
等待检查完成。如果存在 PyPI 软件包依赖项冲突,则显示的错误消息包含有关冲突软件版包和软件包版本的详细信息。
gcloud
如需为您的环境运行升级检查,请运行
environments check-upgrade
命令(其中包含
Airflow 版本或 build。
要升级到的目标版本
gcloud composer environments check-upgrade \
ENVIRONMENT_NAME \
--location LOCATION \
--airflow-version VERSION
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。VERSION
: 您要升级的新 Airflow 版本和 build 并采用airflow-x.y.z-build.t
格式。 您还可以使用所有 版本别名。
示例:
gcloud composer environments check-upgrade example-environment \
--location us-central1 \
--airflow-version airflow-2.7.3-build.8
输出示例:
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.7.3-build.8. 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 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
找到映像版本项,然后点击升级。
从映像版本下拉菜单中,选择 Airflow 版本 要升级到的目标版本
点击升级。
gcloud
gcloud composer environments update \
ENVIRONMENT_NAME \
--location LOCATION \
--airflow-version VERSION
替换:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。VERSION
: 您要升级的新 Airflow 版本和 build 并采用airflow-x.y.z-build.t
格式。 您还可以使用所有 版本别名。
例如:
gcloud composer environments update
example-environment \
--location us-central1 \
--airflow-version airflow-2.7.3-build.8
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.7.3-build.8"
}
}
}
Terraform
config.software_config
块中的 image_version
字段
控件
您的环境的 Airflow 版本和 build。在本课中,
字段中,指定新的 Airflow 版本和 build。
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "VERSION"
}
}
}
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。- 将
LOCATION
替换为环境所在的区域。 您要升级的新 Airflow 版本和 build 设置为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.7.3-build.8"
}
}
}