发布时间:2023-03-10 | 信息来源: | 发布作者:沃趣科技
在我们团队将产品的部署形态迁移到kubernetes上之后,在研发过程中,开发和联调代码的过程非常的痛苦,决定寻找在k8s环境下的云原生时代的打通本地和开发环境的解决方案。
回顾一下,过去的开发过程,我们的进程一共有2种模式,即k8s无关进程和依赖了k8s的进程。
- k8s无关进程 -
- 依赖了k8s的进程 -
因此日常的开发流程便是:
显然,为了保证在本地开发的代码,在环境上真实运行的效果完全一致,带来了很大的工作效率问题,本地编码2分钟,上环境自测5分钟
因此我们急需一种便捷的,学习成本低的,基于配置的,一劳永逸的,团队统一的解决方案来打通本地和开发环境,节省本地开发环境的搭建和配置的时间,节省团队成员联调的时间,提高团队效率
Telepresence
参考
https://docs.microsoft.com/zh-cn/visualstudio/bridge/overview-bridge-to-kubernetes?view=vs-2022
介绍
Telepresence是一款为Kubernetes微服务框架提供快速本地化开发功能的开源软件。Telepresence在Kubernetes集群中运行的Pod中部署双向网络代理,该Pod将Kubernetes环境(如TCP连接,环境变量,卷)中的数据代理到本地进程。本地进程透明地覆盖其网络,以便DNS调用和TCP连接通过代理路由到远程Kubernetes集群,能够获取
特性
缺陷
Bridge to kubernetes
参考
https://docs.microsoft.com/zh-cn/visualstudio/bridge/overview-bridge-to-kubernetes?view=vs-2022
介绍
Bridge to Kubernetes 可重定向已连接的 Kubernetes 群集与开发计算机之间的流量。Kubernetes 群集中的本地代码和服务可以像在同一 Kubernetes 群集中一样进行通信。
Bridge to Kubernetes插件只可用于Visual Studio和VS Code,支持其他ide的计划还在官方的RoadMap上没有开始
工作原理
特性
缺陷
Bridge to Kubernetes 具有以下限制:
Nocalhost
参考
https://nocalhost.dev/zh-CN/docs/introduction
介绍
Nocalhost 是一款开源的基于 IDE 的云原生应用开发工具:
Nocalhost 的野心相比 Bridge to Kubernetes 和 Telepresence 更大,具有开发环境的管理体系。深度整合 vscode / IntelliJ IDEA 实现了一键部署上云,一键远程 debug 等式开发的贴心功能。
其设计的核心就是自动同步:
Nocalhost 目前是完全开源的,并已进入 CNCF Landscape:
支持goland, idea,pycharm, vscode
工作原理
Nocalhost 由单个二进制 CLI 和 IDE 插件组成。理想情况下,您可以直接将它与您熟悉的 IDE 一起使用。
Nocalhost 不需要服务器端组件,因为它通过 KubeConfig 直接与您的 Kubernetes 集群通信,就像 kubectl 一样。
特性
- 实时线上编码 -
Nocalhost 预配置为与你喜欢的 IDE 配合使用,你可以一键连接到任何 Kubernetes 集群,开始享受在集群内进行编码,摆脱烦人的本地环境配置。
- 实时同步 -
Nocalhost 可以在你每次进行修改时自动将代码同步到 K8s 容器中。这样能免去了镜像提交、构建和推送等步骤,极大提速了开发的反馈循环。因此代码修改可以实现秒级生效。
- 易于协作 -
使用方式
Nocalhost 由单个二进制 CLI 和 IDE 插件组成。理想情况下,您可以直接将它与您熟悉的 IDE 一起使用。
为什么使用Nocalhost?
构建 Kubernetes 应用并不简单,尤其对于大型开发团队来说更具挑战。Nocalhost 提供了最高效的方式来构建云原生应用程序。
使用 Nocalhost 直接在 Kubernetes 中进行开发的优势有:
在下述环境里,在 Kubernetes 集群中进行开发很有用:
对比PK
三者比较来看Nocalhost是特性最多,支持的场景最多,支持IDE的插件最多,并且用户体验最好。完胜其他两位,是其他两个工具支持特性的超集,因此我们选择了Nocalhost,让基于云原生的开发更高效。