Kubernetes 云原生开发工具

前言

好久没有写文章了,主要是好像没啥进步,这里就来简单介绍一下我长期在做的一个项目吧,KubeVPN,一个可以连通 K8s 集群网络和本地网络的一个小工具

初衷

一直在想如果上了 K8s 的话,如何才能快速进行业务开发呢。其实这里还有一个开源项目 nocalhost,这个项目是公司项目,成功的进入了 CNCF sandbox ,这里尝试探索了在云端开发和在本地开发两种模式。下面就来简单来说一说这两类模式。

云端开发

将远端容器的启动命令修改为 tail -f /dev/null,任意一个挂起且不退出的命令都可以,也就是把远端容器看成是一个微型 Linux,然后将本地的源码同步到远端,此时在本地修改的代码,会自动实时同步到远端容器(有的同学可以会担心源码安全问题,这里可以使用 K8sRBAC 来解决,比如对于开发用户可以创建自己的 RoleRoleBinding,对于开发容器只有自己可以操作,别人无法操作,具体详见文档),那么想要验证功能的时候,就可以使用比如 go run main.go 或者 mvn spring-boot:run 的方式,快速将服务跑起来,然后就可以通过传统的验证方式验证程序功能是否满足期望。如果此时需要 debug,则可以使用对应语言的 remote debug ,不过 nocalhost 已经有相应的封装了,有兴趣的同学可以看看官网文档

本地开发

nocalhost 还支持流量代理模式,也就是可以打通本地和远端容器的网络。就可以在本地访问到远端 K8s 容器集群的网络,同时远端集群也可以访问到本地网络。那么作为一个开发人员,就可以在本地将项目启动起来,因为项目依赖的其它组件都可以直接访问到。这样调试就方便许多了。感兴趣的小伙伴可以参见文档

两类模式比较

云端开发本地开发
优点复用容器所有能力,包括挂载的卷,环境变量等调试很方便,如同传统的开发方式一样
缺点将源代码放在云上,可能会有安全问题不能使用环境变量,挂载的卷。不支持复杂的场景

KubeVPN 简介

个人还是比较偏好在本地开发的,因为本地有熟悉的 ide 工具,并且打通网络后可以直接在本地直接启动项目,是一个很大的亮点,鄙人不才,nocalhost 项目的 VPN 方案也是我提供并实施的。同时我将 VPN 的能力加以扩展,做了项目 KebeVPN ,这个项目的基本能力和 nocalhostVPN 基本能力相同,但是这里将其抽离为一个简单的工具,用户运行这个工具,就可以访问容器网络,关闭工具就不能访问。比较简洁,小而美。

亮点

除了前面说将到的可以在本地访问容器网络,以及容器可以访问本地网络之外,KubeVPN 还支持 service mesh ,即将带了指定 headerhttp/GRPC 流量路由到本地,其它不带指定 header 的流量不受影响,原理是使用 envoy 作为数据平面,然后自己写的控制平面。用以控制指定容器的流量代理模式。

后记

欢迎各位大佬帮我提 PR ,让我们来一起完善这个项目,做大做好,能够帮助到有需要的人是我的初心。感谢大佬🙏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值