DevSpace:在 Kubernetes 里写代码,不用反复构建镜像了

用 Kubernetes 做开发的人应该都经历过这样的循环:改一行代码,构建镜像,推送到仓库,更新 Pod,等它重启,然后发现拼写错了。

DevSpace 在 GitHub 上已经有 5,068 Star 了。

这个工具要解决的就是这件事,让开发者在 Kubernetes 集群内直接开发,改了代码即时生效,不用走构建、推送、部署那一套。

正文顶部截图

这东西解决了什么问题

Kubernetes 部署微服务很强大,但开发体验一直不太好。传统的开发流程里,每次代码变更都需要经过 Docker 构建、镜像推送、kubectl 更新 Pod、等待滚动重启这几个步骤。改一个变量名就要等几分钟。

DevSpace 的核心能力是直接在集群内部做开发。它的文件同步机制能够检测本地代码变更,即时同步到正在运行的容器里,应用自动重载。整个过程不需要构建新镜像,不需要重启 Pod。

对团队来说,DevSpace 把部署工作流写进一个 devspace.yaml 配置文件中,跟着代码一起版本管理。团队里的 DevOps 工程师可以配置好这份文件后提交到 Git,其他开发者 checkout 项目后跑一句 devspace deploy,就能把整个项目包括镜像构建和依赖部署全部跑起来。配置支持变量,不同开发者可以有不同的子域名或者环境差异。

怎么工作的

DevSpace 是一个单二进制 CLI 工具,运行在开发者本地机器上,直接通过 kube-context 跟集群通信,不需要服务端组件。

它的自动化能力体现在几个方面。支持并行构建多个镜像,自动打标签,自动部署整个应用及其依赖。同时会自动启动端口转发和日志流,开发者不用反复执行 kubectl 命令去查 Pod ID。以前需要跑十几个命令才能开始开发的事情,现在一个命令搞定。

热重载是它的核心特性。文件变更通过双向同步即时推送到容器,应用在容器内自动 reload。编辑器里可以直接连接调试器或打开容器终端。

README区域截图

自动化重复任务

Kubernetes 调试中大量重复操作,比如反复执行 kubectl get pod 来复制 Pod ID、手动配置端口转发、查看日志等。DevSpace 把这些操作自动化了。

开发者可以在配置文件中定义完整的 pipeline,从代码构建到部署上线一条命令完成。对于复杂的微服务项目,一次可以同时构建和部署多个服务,包括它们的依赖项。

集群兼容性

DevSpace 支持多种 Kubernetes 集群环境:minikube、k3s、kind 这类本地集群,GKE、EKS、AKS 等云托管集群,以及 Rancher 管理的自建集群。切换集群和命名空间不需要额外配置,换一个 kube-context 就行。本地开发不够用时,可以直接切换到远程集群继续工作。

DevSpace 由 Loft Labs 创建,目前是 CNCF 沙箱项目,采用 Apache 2.0 许可证。

对于正在用 Kubernetes 做开发的团队,它把改代码等部署这个环节压缩到了近乎实时。

用 Kubernetes 做开发的团队,它把改代码等部署这个环节压缩到了近乎实时。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐