目录

Nocalhost小试牛刀

前言

刚入职这边,想弄点业绩,碰到公司大版本更新,实在推不动,先把方案啊各种文档先弄出来,演示环境,各种功能全都测试一边。就有了下面这篇文章。

本来应该写CICD相关的内容的,因为我们相关开发流程还没定,所以暂时没法写,Nocalhost跟他们又不影响,八成是有了。先过来写把,反正马上放假过年,也没什么事。

Nocalhost介绍

什么是Nocalhost?

简单来说,Nocalhost可以让你IDE中的代码,在远程k8s容器中”同步“运行,根据IDE中的更改而秒级同步,不必重复编译打包推镜像等繁杂操作。可以使用该集群中的依赖,而不必在自己电脑中把所有的微服务全都跑起来。简称远程开发。

Nocalhost 是一款开源的基于 IDE 的云原生应用开发工具:

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

Nocalhost如何工作的?

Nocalhost 由单个二进制 CLI 和 IDE 插件组成。 理想情况下,您可以直接将它与您熟悉的 IDE 一起使用。 Nocalhost 不需要服务器端组件,因为它通过 KubeConfig 直接与您的 Kubernetes 集群通信,就像 kubectl 一样。

https://nocalhost.dev/img/intro/how-it-works.webp

Nocalhost解决了什么问题?

构建 Kubernetes 应用并不简单,尤其对于大型开发团队来说更具挑战。 Nocalhost 提供了最高效的方式来构建云原生应用程序。

使用 Nocalhost 直接在 Kubernetes 中进行开发的优势有:

  • 生产环境相似性 - 开发环境与你的生产环境非常相似,让你更有信心在发布新功能时一切都将在生产环境中正常工作。
  • 提速反馈循环 - 通过文件同步,你所有代码更改可以在容器中立即生效,而无需重建镜像或重新部署容器。
  • 灵活的扩展性 - 开发人员无需再担心本地资源不足。
  • 降低成本 - 更有效地使用资源并降低 IT 设施成本。

在下述环境里,在 Kubernetes 集群中进行开发很有用:

  • 本地资源的限制
  • 想要在类似生产环境中测试你的应用
  • 想要调试在本地计算机上难以重现的问题
  • 应用程序需要访问集群内部服务 (例如集群 DNS)

Nocalhost 可以在你每次进行修改时自动将代码同步到 K8s 容器中。 这样能免去了镜像提交、构建和推送等步骤,极大提速了开发的反馈循环。 因此代码修改可以实现秒级生效。

https://nocalhost.dev/zh-CN/img/intro/dev-circle-cn.jpg

Nocalhost功能简单演示

Nocalhost有两种模式,一种是代理模式,一种是开发模式,区别在于代理模式会删掉原服务,启动新服务来替代,并且接管流量。而开发模式是在不影响原环境所有功能的情况下,另起一个服务,辅助便捷开发,可以访问其他组件,但是不会接收流量。

代理模式

../images/proxy01.png

../images/proxy02.png

进入Nocalhost远程集群应用

../images/proxy03.png

进入容器同步环境,运行程序

../images/proxy04.png

访问端口查看

../images/proxy05.png

模拟修改代码

../images/proxy06.png

此127的接口其实是从容器中映射出来的,不是本地IDE运行的结果,如果代码中有dev环境的配置,仍可以访问通。IDE只负责编辑代码,终端中的启动命令均是在容器环境中,而不是本地。

../images/proxy07.png

在k8s集群中查看状态和应用,发现该pod已经暂时被IDE接管

../images/proxy08.png

查看刚刚修改的内容

../images/proxy09.png

与本地一致

断开连接

../images/proxy10.png

k8s中的资源也回退了

../images/proxy11.png

开发模式

与代理模式不同的地方就在于代理是默认启动的,而开发模式需要右键选择start devmode。

../images/proxy13.png

代理启动的时候原服务关掉了,而开发模式原服务还在。

../images/proxy12.png