本文介绍如何使用Eclipse JKube,零配置(不用写dockerfile,也不需要写yaml),快速将一个简单spring boot工程部署至k8s环境。
- 1.Eclipse JKube简介
- 2.Rancher desktop快速搭建本地k8s环境
- 3.创建spring boot工程
- 4.使用maven插件生成k8s资源描述文件
- 5.使用maven插件创建docker镜像
- 6.使用maven插件部署应用至k8s
- 7.映射端口访问应用
1.Eclipse JKube简介
Eclipse JKube是一组插件(maven、gradle)和库的集合,用来快速部署应用服务至kubernestes环境。
Jkube官网:www.eclipse.org/jkube/
我们将要使用的是 kubernetes-maven-plugin 插件,使用该插件可以轻松的将一个spring boot应用部署至k8s环境中。
2.Rancher desktop快速搭建本地k8s环境
官方中文安装文档: docs.rancherdesktop.io/zh/getting-…
Rancher Desktop 利用虚拟机运行 containerd 或 dockerd 容器,同时创建一个简单的单节点 Kubernetes集群,适合用作本地开发、测试和学习使用。
支持windows/mac/linux操作系统。
Rancher Desktop安装完成后,可以直接在命令行工具中使用这些命令:Helm、kubectl、nerdctl、Moby、Docker Compose。
3.创建spring boot工程
在idea中创建maven工程,并引入spring-boot-starter-web依赖.
源代码在这:github.com/tzjavadmg/j…
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
创建一个简单的Controller,用来演示程序效果
@RestController
public class JkubeExampleController {
@RequestMapping("/")
public String index() {
return "k8s中的spring boot应用展示";
}
}
在pom.xml中配置jkube的kubernetes-maven-plugin插件,这里使用最简单的配置来演示,仅仅引入插件。 实际上你可以添加很多的自定义配置来满足你的个性化需求。
更多配置参考这里:www.eclipse.org/jkube/docs/…
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
</plugins>
</build>
4.使用maven插件生成k8s资源描述文件
运行如下mvn命令
mvn clean k8s:resource
执行完成后,会在当前工程以下目录创建k8s资源描述文件 \target\classes\META-INF\jkube
生成的资源描述文件:
- kubernetes.yml
- kubernetes/spring-boot-deployment.yml
- kubernetes/spring-boot-service.yml
5.使用maven插件创建docker镜像
mvn package k8s:build
可以用docker images命令查看刚才创建的镜像文件,也可以打rancher desktop,在Images菜单模块中查询,如下图所示:
6.使用maven插件部署应用至k8s
mvn k8s:deploy
部署成功后,使用kubectl get pods命令查看部署成功的pod.或者从rancher dashboard中的pods菜单查看.如下图所示:
7.映射端口访问应用
接下来用以下命令设置端口转发,这样我们可以通过映射的8080端口来访问k8s中的服务。
kubectl port-forward pods/jkube-example 8080:8080
你也可以通过rancher desktop面板直接设置端口转发:
然后就可以通过浏览器访问了,效果如下:
是不是很简单?
当然实际应用时,不会直接端口转发,而是通过ingress代理转发请求,后续再尝试使用nginx-ingress代理。