栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring-cloud-kubernetes与SpringCloud Gateway

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring-cloud-kubernetes与SpringCloud Gateway

| 名称 | 链接 | 备注 |

| :-- | :-- | :-- |

| 项目主页 | [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项目中有多个文件夹,本章的两个应用分别在webdemo和k8sgatewaydemo文件夹下;

下图红框中是webdemo应用的源码:

下图红框中是k8sgatewaydemo应用的源码:

下面是详细的编码过程;

[](

)开发webdemo

webdemo是个极其普通的spring boot应用,和SpringCloud没有任何关系;

  1. webdemo提供一个http接口,将请求header中名为extendtag的参数返回给请求方,controller类如下:

@RestController

@RequestMapping("/hello")

public class HelloController {

@RequestMapping(value = “time”, method = RequestMethod.GET)

public String hello(HttpServletRequest request){

return "hello, "

  • new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”).format(new Date())

  • “, extendtag [”

  • request.getHeader(“extendtag”)

  • “]”;

}

}

  1. 启动类WebdemoApplication.java:

@SpringBootApplication

public class WebdemoApplication {

public static void main(String[] args) {

SpringApplication.run(WebdemoApplication.class, args);

}

}

  1. 要注意的是pom.xml,里面通过名为fabric8-maven-plugin的maven插件,将webdemo快速部署到minikube环境:

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.6.RELEASE

com.bolingcavalry

【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

d>webdemo

0.0.1-SNAPSHOT

webdemo

Demo project for Spring Boot

1.8

2.1.6.RELEASE

3.5.37

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

${spring-boot.version}

repackage

org.apache.maven.plugins

maven-deploy-plugin

${maven-deploy-plugin.version}

true

org.apache.maven.plugins

maven-surefire-plugin

${maven-surefire-plugin.version}

true

false

io.fabric8

fabric8-maven-plugin

${fabric8.maven.plugin.version}

fmp

resource

kubernetes

io.fabric8

fabric8-maven-plugin

${fabric8.maven.plugin.version}

fmp

resource

build

NodePort

  1. 以上就是webdemo应用的内容了,接下来要编译、构建、部署到minikube环境,在pom.xml执行以下命令即可:

mvn clean install fabric8:deploy -Dfabric8.generator.from=fabric8/java-jboss-openjdk8-jdk -Pkubernetes

部署完成后终端输出类似如下成功信息:

[INFO]

[INFO] <<< fabric8-maven-plugin:3.5.37:deploy (default-cli) < install @ webdemo <<<

[INFO]

[INFO]

[INFO] — fabric8-maven-plugin:3.5.37:deploy (default-cli) @ webdemo —

[INFO] F8: Using Kubernetes at https://192.168.121.133:8443/ in namespace default with manifest /usr/local/work/k8s/webdemo/target/classes/meta-INF/fabric8/kubernetes.yml

[INFO] Using namespace: default

[INFO] Updating a Service from kubernetes.yml

[INFO] Updated Service: target/fabric8/applyJson/default/service-webdemo.json

[INFO] Using namespace: default

[INFO] Updating Deployment from kubernetes.yml

[INFO] Updated Deployment: target/fabric8/applyJson/default/deployment-webdemo.json

[INFO] F8: HINT: Use the command kubectl get pods -w to watch your pods start up

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 11.804 s

[INFO] Finished at: 2019-07-07T21:32:26+08:00

[INFO] ------------------------------------------------------------------------

  1. 查看service和pod,确认一切正常:

[root@minikube webdemo]# kubectl get service

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.96.0.1 443/TCP 29d

webdemo NodePort 10.106.98.137 8080:30160/TCP 115m

[root@minikube webdemo]# kubectl get pod

NAME READY STATUS RESTARTS AGE

webdemo-c9f774b9-gsbgx 1/1 Running 0 3m13s

  1. 使用minikube命令取得webdemo服务对外暴露的地址:

[root@minikube webdemo]# minikube service webdemo --url

http://192.168.121.133:30160

可见外部通过地址:[http://192.168.121.133:30160](

) 即可访问到webdemo应用;

7. 在浏览器输入地址:[http://192.168.121.133:30160/hello/time](

) ,即可验证webdemo的http接口是否正常,如下图,由于header中没有extendtag属性,因此返回的extendtag为null:

至此,webdemo在minikue上已经正常运行,该开发gateway应用了;

[](

)开发k8sgatewaydemo

  1. 基于maven创建一个名为k8sgatewaydemo的springboot应用,pom.xml内容如下:

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.6.RELEASE

com.bolingcavalry

k8sgatewaydemo

0.0.1-SNAPSHOT

k8sgatewaydemo

Demo project for Spring Boot

1.8

2.1.6.RELEASE

false

false

false

3.5

2.8.2

2.18.1

2.21.0

3.5.37

1.0.1.RELEASE

Greenwich.SR2

org.springframework.cloud

spring-cloud-starter-gateway

org.springframework.boot

spring-boot-starter-test

test

org.springframework.cloud

spring-cloud-kubernetes-core

${springcloud.kubernetes.version}

org.springframework.cloud

spring-cloud-kubernetes-discovery

${springcloud.kubernetes.version}

org.springframework.cloud

spring-cloud-starter-kubernetes-ribbon

${springcloud.kubernetes.version}

org.springframework.cloud

spring-cloud-commons

org.springframework.boot

spring-boot-starter

org.springframework.cloud

spring-cloud-starter-netflix-ribbon

org.springframework.cloud

spring-cloud-starter-netflix-hystrix

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

org.springframework.boot

spring-boot-maven-plugin

${spring-boot.version}

repackage

org.apache.maven.plugins

maven-deploy-plugin

${maven-deploy-plugin.version}

true

org.apache.maven.plugins

maven-surefire-plugin

${maven-surefire-plugin.version}

true

false

io.fabric8

fabric8-maven-plugin

${fabric8.maven.plugin.version}

fmp

resource

kubernetes

io.fabric8

fabric8-maven-plugin

${fabric8.maven.plugin.version}

fmp

resource

build

NodePort

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号