Keycloak.X更新

2021年10月28日,星期四,斯蒂安·托格森发布

自从我们宣布有关Keycloak.X的计划以来已经有一段时间了,实际上已经两年了。 由于其他优先事项,我们有些分心,但现在终于全速前进了。

Keycloak.X将更轻,更快,更容易,更可扩展,更云原生,以及一堆其他东西。 期待伟大的到来!

作为Keycloak.X的一部分,我们不仅在进行代码更改,而且还将发生文化转变,Keycloak背后的团队将更多地关注用户体验和简单的代码交付可管理的解决方案。

将会有一些破坏性的变化,但我们将努力使每个人都尽可能容易地过渡。 对于突破性的变化,例如从WildFly迁移到Quarkus,我们计划提供6个月的时间进行迁移。

如果这还不够,还有红帽单点登录,这是Red Hat支持的Keycloak版本。 红帽单点登录7,它基于当前的Keycloak架构,支持直到2024年6月(目前为2023,但很快会2024年延长)。

我们将在未来跟进这篇博客文章,提供更多细节,但现在让我们看看Keycloak.X的一些亮点

亮点

经历

如前所述,您对Keycloak的体验将受到更多关注。 考虑到这一点,我们确定了一些经验,我们认为这些经验涵盖了各种不同的用例:

  • 应用开发者将Keycloak与应用程序和服务集成的开发人员

  • 定制器正在扩展Keycloak或与其他系统集成的开发人员

  • 桥梁使用Keycloak作为应用程序和其他身份解决方案之间的桥梁

  • 常规典型的中小型部署Keycloak

  • 超大尺寸弹性且高度可用的Keycloak部署,适用于非常大的用例

  • SaaS扩展到超大尺寸其中Keycloak启用SaaS、CIAM和B2C场景的身份

夸克斯

我们将改用Quarkus作为构建Keycloak的平台。 与WildFly相比,这提供了更快的启动时间和更低的内存占用空间。 它还提供了一种更简单的配置Keycloak的方法,它使用命令行参数和环境变量,而不是复杂的XML文件。 Quarkus的另一个重要方面是,它使我们对分发中包含的外部库有更多的控制,包括对依赖项的更快升级,这应该会大大改善CVEs周围的情况。

存储重新架构

作为Keycloak.X的一部分,我们正在对存储层进行重大的重新架构,以解决当前架构中发现的许多缺点。 零停机时间升级、可伸缩性和可用性将是此新架构的关键主题,并且从长远来看,将使支持其他存储类型变得更加容易。

操作员和集装箱

使用当前在Keycloak中进行配置的方法,在容器周围创建良好的体验是有问题的,因为容器必须从环境变量转换为复杂的XML配置文件。 随着我们围绕Quarkus所做的工作,配置带有环境变量的Keycloak成为一种原生的东西,使它更简单地提供一个伟大的容器体验。

类似地,操作员也可以变得更简单,因为它将更容易配置Keycloak,以及从基本分布 (从Zip分布到容器,最后到操作员) 具有更好的自理配置。 为了更多地对齐代码库,我们还使用Java SDK和Quarkus从头开始重写运算符。

可观察性

指标、跟踪、日志记录和健康检查都是云原生应用程序的重要方面。 这些都是在生产中管理和调试Keycloak的重要功能,尤其是在Kubernetes或OpenShift上运行时。

GitOps友好配置

在GitOps或CI/CD环境中,管理Keycloak中的运行时配置可能会出现问题。 由于所有配置 (例如领域和客户端) 都存在于数据库中,并且只能通过REST api进行管理,因此很难作为GitOps流程的一部分进行可靠的管理。

随着存储重新架构带来了一个非常强大的功能,可以联合来自多个来源的配置,我们计划利用这一优势与基于文件的存储,其中Keycloak可以从文件系统中读取更多的静态/不可变配置 (当然是YAML),并将其与来自DB的动态/可变配置相结合。

此外,这还可以检查Git存储库中的静态配置,并根据需要将其部署到开发,阶段和生产环境中。

外部集成

Keycloak今天有大量的延伸点,称为SPIs。 使用Java (在某些情况下为JavaScript),可以使用这些spi的自定义提供程序自定义Keycloak。 尽管功能强大且灵活,但这在以现代Kuberetes为中心的体系结构中并不理想。 由于扩展与Keycloak位于同一位置,因此很难部署,升级和扩展扩展。 扩展也不能用任何语言或框架编写,这使得非Java开发人员扩展Keycloak的成本更高。

考虑到这一点,我们计划更多地关注通过远程扩展与Keycloak进行扩展和集成的能力,并将REST,gRPC,Knative,Kafka等视为实现这一目标的工具。 此外,我们还希望达到一个点,我们可以有一个 “无头” 的Keycloak,允许前端以你想要的任何方式构建,这将为当前的主题方法定制UI带来很大的补充。

分解

最后但并非最不重要的一点。 我们还计划分解Keycloak的能力,并为Keycloak的代码库和功能带来更好的隔离。 我们不打算在这里使用完整的微服务体系结构,而是一个明智的折衷方案,允许所有内容作为单个流程运行,并能够将Keycloak的某些部分分离为外部服务。

路线图

您可以想象我们在Keycloak.X中计划的所有工作都是大量工作,不会在一夜之间发生。 我们首先关注的是突破性的变化,例如迁移到Quarkus和存储层的重新架构。

在这一点上,一切都还没有完全计划好,但是我们确实对何时相信Keycloak.X的各个组件将交付有所了解。

  • 尽快: Keycloak 16将是Quarkus发行版的最后预览,因此我们欢迎大家尝试一下,并为我们提供反馈

  • 2021年12月: 在Keycloak 17中,我们将完全支持Quarkus分布,并弃用WildFly分布。

  • 3月2022日: 在Keycloak 18中,我们的目标是包括新的运营商,并预览新的商店。 目前,我们还计划从代码库中删除WildFly支持。

  • 2022年6月: 只有Quarkus发行版的第一个发行版。 我们也希望在这一点上使新商店成为完全受支持的选项。

上面的日期可能有变化!

反馈

我们希望您对我们围绕Keycloak.X的计划提供反馈,所以请加入我们GitHub讨论讨论Keycloak的未来!