Spring Boot与K8S的结合| 云原生应用开发系列7

1.参数注入java

在OpenShift上配置应用程序的推荐方法是使用ConfigMaps。使用ConfigMap可确保配置与应用程序映像分离,并使应用程序映像保持可移植性。使用ConfigMap,配置数据在运行时注入容器。git


Spring Boot没有直接支持ConfigMaps。github

另外一种方法是使用Spring Cloud Kubernetes项目,该项目提供与Kubernetes和OpenShift的Spring Cloud集成。 Spring Cloud Kubernetes项目由Red Hat Fabric8团队启动,现已转移到Spring Cloud Incubator保护伞下。spring

https://github.com/spring-cloud-incubator/spring-cloud-kubernetes
安全


Spring Cloud Kubernetes项目经过提供ConfigMapPropertySource为Kubernetes和OpenShift ConfigMaps提供支持。 ConfigMapPropertySource搜索Kubernetes ConfigMap。 ConfigMap的名称是Spring应用程序的名称,由spring.application.name属性定义。 若是找到这样的ConfigMap,则经过处理各个配置属性来处理它。经过将名为application.properties的任何属性的内容应用为属性文件来处理这些单独的属性。服务器


2.使用Spring Cloud Kubernetesapp

要使用Spring Cloud Kubernetes,您须要在此处显示Maven依赖项。 groupId是org.springframework.cloud。 artifactId`是`spring-cloud-starter-kubernetes-config。ide

图片


要使用Spring Cloud Kubernetes,您须要一个必需的属性文件。您的application.properties文件必须包含应用程序名称的条目,如此处所示。 而后使用spring.application.name属性(本例中为cart-service)定义的相同条目建立ConfigMap。 oc create命令用于建立ConfigMap。spring-boot



部署应用程序时,了解它是否可用以及是否能够开始处理传入请求很是重要。经过实施运行情况检查模式,您能够监视应用程序的运行情况,从而检查应用程序是否可用而且可以为请求提供服务。ui


3.健康检查

有关健康服务检查有五个关键概念:

  • Liveness

  • Readiness

  • Failover

  • Resilience and stability

  • Probe



Liveness定义应用程序是否正在运行。有时正在运行的应用程序会进入无响应或中止状态,必须从新启动。检查活动有助于肯定是否须要从新启动应用程序。 Readiness状况定义正在运行的应用程序是否能够服务请有时,正在运行的应用程序会进入错误或损坏的状态,在该状态下它没法再处理请求。检查准备状况有助于肯定是否能够继续将请求路由到该应用程序。


故障转移能够正常处理服务请求中的失败。若是应用程序没法为请求提供服务,则该请求和未来的请求能够进行故障转移,这意味着它们将路由到另外一个应用程序。这一般是同一应用程序的冗余副本。 弹性和稳定性使服务请求失败得以优雅地处理。若是应用程序因为链接丢失而没法为请求提供服务,则在弹性系统中,能够在从新创建链接后重试该请求。 探针是Kubernetes操做,可按期对正在运行的容器执行诊断。





您的应用程序能够公开REST端点以报告准备状况和活跃度。 为了准备就绪,请公开/ health / readyiness REST端点。若是应用程序已准备好处理请求,请让它返回HTTP状态代码200.若是不是,请让它返回HTTP状态代码503(若是可能)。 为了活跃,暴露/ health / liveness REST端点。若是应用程序处于活动状态,请让它返回HTTP状态代码200.若是不是,请让它返回HTTP状态代码503(若是可能)。



spring Boot公开用于管理和监视的HTTP和Java Management Extensions或JMX端点。

弹簧启动 - 启动器 - 执行器启动器启用此功能。 执行器须要Spring MVC。 如下是一些Actuator端点: autoconfig显示一个自动配置报告,显示全部自动配置候选项以及它们应用或未应用的缘由。 beans显示应用程序中全部Spring bean的完整列表。 健康显示应用健康信息。 指标显示当前应用程序的“指标”信息。 当Jolokia在类路径上时,jolokia经过HTTP公开JMX bean。


从全部HealthIndicator bean收集健康情况。 Spring Boot包含许多自动配置的HealthIndicator。 默认状况下,仅返回运行情况。完整细节须要验证。 您能够为运行情况和信息端点添加自定义HealthIndicators或InfoContributors。 Actuator端点是彻底可配置的,包括服务器地址,路径,端口,SSL和安全性。




Spring Boot应用程序一般打包为可执行JAR或WAR归档。 Spring Boot Maven插件的从新打包目标将在Maven的打包阶段构建的JAR存档重写为可执行的JAR。这里显示了一个例子。 Spring Boot可执行的自包含JAR文件与着色的uber-JAR不一样。 还有可用于可部署WAR的替代包装。

图片

Spring Boot JAR内部结构支持嵌套JAR。这里显示了一个例子。

图片


使用java命令启动Spring Boot应用程序,以下所示。 您能够指定带有双连字符的环境属性命令行参数。 您可使用Spring Boot Maven插件编译和运行应用程序。


使用java命令启动Spring Boot应用程序:

$ java -jar my-app-1.0.0.jar


环境属性命令行参数前缀为 - :

$ java -jar my-app-1.0.0.jar --server.port = 9000


使用Spring Boot Maven插件编译并运行应用程序:

$ mvn spring-boot:run




Fabric8 Maven插件是为Docker,Kubernetes和OpenShift构建和部署Java应用程序的一站式商店。它将您的Java应用程序带到Kubernetes和OpenShift。它提供了与Maven的紧密集成,并从已提供的构建配置中获益。它侧重于三个任务:

  • 构建Docker镜像 

  • 建立OpenShift和Kubernetes资源 

  • 在Kubernetes和OpenShift上部署应用程序


Fabric8 Maven插件支持如下目标:

  • fabric8:resource建立Kubernetes和OpenShift资源描述符。

  • fabric8:build构建Docker镜像。

  • fabric8:push将Docker镜像推送到注册表。

  • fabric8:deploy将OpenShift资源对象部署到集群。


fabric8:观察重建和重启的状况。

Fabric8 Maven插件支持Kubernetes和OpenShift描述符。 它还支持使用二进制源的OpenShift Docker构建。 该插件还提供灵活的自定义。 Generators分析Maven构建并为某些系统生成自动Docker镜像配置,包括spring-boot,plain Java和Apace Karaf。 Enchers使用SCM标签等额外信息扩展Kubernetes和OpenShift资源描述符,并能够添加服务等默认对象。能够单独配置发生器和浓缩器并将其组合到配置文件中。



Fabric8 Maven插件还支持各类配置样式:

  • 零配置:用于快速提高预先肯定默认值的默认值。

  • 内联配置:在XML语法的插件配置中。

  • 外部配置:插件丰富的实际部署描述符的模板。


Docker Compose配置:提供Docker组合文件,并在Kubernetes / OpenShift集群上启动Docker组合部署。

资源描述符能够做为指定骨架的外部YAML文件提供。而后,这个骨架由浓缩物填充,这些浓缩物能够添加标签等。这些文件中的Maven属性将解析为其值。使用此模型,您可使用每一个Kubernetes或OpenShift资源对象的全部灵活性,但仍然能够得到添加构建信息的好处。


默认状况下,Fabric8插件从src / main / fabric8目录中读取资源片断。


图片


fabric8:deploy是构建Docker镜像的主要目标。

  • 此目标旨在在部署以前运行fabric8:build和fabric8:资源。 

  • 它生成OpenShift资源并将它们部署到OpenShift服务器。

相关文章
相关标签/搜索