😺

デフォルトのCloud ComposerからPrivate IP環境のCloud Composerに移行する

2024/04/07に公開

以前にCloud ComposerのプライベートIPネットワークについてのまとめを書きました。今回はすでに作成してしまったデフォルトのCloud ComposerからプライベートIP環境のCloud Composerに移行する方法について書きます。

DAGのデプロイ

DAGファイルをGitHub等でコード管理している場合は以下のように新しいCloud Composer環境(composer-private)にDAGをデプロイします。

gcloud config set project PROJECT_ID

find "./dags" -maxdepth 1 -mindepth 1 -not -name "__pycache__" | xargs -I{} \
    gcloud composer environments storage dags import \
        --environment composer-private \
        --project PROJECT_ID \
        --location asia-northeast1 \
        --source {}

Variablesの設定

既存のCloud ComposerからVariablesをエクスポートする方法がないため、別途variables.jsonを用意するか、Cloud ComposerのVariables設定画面から一つずつ設定する必要があります。

もし、variables.jsonが手元にある場合は、Airflow UIの List Variablesから「Import Variables」とクリックしてvariables.jsonをインポートできます。

Connectionsの設定

以下のコマンドでConnectionsの設定を標準出力できるため、バックアップを取得できます。

gcloud composer environments run composer-private \
  --project PROJECT_ID \
  --location asia-northeast1 \
  connections -- export - | jq .

しかし、Variablesと異なり、Airflow UIからConnectionsの設定をインポートする方法はないため、手動で設定する必要があります。

以下は、例としてSalesforceへのConnectionsを設定するコマンドです。

my_salesforce はConnections IDです。

gcloud composer environments run composer-private \
  --project PROJECT_ID \
  --location asia-northeast1 \
  connections -- add \
  --conn-type http \
  --conn-host https://my.salesforce.com \
  --conn-login xxxxxx \
  --conn-password <パスワード> \
  --conn-extra '{"security_token": "<セキュリティトークン>"}' \
  my_salesforce

# 確認
gcloud composer environments run composer-private \
  --project PROJECT_ID \
  --location asia-northeast1 \
  connections -- get my_salesforce \
  -o yaml

新旧Cloud Composer環境の入れ替え

新しいCloud Composer環境の設定が完了したら、旧環境のDAGを無効化、新環境のDAGを有効化していきます。
いきなりすべてのDAGを新環境に移行するのではなく、一つずつ移行していくことをおすすめします。

まとめ

Cloud ComposerおよびAirflowの移行に関するドキュメントや情報が少ないので試行錯誤が多いのと、Variables・Connectionsの移行を手動で行う必要があるため、手間がかかることに注意が必要です。

Discussion