Superset Kubernetesへの導入

1715 ワード

最近、SupersetをKubernetesに配備し、WebサイトがHTTPSセキュリティ設定を構成する必要がある.Supersetの公式ドキュメントといくつかのコミュニティの討論を調べた後、Supersetを2ステップ構成する必要がある.
1.HTTPエージェントサービス構成
まずSupersetはK 8 S環境においてload balancerとX-Forwarded-For/X-Forwarded-Proto headersを併用ため、これらのheadersを取得および使用するためにENABLE_PROXY_FIX = Trueを設定必要がある.
If the load balancer is inserting X-Forwarded-For/X-Forwarded-Proto headers, you should set ENABLE_PROXY_FIX = True in the superset config file to extract and use the headers.
ソースコードを確認すると、ENABLE_PROXY_FIX = Trueは実際にProxyFixミドルウェアを追加しています.
if app.config.get('ENABLE_PROXY_FIX'):
    app.wsgi_app = ProxyFix(app.wsgi_app)

ProxyFixのソースコードの説明を見ると、X-forworded headersを抽出することによってREMOTE_ADDRHTTP_HOSTの2つの環境変数を設定ことで、アプリケーションがWSDI環境変数を直接得ることができることが明らかになった.
上のステップを設定すると、httpsのsupersetホームページを入力すると、いつも私のリクエストredirectをhttpのアドレスにして、正常に使用できないという問題が発生します.よく研究すると、supersetが起動するときにgunicornをWSDI HTTPサーバーとして使用することが分かった.したがってgunicornのパラメータも設定.
2.gunicorn forwarded-allow-ipsの設定
supersetがload balancer(nginxまたはELB)で実行する場合、gunicornにどのX-Forwarded-*headersが信頼できるかを教える必要がある.一連の信頼できるIPアドレスは、--forwarded-allow-ipsを設けることにより設定.
forwarded-allow-ipsは*説明のすべてのIPアドレスを信頼するように設定、カンマで区切ることで指定したIPをリストすることもできる.superset runserverコマンドでは--forwarded-allow-ipsの指定がサポートされていないため、supersetの起動スクリプトを最後に追加します.
gunicorn --workers 16 \
    --timeout 60 \
    --bind  0.0.0.0:8080 \
    --limit-request-line 0 \
    --limit-request-field_size 0 \
    --forwarded-allow-ips="*" superset:app

Reference: https://github.com/apache/incubator-superset/issues/978