所以我有一个spring-boot应用程序,它被部署为Kubernetes中的pod。我还有一个运行在Kubernetes(相同名称空间(中的Key斗篷服务器。我遇到了通过本地机器上的浏览器登录应用程序的问题。
所以我指定了auth-server-url=http://keycloak-service-name:8080/auth
,这样我的pod就可以访问它,它也可以。当我尝试登录到我的应用程序时,问题就出现了,因为它重定向到http://keycloak-service-name:8080/auth
,而这无法在本地解决,因为它是Kubernetes服务。
我还设置了ingress,所以我尝试将auth URL指定为ingresshttp://keycloak-ingress/auth
,但随后我的pod无法访问它,并得到一个错误";未能从加载URL"因为它不能解析入口域。但是,我可以从浏览器访问入口。
我觉得我在这里错过了一些非常明显的东西,我需要某种可以访问集群内pod和集群外pod的URL。或者,也许有某种方法可以指定一个单独的URL用于我的应用程序正在进行的查找;加载URL的";?
我设法做到这一点的唯一方法是从外部公开服务并使用外部IP和端口,但这不是一个可接受的解决方案。
我发现密钥斗篷服务器中有一个前端URL参数。我将其设置为指向我的入口,并将auth-server-url
设置为指向密钥斗篷服务名称。这解决了我的问题,因为当我的应用程序在内部进行查找时,它会使用服务,但当我访问前端时,它使用入口。