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

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

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

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

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

  • Cloud Composer は、新しいバージョンの Cloud Composer イメージを使用して環境のコンポーネントを再デプロイします。

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

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

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

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

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

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

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

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

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

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

    • 最新バージョン: composer-2.11.5-airflow-*
    • 以前の Cloud Composer 2 の 3 つのバージョン: composer-2.11.4-airflow-*composer-2.11.3-airflow-*composer-2.11.2-airflow-*
    • 以前の Cloud Composer 2 のマイナー バージョンの最後のパッチ: composer-2.10.2-airflow-*
    • アップグレード タイムラインが延長された Cloud Composer 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 などの代替手段の使用を検討してください。

始める前に

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

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

  • プロジェクト内の環境に属する GKE クラスタの Compute Engine メタデータ エントリが表示されることがあります。GKE クラスタの作成とアップグレード中、Google Kubernetes Engine はプロジェクト レベルのメタデータ エントリ(google_compute_project_metadata)を自動的に追加して、セカンダリ IP アドレス範囲の使用状況を追跡します。これらのエントリは変更または削除しないでください。Google Kubernetes Engine はこれらを自動的に管理します。

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

Cloud Composer では、環境イメージがサポート終了日に近づくと、警告が表示されます。これらの警告を利用して、環境のサポートを常に維持することができます。

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

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

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

コンソール

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

    [環境] に移動

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

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

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

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

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

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

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

gcloud

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

API

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

推奨されるアップグレードを表示する

Cloud Composer には、環境をアップグレードできる Cloud Composer のバージョンの一覧が表示されます。

アップグレード用に推奨される 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 パッケージが、新しい Cloud Composer イメージにプリインストールされているパッケージと競合していないか確認できます。

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

コンソール

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

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

    [環境] に移動

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

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

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

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

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

gcloud

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

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

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

例:

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-2.14.4-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.14.4-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 形式)に置き換えます。

Cloud Composer 3 との競合を確認する

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 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 です。すべてのバージョンのエイリアスを使用できます。

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

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

コンソール

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

    [環境] に移動

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

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

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

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

  6. [アップグレード] をクリックします。

gcloud

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

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

次に例を示します。

gcloud composer environments update
  example-environment \
  --location us-central1 \
  --image-version composer-2.14.4-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.14.4-airflow-2.10.5"
      }
    }
  }

Terraform

config.software_config ブロックの image_version フィールドは、環境の Cloud Composer イメージを制御します。このフィールドでは、新しい Cloud Composer イメージを指定します。

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

次のステップ