gpt4 book ai didi

flask - Kubernetes : Session invalidated when using ELB 上的 PGadmin4

转载 作者:行者123 更新时间:2023-12-03 16:02:31 25 4
gpt4 key购买 nike

PGAdmin4 有一个奇怪的问题。

我的设置

  • pgadmin 4.1 部署于 kubernetes使用 chorss/docker-pgadmin4图片。一个 POD 仅用于简化故障排除;
  • Nginx ingress controller作为集群上的反向代理;
  • Classic ELB在前面对集群上的传入流量进行负载平衡。

ELB <=> NGINX <=> PGADMIN

从 DNS 的角度来看,pgadmin 的主机名是指向 ELB 的 CNAME。

问题

应用程序可以正确访问,用户可以登录并且一切正常。问题是,在几(大约 2-3)分钟后, session 失效,用户被要求再次登录。无论是否积极使用 pgadmin,都会发生这种情况。

经过无数个小时的排查,我发现问题出在ELB的CNAME的DNS解析切换到另一个IP地址时。

其实我试过:

  • 通过连接到 k8s service 直接连接到 pod直接的节点端口 => session 不会过期;
  • 正在连接到 nginx (绕过 ELB)直接 => session 不会过期;
  • 在我的主机文件中映射 ELB 的 IP 地址之一 => session 不会过期。

鉴于上述测试,我得出结论,在我的主机名的远程地址更改后,Flask 应用程序(PGAdmin4 显然是一个 Python Flask 应用程序)认为我的 cookie 无效。

有哪位 Flask 开发人员可以帮我解决这个问题?关于我可能遗漏的东西还有其他想法吗?

最佳答案

PGadmin 4 似乎使用 Flask-Security 进行身份验证:

pgAdmin utilised the Flask-Security module to manage application security and users, and provides options for self-service password reset and password changes etc.

https://www.pgadmin.org/docs/pgadmin4/dev/code_overview.html

Flask-Security 似乎使用 Flask-Login:

Many of these features are made possible by integrating various Flask extensions and libraries. They include: Flask-Login ...

https://pythonhosted.org/Flask-Security/

Flask-Login 似乎有一个叫做“ session 保护”的特性:

When session protection is active, each request, it generates an identifier for the user’s computer (basically, a secure hash of the IP address and user agent). If the session does not have an associated identifier, the one generated will be stored. If it has an identifier, and it matches the one generated, then the request is OK.

https://flask-login.readthedocs.io/en/latest/#session-protection

我假设设置 login_manager.session_protection = None 会解决问题,但不幸的是我不知道如何在 PGadmin 中设置它。希望它能以某种方式帮助你。

关于flask - Kubernetes : Session invalidated when using ELB 上的 PGadmin4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54634369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com