Cloud Composer 1 | Cloud Composer 2
このページでは、環境を新しい 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 コンポーネントを再デプロイします。たとえば、新しいバージョンには、このバージョンの Airflow オープンソース プロジェクトによって提供される、さまざまなバージョンのプリインストール済みパッケージ、Cloud Composer からのパッチ、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 タスクが中断されることはありません。アップグレードにより、環境モニタリングなどの環境のインフラストラクチャ コンポーネントが短時間使用できなくなる場合があります。
始める前に
アップグレードはプレビュー版です。この機能は本番環境では慎重に使用してください。
特定のバージョンに含まれるプロバイダ パッケージのバージョンを確認できます。変更の詳細については、リリースノートをご覧ください。
以前のバージョンの Airflow にダウングレードすることはできません。
必要に応じて環境を再作成できるように、環境の新しいスナップショットを作成することをおすすめします。
最新バージョン以外のバージョンにアップグレードするには、Google Cloud CLI、API、または Terraform を使用します。Google Cloud コンソールでは、最新バージョンにのみアップグレードできます。
環境のアップグレード オペレーションをトリガーできるロールを付与されている必要があります。また、環境のサービス アカウントには、アップグレード オペレーションを実行するための十分な権限を持つロールが必要です。詳細については、アクセス制御をご覧ください。
アップグレードするバージョンの PyPI パッケージの一覧については、バージョンのリストをご覧ください。
Airflow データベースに 16 GB を超えるデータが含まれている場合は、環境をアップグレードできません。アップグレード中に Airflow データベースのサイズが 16 GB を超えると、警告が表示されます。その場合、データベースのメンテナンスを実行して、データベースのサイズを減らします。
アップグレードするイメージのバージョンは、環境内の現在の Python バージョンをサポートしている必要があります。
環境が最新であることを確認する
Cloud Composer では、環境の Airflow ビルドがサポート終了日に近づくと、警告が表示されます。 これらの警告を使用して、常に環境をサポート状態を維持し続けることができます。
Cloud Composer は、環境の基盤となる Airflow のバージョンとビルドを追跡しています。サポート終了日に近づくと、環境のリストと [環境の詳細] ページに警告が表示されます。
環境が最新かどうかを確認するには、次のようにします。
コンソール
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[イメージのバージョン] フィールドに、次のいずれかのメッセージが表示されます。
最新の使用可能なバージョン。環境イメージが完全にサポートされます。
新しいバージョンがあります。環境イメージが完全にサポートされ、新しいバージョンにアップグレードできます。
このイメージ バージョンのサポートは(特定の日時)に終了します。環境イメージは、完全なサポート期間の終盤に近づいています。
このバージョンは(特定の日時)現在サポートされていません。環境は完全なサポート期間を超えています。
gcloud
この機能は、Google Cloud CLI では使用できません。代わりに、利用可能なアップグレードを表示できます。ここでは、利用可能な新しいバージョンが表示されます。
API
API ではこの機能を使用できません。代わりに、利用可能なアップグレードを表示できます。ここでは、利用可能な新しいバージョンが表示されます。
利用可能なアップグレードを表示する
アップグレードできる Cloud Composer のバージョンを表示するには、次の手順を行います。
コンソール
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の構成] タブに移動し、[イメージ バージョンをアップグレード] をクリックします。
利用可能なバージョンの一覧については、Cloud Composer の [イメージのバージョン] プルダウン メニューをクリックしてください。
gcloud
gcloud beta composer environments list-upgrades \
ENVIRONMENT_NAME \
--location LOCATION
次のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。
例:
gcloud beta 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 beta composer environments check-upgrade \
ENVIRONMENT_NAME \
--location LOCATION \
--airflow-version VERSION
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。VERSION
は、アップグレード先の新しい Airflow バージョンとビルドに置き換えます。形式はairflow-x.y.z-build.t
です。 すべてのバージョンのエイリアスを使用することもできます。
例:
gcloud beta composer environments check-upgrade example-environment \
--location us-central1 \
--airflow-version airflow-2.7.3-build.0
出力例:
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.0. Operation [projects/example-project/locations/
us-central1/operations/04d0e8b2-...]...done.
...
Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1beta1.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 beta composer environments update \
ENVIRONMENT_NAME \
--location LOCATION \
--airflow-version VERSION
次のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。VERSION
は、アップグレード先の新しい Airflow バージョンとビルドに置き換えます。形式はairflow-x.y.z-build.t
です。 すべてのバージョンのエイリアスを使用することもできます。
次に例を示します。
gcloud beta composer environments update
example-environment \
--location us-central1 \
--airflow-version airflow-2.7.3-build.0
API
environments.patch
ベータ版の API リクエストを作成します。このリクエストで次のように操作します。
updateMask
パラメータで、config.softwareConfig.imageVersion
マスクを指定します。リクエスト本文の
imageVersion
フィールドに、アップグレードする新しいバージョンを指定します。
次に例を示します。
// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.imageVersion
{
"config": {
"softwareConfig": {
"imageVersion": "composer-3-airflow-2.7.3-build.0"
}
}
}
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.7.3-build.0"
}
}
}