为 Kubernetes 中的 Keycloak 指定备用 URL 用于重定向和内部查找
Specify alternate URL for redirect and internal lookups for Keycloak in Kubernetes
所以我有一个 spring 引导应用程序,它在 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 无法访问它并收到错误“无法加载 URLs from ...”,因为它无法解析入口域。但是,我可以从我的浏览器访问入口。
我觉得我在这里遗漏了一些非常明显的东西,我需要某种 URL 集群内和集群外的 pod 都可以访问的东西。或者也许可以通过某种方式为我的应用程序正在执行的查找指定一个单独的 URL 以“加载 URL”?
我设法让它工作的唯一方法是在外部公开服务并使用外部 IP 和端口,但这不是一个可接受的解决方案。
我发现 keycloak 服务器中有一个前端 URL 参数。我将其设置为指向我的入口,并将 auth-server-url
设置为指向我的 keycloak 服务名称。这解决了我的问题,因为当我的应用程序在内部进行查找时它使用该服务,但是当我访问前端时它使用入口。
所以我有一个 spring 引导应用程序,它在 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 无法访问它并收到错误“无法加载 URLs from ...”,因为它无法解析入口域。但是,我可以从我的浏览器访问入口。
我觉得我在这里遗漏了一些非常明显的东西,我需要某种 URL 集群内和集群外的 pod 都可以访问的东西。或者也许可以通过某种方式为我的应用程序正在执行的查找指定一个单独的 URL 以“加载 URL”?
我设法让它工作的唯一方法是在外部公开服务并使用外部 IP 和端口,但这不是一个可接受的解决方案。
我发现 keycloak 服务器中有一个前端 URL 参数。我将其设置为指向我的入口,并将 auth-server-url
设置为指向我的 keycloak 服务名称。这解决了我的问题,因为当我的应用程序在内部进行查找时它使用该服务,但是当我访问前端时它使用入口。