keycloak~LB到Ingress再到K8s的路径问题
问题的产生
对于我们的容器化部署项目keycloak来说,当它从云端负载均衡LB直接通过 NodePort转发到keycloak时,没有任务问题,一切正常;缺点就是,运维人员要维护一大批端口,哪个端口对应哪个服务,非常容易出乱子。
问题的解决
只要你不放弃,任何问题都可以解决,前提是不要走死胡同,因为你的方式可能是错误的,需要多尝试。
- 所以,我们找到了不需要配置很多不同端口的方法,就是使用k8s-ingress来解决这个问题,我们用的是ingress/nginx,事实上,ingress也可以选择Treafik、Nginx、HAProxy、Istio,Kong等等集成的。
- 最开始,在接入ingress时,非keycloak的服务,如springboot,springcloud这些应用,通过ingress进行转发是没有任何问题的、如keycloak在接入ingress时,出现了https加载http资源问题,包含登录表单的地址,也都是http的,没有被重写成https,中途找了很多方法,包含修改源代码,但后来觉得修改源码风险太大,而且一个一个坑下来使我改变了主意,还是在goole和keycloak issue上找到了更好的答案,架构如图:
k8s编排中添加环境变量
env:
- name: PROXY_ADDRESS_FORWARDING #接收反向代码的Forwarded-For
value: "true"
- name: KEYCLOAK_FRONTEND_URL #解决ingress处理http地址问题
value: "https://final.test.com/auth"
合集:
kubernetes
分类:
kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2021-02-23 java~和.net相通的DES-ECB加解密技术
2021-02-23 java的byte和C#的byte的不同之处
2012-02-23 解决COOKIES存储中文乱码的问题
2012-02-23 MVC中一个表单实现多个提交按钮(一个action搞定添删改)