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 ビルドがサポート終了日に近づくと、警告が表示されます。これらの警告を使用して、常に環境をサポート状態を維持し続けることができます。
Cloud Composer は、環境の基盤となる Airflow のバージョンとビルドを追跡しています。サポート終了日に近づくと、環境のリストと [環境の詳細] ページに警告が表示されます。
環境が最新かどうかを確認するには、次のようにします。
コンソール
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[イメージのバージョン] フィールドに、次のいずれかのメッセージが表示されます。
最新の使用可能なバージョン。環境イメージが完全にサポートされます。
新しいバージョンがあります。環境イメージが完全にサポートされ、新しいバージョンにアップグレードできます。
このイメージ バージョンのサポートは(特定の日時)に終了します。環境イメージは、完全なサポート期間の終盤に近づいています。
このバージョンは(特定の日時)現在サポートされていません。環境は完全なサポート期間を超えています。
gcloud
この機能は Google Cloud CLI では使用できません。代わりに、利用可能なアップグレードを表示して、利用可能な新しいバージョンを確認できます。
API
この機能は API では使用できません。代わりに、利用可能なアップグレードを表示して、利用可能な新しいバージョンを確認できます。
利用可能なアップグレードを表示する
アップグレードできる Cloud Composer のバージョンを表示するには、次の手順を行います。
コンソール
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の構成] タブに移動し、[イメージ バージョンをアップグレード] をクリックします。
利用可能なバージョンの一覧については、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 パッケージの依存関係が、現在のバージョンと指定したバージョンの間で競合していないことを意味します。ただし、他の理由でアップグレード オペレーションが成功しないこともあります。
コンソール
環境のアップグレード チェックを実行するには、次のようにします。
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[ENVIRONMENT CONFIGURATION] タブに移動して [イメージのバージョン] エントリを見つけ、[アップグレード] をクリックします。
[環境バージョンのアップグレード] ダイアログの [新しいバージョン] プルダウン リストで、アップグレードする Airflow のバージョンまたはビルドを選択します。
[PyPI packages compatibility] セクションで、[Check for conflicts] をクリックします。
チェックが完了するまで待ちます。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 の新しいバージョンまたはビルドにアップグレードするには:
コンソール
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[イメージのバージョン] 項目を見つけて [アップグレード] をクリックします。
[イメージのバージョン] プルダウン メニューから、アップグレードする Airflow のバージョンまたはビルドを選択します。
[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
environments.patch
API リクエストを作成します。このリクエストで次のように操作します。
updateMask
パラメータで、config.softwareConfig.imageVersion
マスクを指定します。リクエストの本文の
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"
}
}
}
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。 アップグレード先の新しい Airflow バージョンとビルド(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.9.3-build.7"
}
}
}