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

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

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

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

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

コンソール

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

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

コンソール

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

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

    [環境] に移動

  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-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 の最新バージョンにアップグレードする方法は次のとおりです。

コンソール

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

    [環境] に移動

  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-1.20.12-airflow-1.10.15

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-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"
    }
  }
}

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

例:

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"
    }
  }
}

次のステップ