1
mooyo 2023-09-20 22:51:43 +08:00
本地 build 然后 push 到仓库上去覆盖吧,其实也不会很慢。本地 debug 就很麻烦了
|
2
wganbleuthall OP @mooyo 我好奇实际工作怎么搞,每个开发都分配一个 dev 环境的命名空间,然后 push 测试自己的代码吗,而且如果微服务架构变复杂了,那不是更麻烦
而且本地调试很重要吗,比如生产出啥问题,不得本地起起来一步步调试吗 |
3
HonovaSV 2023-09-20 23:02:35 +08:00 via Android
这种情况就是很麻烦,要么 mock ,要么装一套环境自用远程 debug
|
4
crsmk01 2023-09-20 23:23:33 +08:00
看上面的需求描述,可以考虑阿里云的端云互联( Alibaba Cloud Toolkit ) https://help.aliyun.com/zh/edas/w1h7u7
主要是从本地 Idea 里面安装 Alibaba Cloud Toolkit 插件,然后用了 SSH 代理或者使用 kubeconfig 的方式实现对 K8s 集群 Spring Cloud 服务进行访问的,按说 k8s service 也没问题。 调试的时候,可以从本地 Idea 启动应用发起调用或者被 K8s 集群里面部署的 Spring Cloud 服务调用。3 年前就出来了这样的功能,鹅厂还在抄袭。 |
5
coolair 2023-09-20 23:28:43 +08:00 1
所以,想着有些公司,不管啥大大小小的项目都上微服务,就觉得很脑残。本来业务功能简单,没有几个访问量的应用,用单体做一把梭就能搞定的事,给你拆的乱七八糟,坑开发、坑测试、坑交付、坑运维……
|
6
mooyo 2023-09-20 23:44:21 +08:00
@wganbleuthall 工作后的两个项目都是上云的,实际工作是开发环境一整套环境,不区分命名空间,谁要测试自己 deploy 自己的镜像上去测试。在某个群里面通知一下就行了。现在这个项目会每天全量的 deploy 一遍主干的代码,所以其实还好。
|
7
mooyo 2023-09-20 23:45:49 +08:00
@wganbleuthall 本地调试不重要吧,我工作三年从来没用过本地调试。打足日志就行了,本地可以写一些小 demo 验证一下猜想。 实际上,线上也不存在给你 debug 的环境,一大堆复杂的依赖和多线程在上面跑,你单步又能调出啥呢。
|
8
bringyou 2023-09-21 02:31:16 +08:00
提供一个思路:首先做好生产系统和测试环境的隔离,然后在测试环境部署一个网络代理软件,需要本地 debug 的时候,就通过代理加入到测试环境
|
9
dayeye2006199 2023-09-21 02:36:20 +08:00 1
首先如果你的微服务每次都得全部拉起来,才能测试的话,那得重新考虑一下这个架构。
本地的话,几种方法 - 搞个 kind, k3d 这种本地集群,部署到上面测试。 - 用 https://www.telepresence.io/ 把远程的流量拦下来导入到你本地上面 |
10
li24361 2023-09-21 08:27:55 +08:00
直接通过 nodeport 形式把 k8s 服务开放即可
|
11
agzou 2023-09-21 08:37:13 +08:00
本地调试可以用 kt connect 或者 telepresence ,代理本机与 k8s 的 service ip 互通。
|
12
fzdwx 2023-09-21 08:50:44 +08:00
kubevpn 可以试试?
|
13
cryboy007 2023-09-21 09:15:19 +08:00
将你需要的服务,多部署一份,通过 nodeport 形式把 k8s 服务。并且本地跨模块调用时指定 serviceName
|
14
mango88 2023-09-21 09:17:00 +08:00
telepresence 或者 Nocalhost
|
15
litchinn 2023-09-21 09:18:23 +08:00
这种最常见的情况不是 k8s 集群使用外部数据库吗
https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors 修改 service 配置,让其直接访问到你本地。 但是如果本地服务还需要继续调用 k8s 中其他服务的话可能又有些问题,还需要改其他配置。想想还有点爆炸 |
16
mightybruce 2023-09-21 09:32:57 +08:00
|
17
sunshengkai27 2023-09-21 09:37:38 +08:00
可以本地指定服务发现的 ip 和端口. 对应的配置项是 spring.cloud.nacos.discovery.ip/port. 然后配置 k8s 内服务可以和本地指定的 ip 端口互通就可以.
这样本地只需要启动需要调试的服务也可以直接调用 k8s 内服务了. |
18
wganbleuthall OP 为啥感觉大家都是在提供自己的想法,也就是之前基本没遇到过这种情况,也就是大家都没见过全面云原生的公司吗....
|
19
Bigger8 2023-09-21 14:02:05 +08:00
目前我们的解决方案是通过 openvpn ,具体可以搜索一下; k8s 集群可以使用 openvpn 打通本地开发电脑和 k8s 集群之间的通信,这样本地使用 openvpn 就可以连接到集群进行本地调试,楼上说的阿里开源 kt-connect 也可以,但是因为我们开发环境没有配置 https ,所以没办法通过 kt-connect 直接连接集群
|
20
besscroft 2023-09-21 19:26:37 +08:00
试试阿里的 kt-connect
|