升级环境

Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)

本页面介绍了如何将环境升级到新的 Managed Airflow 或 Airflow 版本。

升级操作简介

您可以分别升级 Managed Airflow 和 Airflow 版本,也可以同时升级它们。

当您更改环境使用的 Airflow 或 Managed Airflow 版本时:

  • Managed Airflow 会使用新版本的 Managed Airflow 映像重新部署您的 环境的组件

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

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

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

升级操作的限制

升级操作存在以下限制:

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

  • 您不能降级到早期版本的 Managed Airflow 或 Airflow。

  • 在 Google Cloud 控制台中,您只能升级到受支持的最新 Managed Airflow(第 2 代)版本。

  • 在 Google Cloud CLI、API 或 Terraform 中,您可以将环境升级到受支持的最新版本、之前的三个 Managed Airflow(第 2 代)版本、上一个次要版本的最后一个补丁版本,以及升级时间表延长的版本。无法升级到其他 Managed Airflow(第 2 代)版本,即使这些版本仍受支持且可用于创建新环境也是如此。

    Google Cloud CLI、API 和 Terraform 的升级选项示例:

    • 最新版本:composer-2.11.5-airflow-*
    • 之前的三个 Managed Airflow(第 2 代)版本:composer-2.11.4-airflow-*composer-2.11.3-airflow-*composer-2.11.2-airflow-*
    • 上一个 Managed Airflow(第 2 代)次要版本的最后一个补丁: composer-2.10.2-airflow-*
    • 升级时间表延长的 Managed Airflow(第 2 代)版本:composer-2.10.2-airflow-*composer-2.10.1-ariflow-*composer-2.9.7-airflow-*,以及其他升级时间表延长的版本。
  • 要升级到的目标版本必须支持您的环境的当前 Python 版本。

  • Compute Engine API 配额限制可能会阻止升级。 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 配额和系统限制 页面,检查 CPU 的 Compute Engine API 配额是否未超出。如果配额阈值即将达到,请先申请配额扩展,然后再继续执行升级操作。

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

  • 如果您使用 XCom 机制传输文件,请确保 按照 Airflow 的准则使用该机制。 使用 XCom 传输大文件或大量文件会影响 Airflow 数据库的性能,并可能导致在加载快照或升级环境时失败。建议考虑使用 Cloud Storage 等替代方案来传输大量数据。

准备工作

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

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

  • 您可能会注意到 Compute Engine 元数据条目 项目中属于环境的 GKE 集群的 。在 GKE 集群创建和升级期间,Google Kubernetes Engine 会自动添加项目级元数据条目 (google_compute_project_metadata),以跟踪次要 IP 地址范围使用情况。请勿修改或移除这些条目。Google Kubernetes Engine 会自动管理它们。

检查环境是否为最新版本

当环境的映像接近完全支持终止日期时,Managed Airflow 会显示警告。您可以利用这些警告使您的环境始终保持受支持状态

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

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

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

控制台

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

    前往“环境”

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

  3. 前往环境配置 标签页。

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

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

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

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

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

gcloud

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

API

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

查看建议的升级

Managed Airflow 提供了一个 Managed Airflow 版本列表,您可以将环境升级到这些版本。

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

控制台

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

    前往“环境”

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

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

  4. 点击 Managed Airflow 映像版本 下拉菜单,查看建议的版本列表。

gcloud

gcloud composer environments list-upgrades \
  ENVIRONMENT_NAME \
  --location LOCATION

替换:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。

示例:

gcloud composer environments list-upgrades example-environment \
  --location us-central1

API

您可以查看某个位置的可用版本。为此,请构建 an imageVersions.list API 请求。

例如:

// GET https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/imageVersions

检查是否存在 PyPI 软件包冲突

您可以检查环境中安装的 PyPI 软件包是否与新 Managed Airflow 映像中预安装的软件包发生冲突。

成功的检查意味着当前版本和指定版本之间没有 PyPI 软件包依赖项冲突。不过,升级操作可能仍会因其他原因而失败。

控制台

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

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

    前往“环境”

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

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

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

  5. PyPI 软件包兼容性 部分,点击检查是否存在冲突

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

gcloud

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

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

替换:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。
  • VERSION 替换为您要升级到的新 Managed Airflow 映像版本,格式为 composer-a.b.c-airflow-x.y.z。您可以使用所有版本别名

示例:

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-2.17.2-airflow-2.11.1

输出示例:

Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-2.17.2-airflow-2.11.1. 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-a.b.c-airflow-x.y.z

检查是否存在与 Managed Airflow(第 3 代)的冲突

虽然无法将环境从 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。 Google Cloud 控制台仅支持检查 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 版本和 build,格式为 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 版本和 build ,格式为 airflow-x.y.z-build.t。您可以使用所有版本别名

升级环境

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

控制台

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

    前往“环境”

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

  3. 前往环境配置 标签页。

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

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

  6. 点击升级

gcloud

gcloud composer environments update \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version VERSION

替换:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。
  • VERSION 替换为您要升级到的新 Managed Airflow 映像版本,格式为 composer-a.b.c-airflow-x.y.z。您还可以使用所有 版本别名

例如:

gcloud composer environments update
  example-environment \
  --location us-central1 \
  --image-version composer-2.17.2-airflow-2.11.1

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-2.17.2-airflow-2.11.1"
      }
    }
  }

Terraform

image_version 块中的 config.software_config 字段控制环境的 Managed Airflow 映像。在此字段中,指定新的 Managed Airflow 映像。

  resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "VERSION"
    }
  }
}

替换:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。 您要升级到的新 Managed Airflow 映像版本 ,格式为 composer-a.b.c-airflow-x.y.z 。您还可以使用所有 版本别名

示例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "composer-2.17.2-airflow-2.11.1"
    }
  }
}

后续步骤