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 一样。

Nocalhost解决了什么问题?
构建 Kubernetes 应用并不简单,尤其对于大型开发团队来说更具挑战。 Nocalhost 提供了最高效的方式来构建云原生应用程序。
使用 Nocalhost 直接在 Kubernetes 中进行开发的优势有:
- 生产环境相似性 - 开发环境与你的生产环境非常相似,让你更有信心在发布新功能时一切都将在生产环境中正常工作。
- 提速反馈循环 - 通过文件同步,你所有代码更改可以在容器中立即生效,而无需重建镜像或重新部署容器。
- 灵活的扩展性 - 开发人员无需再担心本地资源不足。
- 降低成本 - 更有效地使用资源并降低 IT 设施成本。
在下述环境里,在 Kubernetes 集群中进行开发很有用:
- 本地资源的限制
- 想要在类似生产环境中测试你的应用
- 想要调试在本地计算机上难以重现的问题
- 应用程序需要访问集群内部服务 (例如集群 DNS)
Nocalhost 可以在你每次进行修改时自动将代码同步到 K8s 容器中。 这样能免去了镜像提交、构建和推送等步骤,极大提速了开发的反馈循环。 因此代码修改可以实现秒级生效。

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


进入Nocalhost远程集群应用

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

访问端口查看

模拟修改代码

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

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

查看刚刚修改的内容

与本地一致
断开连接

k8s中的资源也回退了

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

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

CloudNativeQingFeng