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

Cloud Composer 1 | Cloud Composer 2

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

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

環境で使用している Airflow または Cloud Composer のバージョンを変更すると、環境がアップグレードされます。

アップグレードしても、環境内のリソース(環境のバケットの URL、Airflow ウェブサーバーなど)へどのように接続するかについては変わりません。

アップグレード中に Cloud Composer は、以下のことを行います。

  1. 新しいバージョンの Cloud Composer イメージを使用して環境のコンポーネントを再デプロイします。
  2. アップグレード前に環境内で Airflow 構成の変更(カスタム PyPI パッケージや Airflow 構成オプションのオーバーライドなど)が行われている場合は、それを適用します。
  3. 新しい Cloud SQL データベースを指定するため Airflow airflow_db 接続を更新します。

始める前に

  • アップグレードはプレビュー版です。この機能は本番環境では慎重に使用してください。

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

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

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

  • Cloud Composer は、任意のバージョンから最新バージョン、3 つの以前のバージョンの Cloud Composer、およびアップグレード タイムラインが延長されたバージョンにのみアップグレードできます。

  • Cloud Composer の最新バージョン以外のバージョンにアップグレードするには、Google Cloud CLI、API、Terraform を使用します。Google Cloud コンソールでは、最新バージョンにのみアップグレードできます。

  • Cloud Composer または Airflow の別のメジャー バージョンにインプレースでアップグレードすることはできません。DAG と構成を環境間で手動で転送できます。詳しくは以下をご覧ください。

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

  • アップグレードするバージョンの PyPI パッケージの一覧については、Cloud Composer のバージョンのリストをご覧ください。

  • Airflow データベースに 16 GB を超えるデータが含まれている場合は、環境をアップグレードできません。アップグレード中に Airflow データベースのサイズが 16 GB を超えると、警告が表示されます。その場合、データベースのメンテナンスを実行して、データベースのサイズを減らします。

  • アップグレードするイメージのバージョンは、環境内の現在の Python バージョンをサポートしている必要があります。

  • DAG が Airflow のバージョンとすべてのプロバイダ パッケージ(Google Cloud と Google サービスの Airflow プロバイダ パッケージを含む)と互換性があることを確認します。特定の Cloud Composer バージョンに含まれるプロバイダ パッケージのバージョンを確認できます。

  • Google Cloud コンソールで IAM と管理 > 割り当てとシステム制限ページに移動し、Compute Engine Engine API CPU の割り当てを超過していないことを確認します。割り当てしきい値に近づいている場合は、アップグレード オペレーションを続行する前に、割り当ての延長をリクエストします。

  • アップグレードは、公開されている最新の 3 つの Cloud Composer バージョン、または Cloud Composer のバージョンで説明されているように、「拡張アップグレード サポート」バージョンのいずれかにアップグレードできます。

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

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

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

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

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

コンソール

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

    [環境] に移動

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

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

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

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

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

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

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

利用可能なアップグレードを表示する

アップグレードできる Cloud Composer のバージョンを表示するには、次の手順を行います。

コンソール

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

    [環境] に移動

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

  3. [環境の構成] タブに移動し、[イメージ バージョンをアップグレード] をクリックします。

  4. 利用可能なバージョンの一覧については、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 パッケージが、新しい Cloud Composer イメージにプリインストールされているパッケージと競合するかどうかを確認できます。

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

Console

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

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

    [環境] に移動

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

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

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

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

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

gcloud

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

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

次のように置き換えます。

  • ENVIRONMENT_NAME を環境の名前にする。
  • LOCATION は、環境が配置されているリージョン。
  • COMPOSER_IMAGE は、アップグレード先の新しい Cloud Composer イメージのバージョンで置き換えます。形式は composer-a.b.c-airflow-x.y.z です。

例:

gcloud beta 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.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": "COMPOSER_IMAGE"
}

COMPOSER_IMAGE は、アップグレード先の新しい Cloud Composer イメージのバージョンに置き換えます(形式は composer-a.b.c-airflow-x.y.z)。

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

環境を Cloud Composer または Airflow の最新バージョンにアップグレードするには:

コンソール

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

    [環境] に移動

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

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

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

  5. [イメージのバージョン] プルダウン メニューからバージョンを選択します。

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

gcloud

gcloud beta composer environments update \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version COMPOSER_IMAGE

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

  • ENVIRONMENT_NAME を環境の名前にする。
  • LOCATION は、環境が配置されているリージョン。
  • COMPOSER_IMAGE は、アップグレード先の新しい Cloud Composer イメージのバージョンで置き換えます。形式は composer-a.b.c-airflow-x.y.z です。

次に例を示します。

gcloud beta 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 フィールドに、アップグレード先の新しい Cloud Composer イメージのバージョンcomposer-a.b.c-airflow-x.y.z の形式で指定します。

次に例を示します。

// PATCH https://composer.googleapis.com/v1beta1/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 = "COMPOSER_IMAGE"
    }
  }
}

次のように置き換えます。

  • ENVIRONMENT_NAME を環境の名前にする。
  • LOCATION は、環境が配置されているリージョン。
  • COMPOSER_IMAGE は、アップグレード先の新しい 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"
    }
  }
}

次のステップ