| 名称 | 链接 | 备注 |
| :-- | :-- | :-- |
| 项目主页 | [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没有任何关系;
- 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”)
-
“]”;
}
}
- 启动类WebdemoApplication.java:
@SpringBootApplication
public class WebdemoApplication {
public static void main(String[] args) {
SpringApplication.run(WebdemoApplication.class, args);
}
}
- 要注意的是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
d>webdemo 0.0.1-SNAPSHOT webdemo Demo project for Spring Boot 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 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] ------------------------------------------------------------------------ [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 [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 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 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【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取



