我们目前正在使用 keycloak 作为非常简单的用例,该用例为 kubernetes 上 nginx 入口控制器后面的 Apis 集启用 Oauth2 客户端凭证授予。
Keycloak 运行良好,因为我们可以使用控制台来创建客户端、范围并映射到特定的资源服务器。
但是我们一直困扰的是如何管理 keycloak 更改?我们严重依赖 gitops 和 argocd 来部署 kubernetes 更改。使用 keycloak 操作符,它仅支持导入。(从文档来看,似乎它甚至不支持更新)。此外,我们有多个环境,理想情况下,我们可以将其编码并将更改从较低的环境移动到较高的环境。
答案1
使用 Keycloak 来管理 ArgoCD 的 Gitops 工作流中的更改可能具有挑战性,因为使用 Keycloak 运算符和 API 专注于导入配置存在一些限制。
您可以尝试以下建议:
- 尝试存储外部配置
将 Keycloak 配置(例如客户端、角色和映射)存储在 Keycloak Operator 清单之外的 YAML 文件中。
使用 ArgoCD 与其他 Kubernetes 配置一起管理这些 YAML 文件。
利用 keycloak-operator-client 等工具或自定义脚本,通过 REST API 将这些配置动态应用于 Keycloak。这允许进行精细控制和更新,而不仅仅是导入。
- 您可以尝试自定义 Keycloak Operator:
考虑贡献或分叉 Keycloak Operator 以合并更新功能。
这需要熟悉Go和操作符框架。
或者,探索现有的社区分支或可扩展运营商功能的工具。