V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wganbleuthall
V2EX  ›  Kubernetes

springCloud 微服务 + K8s service discovery, 如何在集群外跑

  •  
  •   wganbleuthall · 2023-09-20 22:30:39 +08:00 · 2107 次点击
    这是一个创建于 454 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 因为我之前用的是 eureka, nacos 之类的,另起一个 nacos 服务器,再起微服务,然后本地跑测试
    • 但是如果切换到 k8s 环境该怎么办
      • 如何将所有 app 打包部署到 k8s 集群中,我能理解,但是如果几个 app 我想要快速的测试下,本地 idea 直接起一下,debug 一下,也就是所有的微服务集群外起起来,但是我又要利用 k8s 的 service 让它们互相发请求,这该咋做啊
    • 我就想到如果在工作中,一群开发都在 dev 上开发,然后要起起来测试,然后他们都 cicd 到本地 dev 的集群上在测试吗,如果想要本地快速测功能,或者单步调试该咋做啊
      • 用 mock 吗,拖慢开发速度啊
    20 条回复    2023-09-21 19:26:37 +08:00
    mooyo
        1
    mooyo  
       2023-09-20 22:51:43 +08:00
    本地 build 然后 push 到仓库上去覆盖吧,其实也不会很慢。本地 debug 就很麻烦了
    wganbleuthall
        2
    wganbleuthall  
    OP
       2023-09-20 23:00:32 +08:00
    @mooyo 我好奇实际工作怎么搞,每个开发都分配一个 dev 环境的命名空间,然后 push 测试自己的代码吗,而且如果微服务架构变复杂了,那不是更麻烦
    而且本地调试很重要吗,比如生产出啥问题,不得本地起起来一步步调试吗
    HonovaSV
        3
    HonovaSV  
       2023-09-20 23:02:35 +08:00 via Android
    这种情况就是很麻烦,要么 mock ,要么装一套环境自用远程 debug
    crsmk01
        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 年前就出来了这样的功能,鹅厂还在抄袭。
    coolair
        5
    coolair  
       2023-09-20 23:28:43 +08:00   ❤️ 1
    所以,想着有些公司,不管啥大大小小的项目都上微服务,就觉得很脑残。本来业务功能简单,没有几个访问量的应用,用单体做一把梭就能搞定的事,给你拆的乱七八糟,坑开发、坑测试、坑交付、坑运维……
    mooyo
        6
    mooyo  
       2023-09-20 23:44:21 +08:00
    @wganbleuthall 工作后的两个项目都是上云的,实际工作是开发环境一整套环境,不区分命名空间,谁要测试自己 deploy 自己的镜像上去测试。在某个群里面通知一下就行了。现在这个项目会每天全量的 deploy 一遍主干的代码,所以其实还好。
    mooyo
        7
    mooyo  
       2023-09-20 23:45:49 +08:00
    @wganbleuthall 本地调试不重要吧,我工作三年从来没用过本地调试。打足日志就行了,本地可以写一些小 demo 验证一下猜想。 实际上,线上也不存在给你 debug 的环境,一大堆复杂的依赖和多线程在上面跑,你单步又能调出啥呢。
    bringyou
        8
    bringyou  
       2023-09-21 02:31:16 +08:00
    提供一个思路:首先做好生产系统和测试环境的隔离,然后在测试环境部署一个网络代理软件,需要本地 debug 的时候,就通过代理加入到测试环境
    dayeye2006199
        9
    dayeye2006199  
       2023-09-21 02:36:20 +08:00   ❤️ 1
    首先如果你的微服务每次都得全部拉起来,才能测试的话,那得重新考虑一下这个架构。

    本地的话,几种方法
    - 搞个 kind, k3d 这种本地集群,部署到上面测试。
    - 用 https://www.telepresence.io/ 把远程的流量拦下来导入到你本地上面
    li24361
        10
    li24361  
       2023-09-21 08:27:55 +08:00
    直接通过 nodeport 形式把 k8s 服务开放即可
    agzou
        11
    agzou  
       2023-09-21 08:37:13 +08:00
    本地调试可以用 kt connect 或者 telepresence ,代理本机与 k8s 的 service ip 互通。
    fzdwx
        12
    fzdwx  
       2023-09-21 08:50:44 +08:00
    kubevpn 可以试试?
    cryboy007
        13
    cryboy007  
       2023-09-21 09:15:19 +08:00
    将你需要的服务,多部署一份,通过 nodeport 形式把 k8s 服务。并且本地跨模块调用时指定 serviceName
    mango88
        14
    mango88  
       2023-09-21 09:17:00 +08:00
    telepresence 或者 Nocalhost
    litchinn
        15
    litchinn  
       2023-09-21 09:18:23 +08:00
    这种最常见的情况不是 k8s 集群使用外部数据库吗
    https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors
    修改 service 配置,让其直接访问到你本地。
    但是如果本地服务还需要继续调用 k8s 中其他服务的话可能又有些问题,还需要改其他配置。想想还有点爆炸
    mightybruce
        16
    mightybruce  
       2023-09-21 09:32:57 +08:00
    @dayeye2006199
    接你的方法
    还可以用 kt-connect 把远程流量导入本地测试
    https://github.com/alibaba/kt-connect
    sunshengkai27
        17
    sunshengkai27  
       2023-09-21 09:37:38 +08:00
    可以本地指定服务发现的 ip 和端口. 对应的配置项是 spring.cloud.nacos.discovery.ip/port. 然后配置 k8s 内服务可以和本地指定的 ip 端口互通就可以.

    这样本地只需要启动需要调试的服务也可以直接调用 k8s 内服务了.
    wganbleuthall
        18
    wganbleuthall  
    OP
       2023-09-21 11:32:38 +08:00
    为啥感觉大家都是在提供自己的想法,也就是之前基本没遇到过这种情况,也就是大家都没见过全面云原生的公司吗....
    Bigger8
        19
    Bigger8  
       2023-09-21 14:02:05 +08:00
    目前我们的解决方案是通过 openvpn ,具体可以搜索一下; k8s 集群可以使用 openvpn 打通本地开发电脑和 k8s 集群之间的通信,这样本地使用 openvpn 就可以连接到集群进行本地调试,楼上说的阿里开源 kt-connect 也可以,但是因为我们开发环境没有配置 https ,所以没办法通过 kt-connect 直接连接集群
    besscroft
        20
    besscroft  
       2023-09-21 19:26:37 +08:00
    试试阿里的 kt-connect
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5821 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:31 · PVG 10:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.