Kubernetes 官方 java 客户端之三:外部应用
欢迎访问我的 GitHub
> 这里分类和汇总了欣宸的全部原创(含配套源码):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos)
概览
1. 以下提到的 java 客户端都是指 client-jar.jar;
2. 本文是《Kubernetes 官方 java 客户端》系列的第三篇,《Kubernetes官方java客户端:准备》一文中咱们为实战做好了准备工作,从本文开始进入实战阶段;
3. 本文的目标是开发名为 OutsideclusterApplication 的 SpringBoot 应用,该应用没有部署在 K8S 环境,使用的 config 文件是手动从 K8S 环境复制过来的,java 客户端通过此 config 文件,能够远程访问到 K8S 上的 API Server,实现所有客户端功能,整体部署情况如下图:
- 介绍完毕,开始编码;
源码下载
如果您不想编码,可以在 GitHub 下载所有源码,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
这个 git 项目中有多个文件夹,本章的应用在 kubernetesclient 文件夹下,如下图红框所示:
部署在 K8S 之外的应用:OutsideclusterApplication
名为 OutsideclusterApplication 的应用并未部署在 K8S 环境,该应用能够访问到 K8S 环境的关键,就是将 K8S 环境的 config 文件复制一份,然后放在 OutsideclusterApplication 能够访问到的位置:
登录 K8S 环境,在~/.kube 目录下找到 config 文件,复制此文件到 OutsideclusterApplication 运行的机器上(我这里存放的路径是/Users/zhaoqin/temp/202007/05/,和后面的代码中一致);
打开《Kubernetes官方java客户端:准备》中创建的 kubernetesclient 工程,在里面创建子工程,名为 OutsideclusterApplication,这是个 SpringBoot 工程,pom.xml 内容如下:
上述 pom.xml 中,需要注意的是在依赖 spring-boot-starter-web 的时候,使用 exclusion 语法排除了 spring-boot-starter-json 的依赖,这样做是为了将 jackson 的依赖全部去掉(spring-boot-starter-json 依赖了 jackson),如此一来整个 classpath 下面就没有了 jackson 库,此时 SpringBoot 框架就会使用 gson 作为序列化和反序列化工具(client-java.jar 依赖了 gson 库);(这个问题在《Kubernetes官方java客户端之二:序列化和反序列化问题》一文有详细介绍)
新增 OutsideclusterApplication.java,简单起见,该类即是引导类又是 Controller:
运行上述代码,在浏览器访问 http://localhost:8080/hello ,即可取得 K8S 所有 pod 的详情,如下所示(为了让返回数据更加整齐美观,我用的是 Firefox 浏览器):
查看控制台,可见日志也将详情打印出来:
- 至此,咱们的第一个使用 K8S 官方 java 客户端的应用就完成了,接下来的实战会尝试将应用部署在 K8S 环境内,在 K8S 内部进行各项操作;
欢迎关注 InfoQ:程序员欣宸
[学习路上,你不孤单,欣宸原创一路相伴...](https://www.infoq.cn/profile/42B106DFEF790F/publish)
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/7227c3c74b0b0fb12e03d1648】。文章转载请联系作者。
评论