環境をアップグレードする

Managed Airflow(Gen 3) | Managed Airflow(Gen 2) | Managed Airflow(レガシー Gen 1)

このページでは、環境を新しい Managed Airflow または Airflow バージョンにアップグレードする方法について説明します。

アップグレード操作について

Managed Airflow バージョン、Airflow バージョン、またはその両方を同時にアップグレードできます。

環境で使用している Airflow または Managed Airflow のバージョンを変更すると、次のようになります。

  • Managed Airflow は、新しいバージョンの Managed Airflow images を使用して environment's components を再デプロイします。

  • Managed Airflow は、アップグレード前に環境内で Airflow 構成の変更(カスタム PyPI パッケージや Airflow 構成オプションのオーバーライドなど)が行われている場合にそれを適用します。

  • Managed Airflow は、新しい Cloud SQL データベースを指定するため Airflow airflow_db 接続を更新します。

アップグレードしても、環境内でのリソース(環境のバケットの URL、Airflow ウェブサーバーなど)への接続方法は変わりません。

アップグレード オペレーションの制限事項

アップグレード オペレーションには次の制限事項があります。

  • Managed Airflow のリリースは、数日かけて Managed Airflow でサポートされているすべてのリージョンに段階的に ロールアウト されます。リリースが進行中の最新バージョンは、お住まいの地域ではまだ利用できない可能性があります。

  • 以前のバージョンの Managed Airflow や Airflow にダウングレードすることはできません。

  • コンソールでは、サポートされている最新バージョンの Managed Airflow(Gen 2)にのみアップグレードできます。 Google Cloud

  • Google Cloud CLI、API、Terraform では、環境をサポートされている最新バージョン、Managed Airflow(Gen 2)の 3 つの以前のバージョン、以前のマイナー バージョンの最後のパッチ バージョン、アップグレード タイムラインが延長されたバージョンにアップグレードできます。他のバージョンの Managed Airflow(Gen 2)にアップグレードすることはできません。たとえ、そのバージョンがまだサポートされていて、新しい環境の作成に使用できる場合でも同様です。

    Google Cloud CLI、API、Terraform のアップグレード オプションの例:

    • 最新バージョン: composer-2.11.5-airflow-*
    • Managed Airflow(Gen 2)の 3 つ前のバージョン: composer-2.11.4-airflow-*composer-2.11.3-airflow-*composer-2.11.2-airflow-*
    • 以前の Managed Airflow(Gen 2)マイナー バージョンの最後のパッチ: composer-2.10.2-airflow-*
    • アップグレード タイムラインが延長された Managed Airflow(Gen 2)バージョン: composer-2.10.2-airflow-*composer-2.10.1-ariflow-*composer-2.9.7-airflow-*、およびアップグレード タイムラインが延長されたその他のバージョン。
  • アップグレードするバージョンは、環境内の現在の Python バージョンをサポートしている必要があります。

  • Compute Engine API の割り当て上限により、アップグレードが妨げられることがあります。 コンソールで、IAM と管理 > 割り当てとシステム制限 ページに移動し、CPU の Compute Engine API 割り当てを超過していないかどうか確認します。 Google Cloud 割り当てのしきい値に近づいている場合は、アップグレード オペレーションを続行する前に割り当ての増加をリクエストしてください。

  • Airflow データベースに 16 GB を超えるデータが含まれている場合は、環境をアップグレードできません。アップグレード中に Airflow データベースのサイズが 16 GB を超えると、警告が表示されます。その場合、データベースのメンテナンスを実行して、データベースのサイズを減らします。

  • XCom メカニズムを使用してファイルを転送する場合は、Airflow のガイドラインに従って使用するようにしてください。XCom を使用して大きなファイルや大量のファイルを転送すると、Airflow データベースのパフォーマンスに影響し、スナップショットの読み込みや環境のアップグレード時に障害が発生する可能性があります。大量のデータを転送するには、Cloud Storage などの代替手段の使用を検討してください。

始める前に

  • 必要に応じて環境を再作成できるように、環境の新しいスナップショットを作成することをおすすめします。

  • アカウントには、環境の更新オペレーションをトリガーできるロールが必要です。また、環境のサービス アカウントには、アップグレード オペレーションを実行するための十分な権限を持つロールが必要です。詳しくは、アクセス制御をご覧ください。

  • プロジェクト内の環境に属する GKE クラスタの Compute Engine メタデータ エントリ が表示されることがあります。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

ロケーションの利用可能なバージョンを表示できます。これを行うには、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 packages compatibility] セクションで、[Check for conflicts] をクリックします。

  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 image version に置き換えます。形式は composer-a.b.c-airflow-x.y.z です。すべてのバージョンのエイリアスも使用できます。

例:

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-2.16.11-airflow-2.10.5

出力例:

Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-2.16.11-airflow-2.10.5. 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(Gen 3)との競合を確認する

環境を Managed Airflow(Gen 2)から Managed Airflow(Gen 3)にインプレースで移行することはできませんが、アップグレード チェックを使用して互換性の問題を確認できます。Managed Airflow (Gen 3)に移行する前にこれを行うことをおすすめします

Managed Airflow(Gen 3)との互換性を確認するには、Managed Airflow(Gen 2)環境の通常のアップグレード チェックを行い、ターゲットとして Managed Airflow(Gen 3)バージョンを指定します。

報告された競合には、次のタイプがあります。

  • BLOCKING の競合は、Managed Airflow(Gen 3)でサポートされていない互換性のない環境構成要素を報告します。Managed Airflow(Gen 3)への移行を開始する前に、これらの競合を解決することをおすすめします。

  • NON_BLOCKING の競合は、Managed Airflow(Gen 3)で異なる環境構成要素を報告し、予期しない動作を引き起こす可能性があります。たとえば、デフォルトのメンテナンス ウィンドウなどのデフォルト値の変更は、ブロックされない競合として報告されます。移行プロセスを開始する前に、これらの競合が問題を引き起こす可能性があるかどうかを確認することをおすすめします。

  • PyPI パッケージの競合も、このチェックの一部として報告されます。通常の PyPI パッケージの互換性チェックと同様に、構成の競合とは別に報告されます。

コンソール

Managed Airflow(Gen 3)との互換性を確認するには、 gcloud CLI または Managed Airflow API を使用します。 Google Cloud コンソールでは、PyPI パッケージの互換性チェックのみがサポートされています。

gcloud

Managed Airflow(Gen 3)との互換性を確認するには、 environments check-upgrade コマンドを実行し、ターゲットとして Managed Airflow(Gen 3)バージョンを指定します。

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

以下のように置き換えます。

  • ENVIRONMENT_NAME を環境の名前に置き換えます。
  • LOCATION は、環境が配置されているリージョン。
  • COMPOSER_3_VERSION は、アップグレード先の Airflow バージョンとビルドに置き換えます。形式は 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 の バージョンとビルド に置き換えます。形式は airflow-x.y.z-build.t です。すべてのバージョンのエイリアスも使用できます

環境をアップグレードする

環境を Managed Airflow または Airflow の最新バージョンにアップグレードする方法は次のとおりです。

コンソール

  1. コンソールで、[**環境**] ページに移動します。 Google Cloud

    [環境] に移動

  2. 環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [環境の設定] タブに移動します。

  4. [画像モード] 項目を見つけて [アップグレード] をクリックします。

  5. [イメージのバージョン] プルダウン メニューから、アップグレード後の Managed Airflow のバージョンを選択します。

  6. [Upgrade] をクリックします。

gcloud

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

以下のように置き換えます。

  • ENVIRONMENT_NAME を環境の名前に置き換えます。
  • LOCATION は、環境が配置されているリージョン。
  • VERSION は、アップグレード後の新しい Managed Airflow image version に置き換えます。形式は composer-a.b.c-airflow-x.y.z です。すべての バージョンのエイリアスも使用できます。

次に例を示します。

gcloud composer environments update
  example-environment \
  --location us-central1 \
  --image-version composer-2.16.11-airflow-2.10.5

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.16.11-airflow-2.10.5"
      }
    }
  }

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

以下のように置き換えます。

例:

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

  config {
    software_config {
      image_version = "composer-2.16.11-airflow-2.10.5"
    }
  }
}

次のステップ