我正在尝试在 Azure AKS 中安装 pgAdmin(图像:“dpage/pgadmin4:6.21”)。当我使用 Kubernetes LoadBalancer 服务时,我能够访问该应用程序,但是当我使用带有 Ingress 的 Azure 应用程序网关时,登录页面显示正常。但是,登录后,它卡在加载页面上。
当我检查浏览器控制台时,发现以下错误:
拒绝从“https://somedomain.xyz.cloudapp.azure.com/pgadmin4/login?next=%2Fpgadmin4%2Fbrowser%2F”执行脚本,因为其 MIME 类型(“text/html”)不可执行,并且启用了严格的 MIME 类型检查。
我几乎可以肯定,该问题与 pgAdmin 安装无关,因为它已与 Kubernetes LoadBalancer 服务配合使用。我找到了一些解决方法,通过在 pgAdmin 脚本中添加几行代码来摆脱加载页面(因为它假设 pgAdmin 有错误),但我未能成功实施这些解决方法。
我也尝试过更改 Ingress 配置,但没有成功。有什么建议或方法可以追踪问题并找到根本原因吗?
入口实现:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pgadmin-ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/ssl-redirect: "false"
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "devaks-cert"
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
spec:
rules:
- http:
paths:
- path: /pgadmin4/*
pathType: ImplementationSpecific
backend:
service:
name: pgadmin
port:
number: 80
答案1
我们有一个类似的设置,其中 Azure 应用程序网关位于 AKS 上部署的 pgadmin 前面,更新以下配置可以为我们解决问题,创建了名为config_distro.py
X_CONTENT_TYPE_OPTIONS = "" # default value is nosniff
ENHANCED_COOKIE_PROTECTION = False
X_XSS_PROTECTION = "0" # default value is '1; mode=block'
有关这些配置的详细说明,请查看以下 URL https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html