Jump to section

借助红帽 OpenShift 在 Kubernetes 上运行 Spring

复制 URL

红帽® OpenShift® 帮助您开发并运行 Kubernetes 原生 Spring 和 Spring Boot 应用。

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 等追踪工具,与采用 PrometheusGrafana 的指标堆栈进行组合,可为监控和排除 Kubernetes 上的 Spring 应用故障打下坚实基础。

随着 Spring 应用发展成为大量的分散服务,管理这些服务之间的通信和保证其安全性变得更加困难。红帽 OpenShift红帽运行时进行组合,为 Spring 开发人员提供在行业领先的容器和 Kubernetes 混合云平台上大规模构建和管理 Spring 应用所需的工具、框架和原生 Kubernetes 集成。

Spring 开发人员使用红帽 OpenShift 好处多多。其中包括:

对于现有的和全新 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 平台和服务的优势。

利用 Spring 知识开发采用最新技术的现代应用。

  • 采用 Camel-KKafka 的无服务器 Spring 应用
  • 使用熟悉的 Spring API 构建采用 Quarkus 的容器原生 Java 应用
  • 采用 Kogito 的原生 Kubernetes 业务流程
  • 使用 Kubernetes 操作器可以提供一种自然的方式来创建 Spring 应用,并通过 Halkyon 使用原生 Kubernetes API 并将这些应用关联在一起

扩展阅读

文章

什么是红帽 OpenShift Operator?

红帽 OpenShift Operator 自动执行 Kubernetes 原生应用实例的创建、配置和管理。

文章

为什么选择红帽 OpenShift Serverless?

红帽 OpenShift Serverless 可扩展 Kubernetes,以部署和管理无服务器工作负载。

文章

为什么选择红帽 OpenShift 服务网格?

使用红帽 OpenShift 服务网格,您能够以统一的方式连接、管理和查看基于微服务的应用。

详细了解 OpenShift

产品

企业级应用平台,包含一系列久经测试的服务,可在您选择的基础架构上将应用推向市场。

出色的软件定义存储,可以随着容器的增减,跨环境为数据提供永久的存储位置。

享受全面支持的沙盒,可在其中快速开发、训练和测试机器学习 (ML) 模型。

一个具有内置安全策略、用于控制 Kubernetes 集群和应用的控制台。

相关资源

培训

免费培训课程

"通过红帽来运行容器"技术概述

免费培训课程

利用微服务架构开发云原生应用

免费培训课程

容器、Kubernetes 和红帽 OpenShift 技术概述