spring boot和spring cloud的区别_你好spring-cloud-kubernetes开源项目

作者:欣宸,前阿里工程师

关于spring-cloud-kubernetes:

spring-cloud-kubernetes是springcloud官方推出的开源项目,用于将Spring Cloud和Spring Boot应用运行在kubernetes环境,并且提供了通用的接口来调用kubernetes服务,GitHub上官方地址是:https://github.com/spring-cloud/spring-cloud-kubernetes

该项目的提交者之一,就是SpringCloud的作者之一Spencer Gibb:

3c2057b65f20eb094a42861138ed2630.png

通过官方demo来了解spring-cloud-kubernetes

spring-cloud-kubernetes项目也提供了丰富的官方demo来帮助开发者了解和学习spring-cloud-kubernetes,您可以参考《spring-cloud-kubernetes官方demo运行实战》快速体验官方demo;

实战spring-cloud-kubernetes

今天实战的内容是开发一个简单的java应用,然后将其部署在kubernetes环境(minikube 1.1.1),该应用通过spring-cloud-kubernetes调用当前kubernetes的服务;

环境信息

本次实战的环境和版本信息如下:

  • 操作系统:CentOS Linux release 7.6.1810
  • minikube:1.1.1
  • Java:1.8.0_191
  • Maven:3.6.0
  • fabric8-maven-plugin插件:3.5.37
  • spring-cloud-kubernetes:1.0.1.RELEASE

上面的linux、minikube、java、maven,请确保已准备好,linux环境下minikube的安装和启动请参考《Linux安装minikube指南 》。

准备工作已经OK,开始编码吧。

源码下载

如果您不打算写代码,也可以从GitHub上下载本次实战的源码,地址和链接信息如下表所示:

名称链接备注项目主页https://github.com/zq2599/blog_demos该项目在GitHub上的主页git仓库地址(https)https://github.com/zq2599/blog_demos.git该项目源码的仓库地址,https协议git仓库地址(ssh)git@github.com:zq2599/blog_demos.git该项目源码的仓库地址,ssh协议

这个git项目中有多个文件夹,本章源码在springcloudk8sdiscovery这个文件夹下,如下图红框所示:

30ab0b3b9b07389d780f703f2b6b09a8.png

开发应用

1.基于maven创建一个springboot应用,名为springcloudk8sdiscovery;

2.该应用完整的pom.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASEcom.bolingcavalry springcloudk8sdiscovery 0.0.1-SNAPSHOTspringcloudk8sdiscoveryDemo project for Spring Boot1.82.1.1.RELEASE3.52.8.22.18.12.21.03.5.37org.springframework.boot spring-boot-dependencies pomimport${spring-boot.version}org.springframework.cloud spring-cloud-kubernetes-core 1.0.1.RELEASEorg.springframework.cloud spring-cloud-kubernetes-discovery 1.0.1.RELEASEorg.springframework.cloud spring-cloud-commons 2.1.1.RELEASEorg.springframework.boot spring-boot-starter 2.1.1.RELEASEorg.springframework.boot spring-boot-starter-web 2.1.1.RELEASEorg.springframework.boot spring-boot-starter-actuator 2.1.1.RELEASEcom.alibaba fastjson 1.2.28org.springframework.boot spring-boot-maven-plugin ${spring-boot.version}repackageorg.apache.maven.plugins maven-deploy-plugin ${maven-deploy-plugin.version}trueorg.apache.maven.plugins maven-surefire-plugin ${maven-surefire-plugin.version}truefalseio.fabric8 fabric8-maven-plugin ${fabric8.maven.plugin.version}fmpresourcekubernetesio.fabric8 fabric8-maven-plugin ${fabric8.maven.plugin.version}fmpresourcebuildNodePortreleaseio.fabric8 fabric8-maven-plugin ${fabric8.maven.plugin.version}fmpresourcehelmintegrationio.fabric8 fabric8-maven-plugin ${fabric8.maven.plugin.version}fmpresourcebuildorg.apache.maven.plugins maven-failsafe-plugin ${maven-failsafe-plugin.version}run-integration-testsintegration-testintegration-testverifyfalsefalse

上述pom.xml文件有几处需要关注: a. 直接依赖了spring-cloud-kubernetes的以下两个库,后面才能使用spring-cloud-kubernetes的服务:

org.springframework.cloud:spring-cloud-kubernetes-core:1.0.1.RELEASEorg.springframework.cloud:spring-cloud-kubernetes-discovery:1.0.1.RELEASE

b. 使用插件fabric8-maven-plugin来构建镜像并部署到minikube环境:

io.fabric8 fabric8-maven-plugin ${fabric8.maven.plugin.version}fmpresource

c. 为fabric8-maven-plugin插件准备了三个profile,本次实战主要用到kubernetes这个:

kubernetesio.fabric8  fabric8-maven-plugin  ${fabric8.maven.plugin.version}fmpresourcebuildNodePort

以上就是pom.xml的内容了,主要是添加spring-cloud-kubernetes的依赖,以及使用fabric8来构建和部署;

3.在application.properties文件中设置应用名称:

spring.application.name=springcloudk8sdiscovery

4.创建应用启动类Springcloudk8sdiscoveryApplication,可见这是个很普通的springboot启动类:

package com.bolingcavalry.springcloudk8sdiscovery;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublic class Springcloudk8sdiscoveryApplication { public static void main(String[] args) { SpringApplication.run(Springcloudk8sdiscoveryApplication.class, args); }}

5.创建controller类,对外提供http服务,部署完成后通过这些http服务来验证功能:

@RestControllerpublic class DiscoveryController { @Autowired private DiscoveryClient discoveryClient; /** * 探针检查响应类 * @return */ @RequestMapping("/health") public String health() { return "health"; } /** * 返回远程调用的结果 * @return */ @RequestMapping("/getservicedetail") public String getservicedetail( @RequestParam(value = "servicename
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值