Kubernetes 官方 java 客户端之一:准备
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
关于 Kubernetes 官方 java 客户端
Kubernetes 官方 java 客户端全称是 Kubernetes Java Client,是 K8S 官方推出的 java 库,以 8.0.2 版本为例,其 maven 坐标如下:
本文是《Kubernetes 官方 java 客户端》系列的第一篇,主要内容是了解概念,再为后续章节的做好准备工作;
回想咱们通常是如何操作 K8S 环境的,例如部署 deployment,可以在 dashboard 页面上传 yaml 文件,也能在 SSH 终端执行 kubectl 命令,这些操作的去向都是 K8S 的 API Server,如下图:
从上图可见,如果能把请求发送到 API Server,就可以像 kubectl 命令那样操作 K8S 了,K8S 官方 java 客户端(Kubernetes Java Client)就是拥有这样能力的 SDK,使得 java 应用拥有 kubectl 那样的能力,如下图所示,加载了 K8S 官方 java 客户端库的 SpringBoot 应用,可以直接将请求发送到 K8S 环境:
需要准备什么
《Kubernetes 官方 java 客户端》是以实战为主的系列文章,为了后面实战顺利进行,会在本章进行准备工作,包括硬件、软件、配置等方面,接下来会逐一列出;
开发环境
我这边用来编码的环境如下:
操作系统:macOS Catalina 10.15.5
JDK:1.8.0_121
Maven:33.3.9
开发工具:IntelliJ IDEA 2019.3.2 (Ultimate Edition)
运行环境
编码完成后要运行在 K8S 环境,该环境只有一台 CentoOS 电脑,信息如下:
操作系统:CentOS Linux release 7.8.2003
K8S:1.15.3
选定 client-java 版本
K8S 有多个版本,java 客户端也有多个版本,用的时候如何选择呢?请参考官方给出的兼容性列表:
如上图,横向是 K8S 版本,纵向是 java 客户端版本,表格中有三种符号,含义如下:
✓ 表示从特性到 API,客户端和 K8S 环境都匹配;
+ 表示客户端有些特性和 API 与 K8S 环境无法匹配,但是他们共有的特性和 API 都能正常运行;
- 表示当前 K8S 环境上有些特性和 API 是客户端无法提供的;
我的 K8S 版本是 1.15,可见 7.0.0 版本的客户端是最合适的,后续的实战中也就选用该版本了,请您根据自己 K8S 的情况选择对应版本;
SpringBoot 应用操作权限
后面的实战中,咱们的 SpringBoot 应用会以 Pod 的形式运行在 K8S 环境,通过 client-java 的 API 操作 K8S,而 K8S 自然不会允许 Pod 随意对环境中的 pod、deployment 这些资源进行操作,因此我们要遵照 K8S 的规范进行 RBAC 相关的操作;
K8S 的角色设置可以非常详细,但也会更复杂,咱们还是不要花太多时间在这上面吧,这里我选择了使用 K8S 自带的最高权限的角色:cluster-admin,您可以按照自己的实际情况定制角色,下面是具体操作;
SSH 登录 K8S,创建 namespace:
创建文件 rbac.yaml,内容如下:
今后的实战中,SpringBoot 应用都会部署在名为 kubernetesclient 的 namespace 之下,使用名为 kubernates-client-service-account 的 Service Account;
IEDA 安装插件
因为项目中用到了 Slf4j 注解,请在 IEDA 上安装 lombok 插件,否则编写 log 相关代码的时候会有红叉:
创建所有 java 应用的父工程
后面的实战要创建多个 SpringBoot 应用,有必要提前创建一个父 maven 工程,将依赖库的定义和版本都放在在此;
创建名为 kubernetesclient 的 maven 工程,pom.xml 如下:
由于这是个父工程,因此目前除了 pom.xml 暂时没有其他内容,后面的实战会往里面添加子工程;
全系列源码下载
本次实战用到了一个普通的 SpringBoot 工程,源码可在 GitHub 下载到,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
这个 git 项目中有多个文件夹,本章的应用在 kubernetesclient 文件夹下,如下图红框所示:
以上就是实战前的准备工作了,感谢您的关注,后面的实战会更加精彩;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/52fef3dbce06c1d3464875010】。文章转载请联系作者。
评论