kubernetes - 在 Ingress-Nginx 上接收请求后,如何使用 Keycloak(用于身份验证/授权)作为中间件?
问题描述
我在 MiniKube 上的测试 kubernetes 集群中部署了几个微服务,根据 ingress-nginx 控制器中定义的规则路由请求;因此,对于如何将 Keycloak 添加为这些微服务的身份验证/授权服务,我几乎没有疑问,这样我就可以实现以下场景:
请求 Microservice-1 (ms1):- (ms1.example.com/) :-
- 请求 -> ingress-nginx-> Keycloak ->(如果经过身份验证和授权)-> microservice-1
- 请求 -> ingress-nginx-> Keycloak ->(如果未经过身份验证)-> 重新登录
- 请求 -> ingress-nginx-> Keycloak ->(如果未授权)-> 给出禁止响应
^我想用一些 microservice-2 和 microservice-3 来实现类似的事情,其中 microservice-2 和 microservice-3 是内部服务,只能通过 microservice-1 访问,前提是请求者对其请求具有授权权限。
目前的工作方式:-(没有身份验证/授权):-
- 请求->入口-nginx->微服务-1
- 请求 -> ingress-nginx-> microservice-1 -> microservice-2
- 请求-> ingress-nginx-> keycloak
进一步的问题:
- 我如何实现这些场景并将我的 keycloak 与 ingress-nginx 控制器绑定,以便它检查在 ingress-nginx 上收到的请求并将它们转发给服务,如果它们有效,如果它们不是则失败?
- 我目前在 kubernetes 中直接使用来自 jboss 的 keycloak 映像,然后直接通过 UI 进行配置,所以我需要 Keycloak 网关还是什么?因为我没有真正理解它的目的。
- 这是正确的方法吗?或者你能建议我做一些更好/更合乎逻辑的事情吗?
我真的需要建设性的反馈以及我的问题的答案,因为如果这个实验有效,我想在 GCP 或使用 KubeAdm 的本地 VM 上设置的多节点中进行类似的部署。因此,我们将不胜感激对这个问题的任何帮助。
(注意:请记住,作为一个整体,我在 Kubernetes 和 DevOps 方面还比较陌生,所以健康的建设性反馈会真正激励我,对我的成长很有帮助)
提前非常感谢。
解决方案
推荐阅读
- wpf - Wpf 应用程序作为单个可执行文件
- ios - 在 iOS 中运行 UI 测试时如何在应用程序中打断点?
- github - 成功克隆并推送了一个分叉的 repo,在 Github 上无法读取
- javascript - Firestore 不工作似乎离线工作
- django - django 2.1 复选框selectmultiple
- hyperlink - AG Grid / Angular 6 - 尝试用两列呈现超链接
- vue.js - 在 Vue 应用程序中创建一个类的单个实例
- wpf - 使用数据注释进行 WPF 验证
- ios - iOS SwiftLocation 库:如何从位置获取地标?
- r - 在概率上拟合二项式 GLM(即使用逻辑回归进行回归而不是分类)