概述
红帽® OpenShift® 帮助您开发并运行 Kubernetes 原生 Spring 和 Spring Boot 应用。
Kubernetes 支持 Spring 开发人员
Spring 应用可依靠 Kubernetes 和部署到它的功能来提供所需的云服务,从而支持在 Kubernetes 上进行高效开发。这包括消息队列、数据库、永久储存和缓存等服务。
服务注册表
微服务架构通常意味着单个服务的动态扩展,在私有云、混合云或公共云中,主机的数量和地址不可能一定能提前预测或静态配置。在 Kubernetes 中,服务复制和扩展是一个核心功能。这意味着客户端不需要保留缓存,也不需要说明服务注册表本身失败的原因。例如,Netflix Ribbon(通常与 Spring 应用一起使用)可通过声明性配置为使用 Kubernetes,而不是服务注册表,期间无需更改任何代码。
负载平衡
对于 Spring 应用中无状态服务的客户端调用,高可用性(HA)意味着可转换为从服务注册表查询服务的需求,并在可用的实例中进行负载平衡。Kubernetes 提供了一个单一的服务地址,系统将对调用进行负载平衡,并重定向到一个相应的实例。在 Kubernetes 集群中,该服务名称解析到这个集群 IP 地址,并可用于访问负载平衡器。如果调用来自外部并且不希望通过路由器,可以为该服务配置一个外部 IP 地址。
容错
微服务高度分散的性质意味着远程调用风险更高,因为此类远程调用的数目在增加。过去,实施容错模式(就像断路开关)的负担落在了开发人员身上。不过,类似 Istio(实施了服务网格)的项目可以减轻这一负担,让开发人员可以更好地控制集群上运维的 Spring 服务。
外部化配置
外部化配置管理解决方案可以为典型的配置文件、命令行参数和环境变量组合提供一个巧妙的备选方案,从而让应用更具可移植性,在响应外部变化时更灵活。Kubernetes ConfigMap 可用于存储详细信息,例如,具体的属性,也可用于存储粗略的信息,例如整个配置文件或 JSON blob。它们提供了将配置数据注入容器的相关机制,从而保证配置独立于 Spring 应用,但又可通过 @ConfigProperty 这样的注释访问 Spring 应用。
分布式跟踪和应用指标
正是因为这些优势,我们很难对微服务架构进行分析和故障排除。每个业务请求都会生成对各个层的个别服务的多个调用。分布式跟踪将所有个别服务调用绑定在一起,并通过一个生成的唯一 ID 将它们与业务请求关联起来。此外,指标让 Spring 应用可以显示应用级别数据,以支持对应用状态的精细检查。Jaeger 等追踪工具,与采用 Prometheus 及 Grafana 的指标堆栈进行组合,可为监控和排除 Kubernetes 上的 Spring 应用故障打下坚实基础。
针对 Kubernetes 优化 Spring
随着 Spring 应用发展成为大量的分散服务,管理这些服务之间的通信和保证其安全性变得更加困难。红帽 OpenShift 与红帽运行时进行组合,为 Spring 开发人员提供在行业领先的容器和 Kubernetes 混合云平台上大规模构建和管理 Spring 应用所需的工具、框架和原生 Kubernetes 集成。
Spring 开发人员使用红帽 OpenShift 的好处
Spring 开发人员使用红帽 OpenShift 好处多多。其中包括:
针对 Kubernetes 和 DevOps 进行了优化
对于现有的和全新 Spring 应用,在 OpenShift 上使用 Spring Boot 可为开发人员提供“在 Kubernetes 上运行 Spring”的原生体验。
- 支持使用 Spring 和 Spring Boot 构建云原生应用
- 集成了取代传统独立后备服务的 Kubernetes 功能
- 外部化配置:Kubernetes ConfigMap,并集成了 Spring Cloud Kubernetes
- 服务发现:Kubernetes 服务
- 负载平衡:Kubernetes 复制控制器
- 自动重启:Kubernetes Health Probes,并集成 Spring Actuator
- 指标:Prometheus、Grafana,并集成 Spring Cloud Sleuth
- 使用 Istio 和 Jaeger 进行分布式跟踪
- 通过红帽 OpenShift 开发工具快速构建新的 Spring 项目,在您喜欢的 IDE 中访问熟悉的 Spring API,并部署到红帽 OpenShift
在堆栈中预集成
在红帽 OpenShift 和红帽应用服务中使用熟悉的 Spring API,并获得底层 Kubernetes 平台和服务的优势。
- 针对在容器环境中运行 Java 应用对红帽的 OpenJDK 构建版本进行了优化。
- 通过集成了 Spring Cloud Kubernetes、Spring Security(通过红帽 SSO)、Spring Caching(通过红帽数据网格)、Spring Messaging(通过红帽 AMQ)、Spring Web、Spring Data 等等的红帽应用服务构建 Kubernetes 原生服务
- 通过 Spring Boot 和 Red Hat Fuse(基于 Apache Camel)在您的应用服务中实施通用的企业集成模式
支持现代应用
利用 Spring 知识开发采用最新技术的现代应用。
- 采用 Camel-K 和 Kafka 的无服务器 Spring 应用
- 使用熟悉的 Spring API 构建采用 Quarkus 的容器原生 Java 应用
- 采用 Kogito 的原生 Kubernetes 业务流程
- 使用 Kubernetes 操作器可以提供一种自然的方式来创建 Spring 应用,并通过 Halkyon 使用原生 Kubernetes API 并将这些应用关联在一起