问题描述
我正在尝试将Kubernetes Dashboard UI嵌入到iFrame中。我能够看到登录页面,但是当我尝试通过提供令牌登录时,它不会加载仪表板,而我将停留在登录页面本身上。我怀疑它必须与CORS和Access-Control-Allow-Origin设置有关。
有人可以告诉我如何进行正确的配置,以便我可以在iFrame中访问Kubernetes仪表板UI。我可以在没有iFrame的情况下完美访问UI
在iFrame中,通过iFrame登录时,我在Javascript控制台中收到以下错误消息
“jweToken” has been rejected because it is in a cross-site context and its “SameSite” is “Lax” or “Strict”.
解决方法
您可以添加一个入口以公开仪表板服务,并添加CORS批注以允许更多来源(https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#enable-cors)。请注意,如果您使用的是仪表板的掌舵图,它已经包含一个入口,因此您可以使用ingress.annotations
值直接添加注释。
还有其他一些解决方案:
- 修改apiserver的命令行以允许您使用它的来源(请参见https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/),但这会带来一定的风险,因为您将更改整个API的策略。
- 添加一个非常简单的部署来代理仪表板(使用nodejs,您可以只用几行代码构建代理),但这需要您自己的一些代码。