環境のアップグレード

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

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

  • Airflow のスケジューラとワーカーポッドを新しい Kubernetes の名前空間に再デプロイします。アップグレードの完了後に Airflow は新しい Cloud SQL データベースを使用します。そのデータベース名は Kubernetes 名前空間と一致します。DAG の実行履歴は保存されます。

  • 新しい Cloud SQL データベースを指定するため Airflow airflow_db 接続を更新します。

これらの変更は、どのように Pod にアクセスするか、および、どのように Cloud SQL データベースへ接続するかに影響を与えます。

  • アップグレード後に GKE クラスタの Pod にアクセスするには、名前空間を認識する kubectl コマンドを使用する必要があります。たとえば、クラスタ内の Pod を一覧表示するには、kubectl get pods -A を使用します。Pod でコマンドを実行するには、kubectl exec -n <NAMESPACE> ... を使用します。
  • SQL プロキシを直接参照する Airflow 接続とワークロードを使用する場合は、ホスト名の一部としてデフォルトの名前空間を使用します(airflow-sqlproxy-service ではなく、airflow-sqlproxy-service.default を使用する)。

Cloud Composer をアップグレードしても、環境内のリソースへどのように接続するかについては変わりません(Google Kubernetes Engine ノード VM IP アドレス、Cloud SQL インスタンス IP アドレス、Cloud Storage バケット、Airflow ウェブサーバーのドメイン名など)。

始める前に

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

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

  • アップグレード前に、すべての DAG を一時停止して進行中のタスクが終了するまで待機します。

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

  • アップグレード先の Cloud Composer と Airflow の組み合わせはいずれも、リリース バージョンである必要があります。

    • 利用可能なアップグレードについては、利用可能なアップグレードの表示をご覧ください。最新の機能と修正を取得するには、最新の Cloud Composer リリースへのアップグレードを検討してください。
    • サポート対象のバージョンの PyPI パッケージとカスタマイズの一覧については、Cloud Composer のバージョン リストをご覧ください。

      アップグレード前に、Airflow と Cloud Composer の現在のバージョンとアップグレード先のバージョンの違いを把握しておいてください。互換性のない変更を行うと DAG の破損の原因となる可能性があります。

制限事項

  • Cloud Composer や Airflow を以前のバージョンにダウングレードすることはできません。
  • Cloud Composer は、Airflow 1.10.* 環境から Airflow 2 環境への DAG と構成の手動転送をサポートします。Airflow 1.10.* がある環境では Airflow 2 へのインプレース アップグレードを行うことはできません。
  • 同じメジャー バージョンのうち最新の Cloud Composer バージョンにのみアップグレードできます(composer-1.12.4-airflow-1.10.10 から composer-1.13.0-airflow-1.10.10 など)。Cloud Composer メジャー バージョンは 1 から 2 に変更されるため、composer-1.4.0-airflow-1.10.0 から composer-2.0.0-airflow-1.10.0 へのアップグレードは行えません。
  • アップグレードするイメージのバージョンは、環境内の現在の Python バージョンをサポートしている必要があります。
  • Airflow データベースに 16 GB を超えるデータが含まれている場合は、環境をアップグレードできません。アップグレード中に、Airflow データベースのサイズが 16 GB を超えると、警告が表示されます。この場合は、データベース メンテナンスを実行して、データベース サイズを減らしてください。

サポート終了メッセージ

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

サポート終了のメッセージ

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

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

  1. Google Cloud Console で [環境] ページを開きます。

    [環境] ページを開く

  2. 環境の名前をクリックして、詳細を表示します。

  3. [環境の構成] で、[イメージのバージョン] フィールドを探します。

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

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

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

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

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

利用可能なアップグレードの表示

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

Console

  1. Google Cloud で [環境] ページを開きます。

    [環境] ページを開く

  2. 環境の [名前] をクリックします。

  3. [Environment Configuration] タブで [Upgrade Image Version] をクリックします。

  4. Cloud Composer の [イメージのバージョン] プルダウン メニューをクリックして、利用可能なバージョンの一覧を表示します。

gcloud

gcloud beta composer environments list-upgrades ENVIRONMENT_NAME \
    --location LOCATION 

ここで

  • ENVIRONMENT_NAME は、環境の名前です。
  • LOCATION は、環境が配置される Compute Engine のリージョンです。

例:

gcloud beta composer environments list-upgrades test-environment \
    --location us-central1
┌─────────────────────────────────────────────────────────────────────────────┐
│                              AVAILABLE UPGRADES                             │
├──────────────────────────────┬──────────────────┬───────────────────────────┤
│        IMAGE VERSION         │ COMPOSER DEFAULT │ SUPPORTED PYTHON VERSIONS │
├──────────────────────────────┼──────────────────┼───────────────────────────┤
│ composer-1.4.0-airflow-1.9.0 │ True             │ 2,3                       │
└──────────────────────────────┴──────────────────┴───────────────────────────┘

API

Cloud Composer REST API を使用して、利用可能なバージョンを表示するには、imageVersions.list API リクエストを作成し、projects/{projectId}/locations/{locationId} の形式でプロジェクトとロケーションを指定します。

次に例を示します。

GET https://composer.googleapis.com/v1/projects/test-project-id/locations/us-central1/imageVersions

{
  "imageVersions": [
    {
      "imageVersionId": "composer-1.4.2-airflow-1.10.0",
      "supportedPythonVersions": [
        "2",
        "3"
      ]
    },
    {
      "imageVersionId": "composer-1.4.2-airflow-1.9.0",
      "isDefault": true,
      "supportedPythonVersions": [
        "2",
        "3"
      ]
    }
  ]
} 

アップグレード前に 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 は、環境が配置される Compute Engine のリージョンに置き換えます。
  • COMPOSER_IMAGE は、アップグレード先の Cloud Composer イメージのバージョンに置き換えます。

例:

gcloud beta composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-1.16.6-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.16.6-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 イメージのバージョンに置き換えます。

Cloud Composer バージョンのアップグレード

環境で実行している Cloud Composer のバージョンをアップグレードするには、次の手順を行います。

Console

  1. Google Cloud で [環境] ページを開きます。

    [環境] ページを開く

  2. 変更する環境の [名前] をクリックします。

  3. [Environment Configuration] タブで [Upgrade Image Version] をクリックします。

  4. Cloud Composer の [イメージのバージョン] プルダウン メニューをクリックして、バージョンを選択します。

  5. [送信] をクリック

gcloud

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

ここで

  • ENVIRONMENT_NAME は、環境の名前です。
  • LOCATION は、環境が配置される Compute Engine のリージョンです。
  • VERSION は、環境で composer-a.b.c-airflow-x.y.z または composer-a.b.c-airflow-x.y の形式で使用する Cloud Composer バージョンと Airflow バージョンです。Airflow パッチを指定しない場合は、指定されたメジャー バージョンとマイナー バージョンに対して利用可能な最も高いパッチ バージョンが使用されます。

例:

gcloud beta composer environments update test-environment \
    --location us-central1 --image-version composer-latest-airflow-1.10.1 

API

Cloud Composer REST API を使用してアップグレードするには、environments.patch API リクエストを作成します。composer-a.b.c-airflow-x.y.z の形式でバージョンを指定します。

例:

PATCH https://composer.googleapis.com/v1beta1/projects/test-project/locations/us-central1/environments/test-environment?updateMask=config.software_config.image_version

リクエストの本文には、imageVersion が含まれています。

{
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-1.6.0-airflow-1.10.1"
    }
  }
}

Airflow バージョンのアップグレード

環境で最新の Cloud Composer バージョンを実行している場合は、Cloud SDK を使用して Airflow のバージョンのみをアップグレードできます。たとえば、composer-1.6.1-airflow-1.9.0 から composer-1.6.1-airflow-1.10.0 にアップグレードできます。

gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION --airflow-version VERSION

ここで

  • ENVIRONMENT_NAME は、環境の名前です。
  • LOCATION は、環境が配置される Compute Engine のリージョンです。
  • VERSION は、環境で x.y.z または x.y の形式で使用する Airflow のバージョンです。

例:

gcloud beta composer environments update test-environment \
--location us-central1 --airflow-version=1.10.1