升级环境

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 将临近支持终止日期。 您可以根据这些警告,始终保持环境 支持

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

Cloud Composer 会跟踪 Airflow 版本和 build 环境所依据的基础架构。当它接近 支持终止日期、 您会在环境列表和 环境详情页面。

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

控制台

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

    转到“环境”

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

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

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

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

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

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

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

gcloud

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

API

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

查看可用的升级许可

如需查看您可以升级到的目标 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 版本 要升级到的目标版本

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

  6. 等待检查完成。如果存在 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 执行以下操作:

控制台

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

    转到“环境”

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

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

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

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

  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.7.3-build.8

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.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"
    }
  }
}

后续步骤