升级环境

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 版本和 build、Airflow 组件或与 Airflow 工作负载密切相关的组件。当基础架构组件自动升级时,这些设置不会发生变化。
  • 您可以手动升级到新的 Airflow 版本或 build

例如,您可以连续数月使用相同版本的 Airflow 和 build,而不执行任何升级,但您的环境仍会收到最新的 Cloud Composer 更新、修复和环境基础架构组件的改进。如果您稍后决定迁移到新版本或新 build 的 Airflow,则可以升级环境中的 Airflow 版本。

关于 Airflow 版本升级

您的环境会以以下方式更改 Airflow 的版本或 build

  • 您可以控制环境的 Airflow 版本(和 build)。当您选择将环境切换到其他 Airflow 版本时,可以执行 Airflow 版本升级操作。例如,如果当前版本的 Airflow 和 build 不再受支持,则可能会发生这种情况。

  • Cloud Composer 会使用指定的 Airflow 版本和 build 重新部署环境的 Airflow 组件。

  • 如果您的环境在升级之前有自定义 PyPI 软件包或 Airflow 配置选项替换,Cloud Composer 会应用这些 Airflow 配置更改。

  • Cloud Composer 会更新 Airflow airflow_db 连接,使其指向新的 Cloud SQL 数据库。

更改 Airflow 版本不会改变您连接环境资源的方式,例如环境存储桶的网址或 Airflow Web 服务器。

自动基础架构升级操作简介

Cloud Composer 会定期运行自动基础架构升级操作

  • 自动基础设施升级操作会在为环境指定的维护期内定期运行。

  • 在 Cloud Composer 3 中,无法停用自动基础架构升级。您可以为环境指定自定义维护窗口,以控制自动升级可以运行的时间段。

  • 此操作与任何其他长时间运行的操作一样,可在 Google Cloud 控制台和环境的日志中查看。在操作运行期间,您无法在环境级启动其他操作(但仍可以运行 Airflow DAG)。

  • 在某些情况下,自动基础架构升级可能会重启 Airflow 组件。在此类重启期间,Airflow 工作器会在 24 小时的宽限期内正常终止。如果您有需要超过 24 小时才能完成的任务,请考虑使用可延期运算符。升级可能会导致环境的基础设施组件(例如环境监控)在短时间内无法使用。

升级操作的限制

升级操作存在以下限制:

  • Cloud Composer 版本会在几天内逐步推广到 Cloud Composer 支持的所有区域。正在进行中的发布的最新版本可能尚未在您所在的区域推出。

  • 您无法降级到早期版本的 Airflow 或 build。

  • 如果 Airflow 数据库包含的数据超过 20 GB,则无法升级环境。升级期间,如果 Airflow 数据库大小超过 20 GB,则会显示警告。在这种情况下,请执行数据库维护以减小数据库大小。

  • 如果您使用 XCom 机制来传输文件,请确保按照 Airflow 的指南使用该机制。使用 XCom 传输大文件或大量文件会影响 Airflow 数据库的性能,并可能导致在加载快照或升级环境时出现故障。建议使用替代方案(例如 Cloud Storage)来转移大量数据。

准备工作

  • 我们建议您创建环境的新快照,以便在需要时重新创建环境。

  • 您的账号必须具有可以触发环境升级操作的角色。此外,环境的服务账号必须具有拥有足够权限来执行升级操作的角色。如需了解详情,请参阅访问权限控制

检查您的环境是否为最新版本

当环境的 Airflow build 接近其支持终止日期时,Cloud Composer 会显示警告。 您可以利用这些警告使您的环境始终保持在受支持的状态。

环境详情页面上会显示弃用消息
图 1. 环境详情页面上会显示弃用消息

Cloud Composer 会跟踪您的环境所基于的 Airflow 版本和 build。当映像接近其支持终止日期时,您会在环境列表和环境详情页面上看到警告。

如需检查您的环境是否为最新版本,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 转到环境配置标签页。

  4. 映像版本字段中会显示以下消息之一:

    • 最新可用版本。环境映像受到完全支持。

    • 有新版本。环境映像受到完全支持,您可以将其升级到更高版本。

    • 对此映像版本的支持将于...结束 环境映像接近完全支持终止日期。

    • 从...起,此版本将不再受支持环境已超出完全支持期限。

gcloud

Google Cloud CLI 不支持此功能。您可以改为查看建议的升级,其中会显示可用的新版本。

API

此功能无法通过 API 使用。您可以改为查看建议的升级,其中会显示可用的新版本。

查看建议的升级

Cloud Composer 提供了一个 Airflow build 列表,您可以将环境升级到其中的任何 build。

如需查看建议升级到的 Cloud Composer 版本,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 前往环境配置标签页,然后点击升级映像版本

  4. 如需查看建议的版本列表,请点击 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 软件包依赖项冲突。不过,升级操作仍然可能由于其他原因而不成功。

控制台

如需为您的环境运行升级检查,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 转到环境配置标签页,找到印象版本条目后,点击升级

  4. 环境版本升级对话框的新版本下拉列表中,选择您要升级到的 Airflow 版本或 build。

  5. PyPI 软件包兼容性 (PyPI packages compatibility) 部分,点击检查是否存在冲突 (Check for conflicts)。

  6. 等待检查完成。如果存在 PyPI 软件包依赖项冲突,则显示的错误消息包含有关冲突软件版包和软件包版本的详细信息。

gcloud

如需为您的环境运行升级检查,请使用您要升级到的 Airflow 版本或 build 运行 environments check-upgrade 命令。

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.10.5-build.14

输出示例:

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.14. 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

检查是否与 Cloud Composer 3 存在冲突

Cloud Composer 3 是 Cloud Composer 的最新主要版本。您可以通过升级检查来确定 Cloud Composer 2 环境是否可以升级到 Cloud Composer 3。以下说明适用于 Cloud Composer 2 环境

虽然无法将环境从 Cloud Composer 2 就地迁移到 Cloud Composer 3,但您可以使用升级检查来检查是否存在兼容性问题。我们建议在迁移到 Cloud Composer 3 之前执行此操作。

如需检查与 Cloud Composer 3 的兼容性,请定期对 Cloud Composer 2 环境进行升级检查,并将 Cloud Composer 3 版本指定为目标版本。

每项报告的冲突可能属于以下类型:

  • BLOCKING 冲突报告不兼容的环境配置元素,这些元素在 Cloud Composer 3 中不受支持。建议您在开始迁移到 Cloud Composer 3 之前解决这些冲突。

  • NON_BLOCKING 冲突报告 Cloud Composer 3 中不同的环境配置元素,这些元素可能会导致出现意外行为。例如,默认维护窗口等默认值的更改会报告为非阻塞冲突。建议您在开始迁移流程之前检查这些冲突是否会导致问题。

  • 此检查还会报告 PyPI 软件包冲突。它们会与配置冲突分开报告,与常规 PyPI 软件包兼容性检查的报告方式相同。

控制台

如需检查与 Cloud Composer 3 的兼容性,请使用 gcloud CLI 或 Cloud Composer API。Google Cloud 控制台仅支持检查 PyPI 软件包兼容性。

gcloud

如需检查与 Cloud Composer 3 的兼容性,请运行 environments check-upgrade 命令,并将 Cloud Composer 3 版本指定为目标版本。

gcloud beta composer environments check-upgrade \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version COMPOSER_3_VERSION

您需要进行如下替换:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。
  • COMPOSER_3_VERSION,其中包含您要升级到的 Airflow 版本和 build,格式为 airflow-x.y.z-build.t。您可以使用所有版本别名

示例:

gcloud beta 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 Beta 版 API 请求。

imageVersion 字段中指定映像版本:

{
  "imageVersion": "COMPOSER_3_VERSION"
}

COMPOSER_3_VERSION 替换为您要升级到的 Airflow 版本和 build,格式为 airflow-x.y.z-build.t。您可以使用所有版本别名

升级环境

如需将环境升级到新版本或新 build 的 Airflow,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 转到环境配置标签页。

  4. 找到映像版本项,然后点击升级

  5. 映像版本下拉菜单中,选择要升级到的 Airflow 版本或 build。

  6. 点击升级

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.10.5-build.14

API

  1. 构建 environments.patch API 请求。

  2. 在此请求中:

    1. 在参数 updateMask 中,指定 config.softwareConfig.imageVersion 掩码。

    2. 在请求正文的 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.14"
      }
    }
  }

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.10.5-build.14"
    }
  }
}

后续步骤