支持阿里&蚂蚁开源的国产 IDE OpenSumi

支持阿里&蚂蚁开源的国产 IDE OpenSumi

这篇博客是在2022年6月11日的【开源云原生】大会上的演讲中的演示部分。k8s集群套娃(嵌套)是指在一个k8s的pod中运行另外一个k8s集群,这想法看上去很疯狂,实际上非常实用。

【视频】k8s套娃开发调试dapr应用 - 在6月11日【开源云原生开发者日】上的演示-LMLPHP

k8s集群套娃(嵌套)是指在一个k8s的pod中运行另外一个k8s集群,这想法看上去很疯狂,其实这想法也非常实用。 试想,当你开发一个k8s应用的时候候一定会希望在自己的环境中先测试一下,这时你有几个选择:1)自己找服务器搭建一个完整的集群;2)在自己的本地开发机中搭建一个精简的集群,比如使用minikube或者docker desktop;3)直接在生产环境部署。无论哪种做法,你都需要面临很多难以解决的问题,自己搭建完整集群操作复杂而且还需要额外准备服务器资源,本地搭建集群对开发机要求高,没有个8核16G的高配笔记本是不可能的,更不要说minikube和docker desktop 只支持单一节点的阉割版集群,做简单的测试可以,如果要完成一些复杂的集群调度实验就会显得力不从心。最后,如果你打算直接在生产环境部署,那么需要足够的胆量并且随时做好怕路的准备。

其实,这是当前云原生开发的一个普遍困境,开发环境变得越来越复杂,以往我们只需要拿到源代码就可以开发调试的日子不再有了。k8s环境使用起来方便,但是对于开发者而言,要获取一个用户开发调试和测试,或者随便可以折腾的环境太困难了。今天要给大家介绍的k8s套娃就是为了应对这个困境的,让开发者可以实现 随用随启、用完即焚!

云原生IDE的优势和困境

云原生开发的最佳环境其实就是云原生环境本身,既然我们的应用会运行在容器中,那么我们为什么不直接到容器中开发;既然我们的应用会运行在K8s中,为什么我们不直接在k8s中进行开发?先不用关心如何实现,我们先来看看这样做会带来怎样一些好处:

  • 适用于任何人、任何时间、任何地点的标准化环境:将开发环境放入容器意味着我们可以像管理容器一样管理开发环境,类似系统配置、开发语言SDK,IDE,测试工具,配置项等等都可以利用容器技术进行标准化;同时因为是容器,我们可以实现 Lift & Shift (拿起就走&插上就干活)的能力。你只需要对开发环境定义一次,就可以让任何人在任何地方复制出同样的环境。

  • 彻底消除项目上手和切换成本:基于以上能力,我们将开发环境配置文件也放入当前项目的代码库,开发者只要拿到了代码就拿到了环境(因为环境配置文件和代码版本是统一管理,版本保持对齐)。这样开发者再也不用为了调试某份代码重新搭建环境,可以随时随地的切换到应用的任何版本上,甚至可以同时开发调试一个应用的不同版本。这其实就 IDE as Code 的概念体现,具体请参考 这篇博客。

  • 端到端的代码安全:既然开发环境位于容器中,我们就可以将这个容器放置于一个完全受管控的云端环境中,项目的代码完全在这个容器中被处理,开发者不需要下载代码;所有的代码操作,包括:编写,编译,打包,测试和发布过程全部通过网页在云端完成。对于需要很高代码安全性保障的行业,比如:金融、军工、通讯和高科技企业来说;这个特性可以彻底解决代码安全问题。而且,使用云原生IDE还可以在保障代码安全同时允许企业放心的使用外包开发人员。在当全球疫情持续发展的情况下,远程开发基础设施变成了企业的必备能力,云原生IDE在这方面有天然的优势。

  • 解锁云端超算力环境:很多大规模系统动辄需要几百个服务组件才能运行,要在本地完成这种环境搭建是完全不可能实现的,即便有专业运维团队的支持,在云端复制类似的环境也困难重重,这造成在很多大规模开发团队中,开发/调试/测试环境的获取变成了一个普遍的瓶颈。而利用云原生IDE所提供的IDE as Code能力,复制一个环境和启动一个普通的开发环境没有本质上的区别,开发者在代码库中随意选取一个代码版本一键完成整个环境的搭建变得非常简单。测试环境的获取能力是评估一个团队DevOps能力的通用标准,采用基于 IDE as Code 的之后,获取这项能力的门槛将被完全抹平。开发人员也因此可以完全解锁云端的超强算力,存储和高速网络环境,对于AI,大数据,区块链,Web3.0这些需要复杂环境支撑的开发场景,云原DE更加是一个必须品。

当然,云原生IDE也并不是没有缺点,使用容器作为开发环境本身就会遇到很多的问题。

容器化开发环境的困境和解决方案VMLC

容器化技术出现以后,绝大多数的使用场景都是生产环境,因此对容器的优化目标都是围绕精简,单一进程,不可变状态的目标来实现的;对于开发人员来说,按这种目标设计的容器并不适合作为开发环境来使用。相对于生产环境中已经预先确定的配置,开发环境的配置则需要进行持续的调整,在Inner Cycle中,每个环节(包含了编码,编译打包,部署,测试,修复)都会产生环境变更的诉求。

VMLC(类虚拟机容器) 是 VM Like Container 的缩写,其设计目标是为开发者在容器中提供类似虚拟机的环境,包括:systemd服务管理能力,sshd远程登录能力,docker/k8s嵌套能力等。

【视频】k8s套娃开发调试dapr应用 - 在6月11日【开源云原生开发者日】上的演示-LMLPHP

使用VMLC技术实现容器嵌套

SmartIDE 是完全基于 IDE as Code 理念设计和开发的一款 云原生IDE 产品,开发者既可以使用 SmartIDE CLI 在个人开发环境中一键拉起 云原生IDE 开发环境,也可以由企业管理员部署 SmartIDE Sever 统一管理。SmartIDE 支持跨平台,Windows / MacOS / Linux 均可以使用,开发者也可以选择自己习惯的 IDE工具,比如:VSCode, JetBrains全家桶 以及 国产开源的OpenSumi。 SmartIDE 通过 开发者镜像和模版 同时支持7种主流开发语言技术栈,包括:前端/Node/JavaScriptJavaDotNet/C#Python/Anaconda, PHP, Golang, C/C++;如果这些内置的镜像和模版都无法满足开发者的需求,也可以通过定制的Dockerfile和模版定义来进行扩展,这些 Dockefile和模版 全部都采用GPL3.0开源协议免费提供给社区使用。

【视频】k8s套娃开发调试dapr应用 - 在6月11日【开源云原生开发者日】上的演示-LMLPHP

以下演示是在 2022年6月11日举办的 开源云原生开发者大会 上的展示的使用 SmartIDE VMLC开发者容器 完成一个 dapr 应用的开发调试场景:

06-16 10:15