Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
このページでは、環境を新しい 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 または Airflow を以前のバージョンにダウングレードすることはできません。
Google Cloud コンソールでは、サポートされている最新バージョンの Cloud Composer にのみアップグレードできます。
Google Cloud CLI、API、Terraform では、環境をサポートされている最新バージョン、Cloud Composer の 3 つの以前のバージョン、以前のマイナー バージョンの最後のパッチ バージョン、アップグレード タイムラインが延長されたバージョンにアップグレードできます。他のバージョンの Cloud Composer にアップグレードすることはできません。たとえ、そのバージョンがまだサポートされていて、新しい環境の作成に使用できる場合でも同様です。
アップグレードするバージョンは、環境内の現在の Python バージョンをサポートしている必要があります。
Compute Engine API の割り当て上限により、アップグレードが妨げられることがあります。Google Cloud コンソールで、IAM と管理 > [割り当てとシステム制限] ページに移動し、CPU の Compute Engine API 割り当てを超過していないことを確認します。割り当てしきい値に近づいている場合は、アップグレード オペレーションを続行する前に割り当ての延長をリクエストしてください。
Cloud Composer または Airflow の別のメジャー バージョンにインプレースでアップグレードすることはできません。DAG と構成を環境間で手動で転送できます。詳しくは以下をご覧ください。
Airflow データベースに 16 GB を超えるデータが含まれている場合は、環境をアップグレードできません。アップグレード中に Airflow データベースのサイズが 16 GB を超えると、警告が表示されます。その場合、データベースのメンテナンスを実行して、データベースのサイズを減らします。
XCom メカニズムを使用してファイルを転送する場合は、Airflow のガイドラインに従って使用するようにしてください。XCom を使用して大きなファイルや大量のファイルを転送すると、Airflow データベースのパフォーマンスに影響し、スナップショットの読み込みや環境のアップグレード時に障害が発生する可能性があります。大量のデータを転送するには、Cloud Storage などの代替手段の使用を検討してください。
始める前に
必要に応じて環境を再作成できるように、環境の新しいスナップショットを作成することをおすすめします。
アカウントには、環境のアップグレード オペレーションをトリガーできるロールが必要です。また、環境のサービス アカウントには、アップグレード オペレーションを実行するための十分な権限を持つロールが必要です。詳細については、アクセス制御をご覧ください。
環境が最新であることを確認する
Cloud Composer では、環境イメージがサポート終了日に近づくと、警告が表示されます。これらの警告を利用して、環境のサポートを常に維持することができます。
Cloud Composer では、環境の基盤となる Cloud Composer イメージのバージョンを追跡します。サポート終了日に近づくと、環境のリストと [環境の詳細] ページに警告が表示されます。
環境が最新かどうかを確認するには、次のようにします。
コンソール
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 パッケージが、新しい Cloud Composer イメージにプリインストールされているパッケージと競合していないか確認できます。
チェックにパスするとは、PyPI パッケージの依存関係が、現在のバージョンと指定したバージョンの間で競合していないことを意味します。ただし、他の理由でアップグレード オペレーションが成功しないこともあります。
コンソール
環境のアップグレード チェックを実行するには、次のようにします。
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[ENVIRONMENT CONFIGURATION] タブに移動して [イメージのバージョン] エントリを見つけ、[アップグレード] をクリックします。
[環境バージョンのアップグレード] ダイアログの [新しいバージョン] プルダウン リストで、アップグレード先の Cloud Composer のバージョンを選択します。
[PyPI packages compatibility] セクションで、[Check for conflicts] をクリックします。
チェックが完了するまで待ちます。PyPI パッケージの依存関係の競合がある場合、表示されるエラー メッセージに競合するパッケージとパッケージのバージョンの詳細が表示されます。
gcloud
環境のアップグレード チェックを実行するには、アップグレードする Cloud Composer イメージのバージョンで environments check-upgrade
コマンドを実行します。
gcloud composer environments check-upgrade \
ENVIRONMENT_NAME \
--location LOCATION \
--image-version VERSION
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。VERSION
は、アップグレード後の新しい Cloud Composer イメージのバージョンに置き換えます。形式はcomposer-a.b.c-airflow-x.y.z
です。すべてのバージョンのエイリアスも使用できます。
例:
gcloud composer environments check-upgrade example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15
出力例:
Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-1.20.12-airflow-1.10.15. 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-a.b.c-airflow-x.y.z
形式)に置き換えます。
環境をアップグレードする
環境を Cloud Composer または Airflow の最新バージョンにアップグレードする方法は次のとおりです。
コンソール
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の環境の名前をクリックします。[環境の詳細] ページが開きます。
[環境の設定] タブに移動します。
[イメージのバージョン] 項目を見つけて [アップグレード] をクリックします。
[イメージのバージョン] プルダウン メニューから、アップグレード後の Cloud Composer のバージョンを選択します。
[アップグレード] をクリックします。
gcloud
gcloud composer environments update \
ENVIRONMENT_NAME \
--location LOCATION \
--image-version VERSION
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。VERSION
は、アップグレード後の新しい Cloud Composer イメージのバージョンに置き換えます。形式はcomposer-a.b.c-airflow-x.y.z
です。すべてのバージョンのエイリアスも使用できます。
次に例を示します。
gcloud composer environments update
example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15
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-1.20.12-airflow-1.10.15"
}
}
}
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"
}
}
}
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。LOCATION
は、環境が配置されているリージョン。 アップグレード後の新しい Cloud Composer イメージのバージョン(composer-a.b.c-airflow-x.y.z
形式)。すべてのバージョンのエイリアスも使用できます。
例:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
image_version = "composer-1.20.12-airflow-1.10.15"
}
}
}