为 Kubernetes 中的 Keycloak 指定重定向和内部查找的备用 URL
Posted
技术标签:
【中文标题】为 Kubernetes 中的 Keycloak 指定重定向和内部查找的备用 URL【英文标题】:Specify alternate URL for redirect and internal lookups for Keycloak in Kubernetes 【发布时间】:2020-12-23 18:28:59 【问题描述】:所以我有一个 spring boot 应用程序,它被部署为 Kubernetes 中的一个 pod。我还有一个在 Kubernetes 中运行的 Keycloak 服务器(相同的命名空间)。我在通过本地计算机上的浏览器登录应用程序时遇到问题。
所以我指定了auth-server-url=http://keycloak-service-name:8080/auth
,这样我的 pod 就可以访问它,它也可以。当我尝试登录我的应用程序时出现问题,因为它重定向到http://keycloak-service-name:8080/auth
,并且由于它是 Kubernetes 服务而无法在本地解决。
我也设置了入口,因此我尝试将身份验证 URL 指定为入口 http://keycloak-ingress/auth
,但随后我的 pod 无法访问它并收到错误“无法从...加载 URL”,因为它无法解决入口域。但是,我可以从浏览器访问入口。
我觉得我在这里遗漏了一些非常明显的东西,我需要某种在集群内和集群外都可以访问的 URL。或者也许有办法为我的应用程序正在执行的“加载 URL”的查找指定一个单独的 URL?
我设法让它工作的唯一方法是在外部公开服务并使用外部 IP 和端口,但这不是一个可接受的解决方案。
【问题讨论】:
【参考方案1】:我发现keycloak服务器中有一个前端URL参数。我将其设置为指向我的入口,并将 auth-server-url
设置为指向我的 keycloak 服务名称。这解决了我的问题,因为当我的应用程序在内部进行查找时它使用服务,但是当我访问前端时它使用入口。
【讨论】:
以上是关于为 Kubernetes 中的 Keycloak 指定重定向和内部查找的备用 URL的主要内容,如果未能解决你的问题,请参考以下文章
来自本地 kubernetes 集群的 Keycloak 端口转发
Keycloak、oauth2-proxy 和 nginx.ingress.kubernetes
尝试使用 helm 在 Kubernetes Pod 中启动时,Keycloak 崩溃