Nocalhost + JRebel: 打造 Kubernetes 下构建云原生 Java 应用的全新体验

我们在进行日常开发调试的时候经常遇到一个窘境,就是我们修改的代码在开发环境很难及时生效,一天下来,大多数时间都被消耗在调试和部署上面,最后没有办法,除了加班还是只能加班。

为了解决这个问题,Coding 开发了一个叫做Nocalhost的工具,给我们在 Kubernetes 环境下进行开发带来了全新的体验,Nocalhost 可以帮助我们把本地的代码实时的同步到 Kubernetes Pod 容器上。

而且进一步的,Nocalhost 可以完美结合 Java 热加载神器 JRebel,实现 Java 代码实时编译并生效,这样我们就可以像开发脚本程序一样构建云原生下的 Java 应用程序。

一、插件介绍

Nocalhost

Nocalhost 是一款开源的基于 IDE 的云原生应用开发工具,主要支持以下能力:

  • 提供直接在 Kubernetes 集群中构建、测试和调试应用程序
  • 提供易于使用的 IDE 插件(支持 VS Code 和 JetBrains),即使在 Kubernetes 集群中进行开发和调试,Nocalhost 也能保持和本地开发一样的开发体验
  • 使用即时文件同步进行开发: 即时将您的代码更改同步到远端容器,而无需重建镜像或重新启动容器。

JRebel

JRebel 是一款 Java 热部署工具,可以完美实现代码修改后,无需重启应用即可生效。

jrebel.png

二、配置步骤

1. 安装 Nocalhost 插件

Nocalhost 插件地址

2. 安装 JRebel 插件

JRebel 插件地址

3. 将 Kubernetes 集群添加到 Nocalhost

参考文档

4. 将应用镜像推送到集群

本地将代码打包成镜像,并将镜像推送到 Kubernetes 镜像仓库。

5. 部署应用镜像

在 Kubernetes 集群部署应用。

6. nocalhost 连接应用

参考文档

7. nocalhost 配置接口转发

需要将远程容器的接口转发到本地,后面在 JRebel 里面配置远程机器的时候用这个转发后的地址和端口就可以了。

参考文档

8. JRebel 配置远程机器

参考文档

9. Nocalhost 远程启动

10. 代码开发和调试

看到下面的输出即为配置成功,这样本地修改的代码,会实时编译后在远程 Pod 上生效。

三、小结

通过上面的配置,我们就可以通过 Nocalhost + JRebel 在本地开发和调试远程 Kubernetes 集群上的应用。而且这样带来的好处是,我们本地不再需要费劲和集群上的数据库/消息组件打通,也不用再考虑本地开发机器和实际部署机器不一致带来的问题。

以上代码可以在我的 GitHub 仓库 hunterzhang86/nocalhost-jrebel-demo 中找到。


本文亦通过 NoOne's Blog 发表。

猜你喜欢

转载自blog.csdn.net/hunterzhang86/article/details/127643219