デフォルトのCloud ComposerからPrivate IP環境のCloud Composerに移行する
以前に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