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
原文链接《How Google Inbox shares 70% of its code across Android, iOS, and the Web》 开发一个移动应用…
开始读书《大模型 RAG 实战》,经过平台好心人推荐,看了下大模型基础这本书,确实更好一些 要做一个支持 AI review 代码的功能,开发同学提交代码的时候就 rev…
安装了宝塔,尝试在 443 端口接受 UDP 流量后转发 发现压根就接收不到 UDP 流量,宝塔的技术说 443 端口是无法设置 udp 的.. 我想着 443 只是一个端…