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

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 ビルドを使用でき、環境には環境のインフラストラクチャ コンポーネントの最新の Cloud Composer の更新、修正、改善が適用されます。後で Airflow の新しいバージョンまたはビルドに移行する場合は、環境の Airflow バージョンをアップグレードします。

Airflow バージョンのアップグレードについて

環境で、次のように Airflow のバージョンまたはビルドが変更されます。

  • 環境の Airflow のバージョン(およびビルド)を制御します。環境を別のバージョンの Airflow に切り替えることを選択した場合、Airflow のバージョン アップグレード オペレーションを実行できます。たとえば、Airflow の現在のバージョンとビルドのサポートが終了している場合に、これが発生する可能性があります。

  • Cloud Composer は、指定された Airflow のバージョンとビルドを使用して、環境の Airflow コンポーネントを再デプロイします。

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

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

Airflow のバージョンを変更しても、環境内のリソース(環境のバケットの URL、Airflow ウェブサーバーなど)への接続方法は変わりません。

インフラストラクチャの自動アップグレード オペレーションについて

Cloud Composer は、インフラストラクチャの自動アップグレード オペレーションを定期的に実行します。

  • インフラストラクチャの自動アップグレード オペレーションは、環境に指定されたメンテナンスの時間枠に定期的に実行されます。

  • Cloud Composer 3 では、インフラストラクチャの自動アップグレードを無効にすることはできません。環境にカスタム メンテナンスの時間枠を指定することで、自動アップグレードを実行できる期間を制御できます。

  • このオペレーションは、他の長時間実行オペレーションと同様に、Google Cloud コンソールと環境のログに表示されます。オペレーションの実行中は、環境レベルで他のオペレーションを開始できません(ただし、Airflow DAG は実行できます)。

  • インフラストラクチャの自動アップグレードにより、Airflow コンポーネントが再起動される場合があります。このような再起動中、Airflow ワーカーは 24 時間の猶予期間で正常に終了します。完了に 24 時間を超えるタスクがある場合は、遅延可能な演算子を使用することを検討してください。アップグレードにより、環境のモニタリングなどの環境のインフラストラクチャ コンポーネントが一時的に使用できなくなる可能性があります。

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

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

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

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

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

始める前に

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

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

環境が最新であることを確認する

Cloud Composer では、環境の Airflow ビルドがサポート終了日に近づくと、警告が表示されます。これらの警告を使用して、常に環境をサポート状態を維持し続けることができます。

[環境の詳細] ページに非推奨メッセージが表示されます
図 1.[環境の詳細] ページに非推奨メッセージが表示されます

Cloud Composer は、環境の基盤となる Airflow のバージョンとビルドを追跡しています。サポート終了日に近づくと、環境のリストと [環境の詳細] ページに警告が表示されます。

環境が最新かどうかを確認するには、次のようにします。

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

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

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

  4. [イメージのバージョン] フィールドに、次のいずれかのメッセージが表示されます。

    • 最新の使用可能なバージョン。環境イメージが完全にサポートされます。

    • 新しいバージョンがあります。環境イメージが完全にサポートされ、新しいバージョンにアップグレードできます。

    • このイメージ バージョンのサポートは(特定の日時)に終了します。環境イメージは、完全なサポート期間の終盤に近づいています。

    • このバージョンは(特定の日時)現在サポートされていません。環境は完全なサポート期間を超えています。

gcloud

この機能は Google Cloud CLI では使用できません。代わりに、利用可能なアップグレードを表示して、利用可能な新しいバージョンを確認できます。

API

この機能は API では使用できません。代わりに、利用可能なアップグレードを表示して、利用可能な新しいバージョンを確認できます。

利用可能なアップグレードを表示する

アップグレードできる Cloud Composer のバージョンを表示するには、次の手順を行います。

コンソール

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  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 バージョンまたはビルドにプリインストールされているパッケージと競合していないか確認できます。

チェックにパスするとは、PyPI パッケージの依存関係が、現在のバージョンと指定したバージョンの間で競合していないことを意味します。ただし、他の理由でアップグレード オペレーションが成功しないこともあります。

コンソール

環境のアップグレード チェックを実行するには、次のようにします。

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

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

  3. [ENVIRONMENT CONFIGURATION] タブに移動して [イメージのバージョン] エントリを見つけ、[アップグレード] をクリックします。

  4. [環境バージョンのアップグレード] ダイアログの [新しいバージョン] プルダウン リストで、アップグレードする Airflow のバージョンまたはビルドを選択します。

  5. [PyPI packages compatibility] セクションで、[Check for conflicts] をクリックします。

  6. チェックが完了するまで待ちます。PyPI パッケージの依存関係の競合がある場合、表示されるエラー メッセージに競合するパッケージとパッケージのバージョンの詳細が表示されます。

gcloud

環境のアップグレードチェックを実行するには、アップグレードする Airflow のバージョンまたはビルドで environments check-upgrade コマンドを実行します。

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

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

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

例:

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --airflow-version airflow-2.9.3-build.7

出力例:

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.9.3-build.7. 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 Console で [環境] ページに移動します。

    [環境] に移動

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

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

  4. [イメージのバージョン] 項目を見つけて [アップグレード] をクリックします。

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

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

gcloud

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

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

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

次に例を示します。

gcloud composer environments update
  example-environment \
  --location us-central1 \
  --airflow-version airflow-2.9.3-build.7

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

Terraform

config.software_config ブロックの image_version フィールドは、環境の Airflow バージョンとビルドを制御します。このフィールドには、新しい 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 = "airflow-2.9.3-build.7"
    }
  }
}

次のステップ