GAミント至上主義

Web Monomaniacal Developer.

AirflowのwebserverでLBを通すとhttpにリダイレクトされてしまう問題

Cloud Composerを使わず、GKEでAirflowを構築し、ロードバランサーGCP HTTPS Load Balancer+Google管理の証明書を使用した。

通常の管理画面表示には問題なかったものの、VariablesなどのPOST系のアクションをすると、http接続に戻ってしまう問題があった。

どうやら、LBがSSLを行い、webserver側にはhttpで通信しているため、そちらに戻してしまうようだった。
github.com


下記のenable_proxy_fixを使えば大丈夫だった。
https://airflow.apache.org/docs/stable/howto/run-behind-proxy.html

cfgファイルで行う場合は下記のように入れる。

airflow.cfg

[webserver]
enable_proxy_fix = True


今回はローカルはそのままにしておきたかったので、k8s環境変数で設定する方式を利用した。

k8s deploymentのyaml抜粋

  template:
    metadata:
      creationTimestamp: null
      labels:
        app: airflow
        tier: webserver
    spec:
      containers:
      - args:
        - webserver
        env:
        - name: AIRFLOW__WEBSERVER__ENABLE_PROXY_FIX