springCloud 微服务 + K8s service discovery, 如何在集群外跑
因为我之前用的是 eureka, nacos 之类的,另起一个 nacos 服务器,再起微服务,然后本地跑测试
但是如果切换到 k8s 环境该怎么办
如何将所有 app 打包部署到 k8s 集群中,我能理解,但是如果几个 app 我想要快速的测试下,本地 idea 直接起一下,debug 一下,也就是所有的微服务集群外起起来,但是我又要利用 k8s 的 service 让它们互相发请求,这该咋做啊
我就想到如果在工作中,一群开发都在 dev 上开发,然后要起起来测试,然后他们都 cicd 到本地 dev 的集群上在测试吗,如果想要本地快速测功能,或者单步调试该咋做啊
用 mock 吗,拖慢开发速度啊
本地 build 然后 push 到仓库上去覆盖吧,其实也不会很慢。本地 debug 就很麻烦了
我好奇实际工作怎么搞,每个开发都分配一个 dev 环境的命名空间,然后 push 测试自己的代码吗,而且如果微服务架构变复杂了,那不是更麻烦而且本地调试很重要吗,比如生产出啥问题,不得本地起起来一步步调试吗
这种情况就是很麻烦,要么 mock ,要么装一套环境自用远程 debug
看上面的需求描述,可以考虑阿里云的端云互联( Alibaba Cloud Toolkit ) help.aliyun.com/zh/edas/w1h7u7主要是从本地 Idea 里面安装 Alibaba Cloud Toolkit 插件,然后用了 SSH 代理或者使用 kubeconfig 的方式实现对 K8s 集群 Spring Cloud 服务进行访问的,按说 k8s service 也没问题。调试的时候,可以从本地 Idea 启动应用发起调用或者被 K8s 集群里面部署的 Spring Cloud 服务调用。3 年前就出来了这样的功能,鹅厂还在抄袭。
所以,想着有些公司,不管啥大大小小的项目都上微服务,就觉得很脑残。本来业务功能简单,没有几个访问量的应用,用单体做一把梭就能搞定的事,给你拆的乱七八糟,坑开发、坑测试、坑交付、坑运维……
工作后的两个项目都是上云的,实际工作是开发环境一整套环境,不区分命名空间,谁要测试自己 deploy 自己的镜像上去测试。在某个群里面通知一下就行了。现在这个项目会每天全量的 deploy 一遍主干的代码,所以其实还好。
本地调试不重要吧,我工作三年从来没用过本地调试。打足日志就行了,本地可以写一些小 demo 验证一下猜想。 实际上,线上也不存在给你 debug 的环境,一大堆复杂的依赖和多线程在上面跑,你单步又能调出啥呢。
提供一个思路:首先做好生产系统和测试环境的隔离,然后在测试环境部署一个网络代理软件,需要本地 debug 的时候,就通过代理加入到测试环境
首先如果你的微服务每次都得全部拉起来,才能测试的话,那得重新考虑一下这个架构。本地的话,几种方法- 搞个 kind, k3d 这种本地集群,部署到上面测试。- 用 www.telepresence.io/ 把远程的流量拦下来导入到你本地上面
直接通过 nodeport 形式把 k8s 服务开放即可
本地调试可以用 kt connect 或者 telepresence ,代理本机与 k8s 的 service ip 互通。
kubevpn 可以试试?
将你需要的服务,多部署一份,通过 nodeport 形式把 k8s 服务。并且本地跨模块调用时指定 serviceName
telepresence 或者 Nocalhost
这种最常见的情况不是 k8s 集群使用外部数据库吗 kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors修改 service 配置,让其直接访问到你本地。但是如果本地服务还需要继续调用 k8s 中其他服务的话可能又有些问题,还需要改其他配置。想想还有点爆炸
接你的方法还可以用 kt-connect 把远程流量导入本地测试 github.com/alibaba/kt-connect
可以本地指定服务发现的 ip 和端口. 对应的配置项是 spring.cloud.nacos.discovery.ip/port. 然后配置 k8s 内服务可以和本地指定的 ip 端口互通就可以. 这样本地只需要启动需要调试的服务也可以直接调用 k8s 内服务了.
为啥感觉大家都是在提供自己的想法,也就是之前基本没遇到过这种情况,也就是大家都没见过全面云原生的公司吗....
目前我们的解决方案是通过 openvpn ,具体可以搜索一下; k8s 集群可以使用 openvpn 打通本地开发电脑和 k8s 集群之间的通信,这样本地使用 openvpn 就可以连接到集群进行本地调试,楼上说的阿里开源 kt-connect 也可以,但是因为我们开发环境没有配置 https ,所以没办法通过 kt-connect 直接连接集群
试试阿里的 kt-connect
这两天去店里感受了下最新的橘子 4.0 系统。颠覆了我对国产手机系统的认知,关闭了几乎无广告内置的 app 包含系统 app 几乎可卸载,例如 x 语音助手之类的。浏览器,应用…
个人认为这是一个挺不错的从C语言到Linux系统开发的教程,这本是两个网上的文档。 其中 一本是《How To Think Like A Computer Scientist…
电脑每次开机都会自动打开 chrome 浏览器跳转到广告页面,由于不是什么弹窗程序,用一些软件也抓不到是什么流氓程序,就这么忍受的一段时间。 今天终于下定决心搞清楚到底是哪里出…