LoginSignup
1
0

AirflowのDockerイメージにgcloud SDKを追加する。

Last updated at Posted at 2024-03-21

モチベーション

airflowをdockerコンテナ上で動かしたい。
コンテナの中にあらかじめgcloud SDKを入れておきたい。

環境

Ubuntu(WSL)

Dockerfile

FROM apache/airflow:2.8.1
USER root
RUN sudo apt-get update \
     && sudo apt-get install apt-transport-https ca-certificates gnupg curl
RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list \
     && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg \
     && apt-get update -y \
     && apt-get install google-cloud-sdk -y
USER airflow

シンプルに、airflowのイメージをもとに、gcloud SDKの公式ドキュメントに基づいてインストール作業を追加しています。
上記はDebian/Ubuntu用のコードですので、他のOSについてはGoogle公式ドキュメントを参照してください。

インストール後

公式ドキュメントでは、

gcloud init

するように指示がありますが、airflowをユーザーアカウントで稼働させる事はないと思うので、ひとまず必要ありません。
GCのサービスにairflowからアクセスする際に認証が必要ですが、その認証はサービスアカウントの権限借用で行うことになります。

airflowは(docker-compose.yamlを通じて)下記のように複数のサービスが構成されます。

  • airflow-scheduler
  • airflow-worker
  • airflow-triggerer
  • airflow-webserver
  • airflow-redis
  • airflow-postgres

実際にはサフィックスとして「-1」などの番号が打たれます。また、redisやpostgresなどは採用するDBによって異なります(…とはいえ多くの場合はredisとpostgresではないでしょうか)。
このうち、ADC(デフォルト認証)が必要になるのは、

  • scheduler
  • worker
  • triggerer
  • webserver

の2つのようです。(workerだけでいいように思いましたが、実際には他のサービス(サーバー)でもADCを設定しないとDAGがうまく動きませんでした。)

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0