PGAdmin4 に奇妙な問題があります。
私のセットアップ
pgadmin
kubernetes
イメージを使用して4.1 をデプロイしchorss/docker-pgadmin4
ます。トラブルシューティングを簡素化する 1 つの POD のみ。Nginx ingress controller
クラスターのリバース プロキシとして。Classic ELB
クラスタの受信トラフィックをロード バランシングします。
ELB <=> NGINX <=> PGADMIN
DNS の観点からは、pgadmin のホスト名は ELB に対する CNAME です。
問題
アプリケーションは正しく到達可能であり、ユーザーはログインでき、すべてが正常に機能します。問題は、数分 (およそ 2 ~ 3 分) 後にセッションが無効になり、ユーザーが再度ログインするように要求されることです。これは、pgadmin が積極的に使用されているかどうかに関係なく発生します。
数え切れないほどのトラブルシューティングを行った結果、ELB の CNAME の DNS 解決が別の IP アドレスに切り替わったときに問題が発生することがわかりました。
実際、私は試しました:
- のノードポートに直接接続することにより、ポッドに直接接続
k8s service
=> セッションは期限切れになりません。 - (ELB をバイパスして) 直接接続
nginx
=> セッションは期限切れになりません。 - hostsファイルでELBのIPアドレスの1つをマッピング=>セッションは期限切れになりません。
上記のテストを考えると、Flask アプリ (PGAdmin4 は明らかに Python Flask アプリケーションです) は、ホスト名のリモート アドレスが変更された後、Cookie が無効であると見なしていると結論付けます。
この問題を解決するのに役立つ Flask 開発者はいますか? 私が見逃しているかもしれない何かについての他のアイデアはありますか?