各位大佬,我想我还需要澄清一下
由于上面的条件显示,所以我才会考虑使用传统的宿主机方式进行开发环境部署。
1
OceanBreeze 2023-11-29 09:01:20 +08:00 via iPhone
开发人员需要和开发环境相互调用---没看懂。
|
2
harvies 2023-11-29 09:02:55 +08:00 via Android
配置下静态路由,本地环境就可以访问 service 的 cluster ip 了
|
3
DoctorDeng 2023-11-29 09:03:27 +08:00
改下应用网络,直接使用宿主机网络,不过这样可能会出现端口冲突,需要规划下各个应用端口使用
|
4
gitrebase 2023-11-29 09:05:31 +08:00
开发环境怎么能网络调用其他的服务呢,单测的话 mock 掉就好了,想运行发测试环境就行
|
5
cookii OP @OceanBreeze developer 的 pc 需要调用 dev 环境上的 server
|
6
orange2023 2023-11-29 09:09:21 +08:00
路由器配置下 K8 网段的静态路由表
|
7
xiaobai1213 2023-11-29 09:11:41 +08:00 1
集群里起一个 vpn
或者使用 ingress 、metallb 这种工具直接暴露出来 |
8
cookii OP |
9
chaleaochexist 2023-11-29 09:14:14 +08:00
我不是 java 栈的, 机会难得, 想请教大佬.
>>> Java 项目,spring cloud 技术栈。因为和 springcloud 体系耦合很重,一下子剥离不开,还需要继续使用 springcloud 。 剥离之后使用什么技术栈啊? |
10
cookii OP @chaleaochexist 直接用 springboot 就行了。或者任意 web 框架都可以,只关注 http 协议,不关注具体框架
|
11
aapeli 2023-11-29 09:22:56 +08:00 1
推荐使用 telepresence , 可以帮助开发者更方便的进行 k8s 环境下的应用开发,它能让你的本机直接访问到 k8s 集群内的服务,也可以将集群内的请求流量劫持到本机进行处理,这样就不需要在开发调试中反复进行构建镜像,推送镜像,部署服务的流程了,直接在本地一站式完成,比较方便。
https://github.com/telepresenceio/telepresence |
12
aapeli 2023-11-29 09:24:12 +08:00
|
13
DoctorDeng 2023-11-29 09:25:56 +08:00 1
既让网络控制不了,就部署一个 VPN ,我之前弄过一个类似的,在一台服务器上部署一个 v2ray ,然后电脑连接到该服务器 v2ray ,这样本地电脑就可以轻松访问只有服务器才能访问的资源了
|
15
cookii OP @DoctorDeng 感谢大佬,vpn 的方案我去研究一下。
|
16
aapeli 2023-11-29 09:32:34 +08:00
@imzhoukunqiang 没在 win 下装过,你试试,如果不行可以在 wsl 里试试
|
17
sampeng 2023-11-29 09:37:02 +08:00 via iPhone
@imzhoukunqiang 这是个假需求
|
18
serialt 2023-11-29 09:50:22 +08:00
okteto 可以了解一下,本地编辑代码,syncthing 自动同步到 pod 里
|
19
xomix 2023-11-29 10:05:07 +08:00
你无非就是想把容器当宿主机使用,你把你需求报你的运维人员看看他们能不能给你们提供方案,不能你就部署容器的时候往里面丢类似 webmin 、1panel 这样的管理套件然后让运维人员给你们暴露端口即可。
楼上这些建议有点偏离你的本质需求。 |
21
idontnowhat2say 2023-11-29 10:25:10 +08:00
说明你们这个 dev 环境的 k8s 搭建的时候对开发的需求考虑的不周到。遇到同样的问题,我搭建的 k8s 集群用的 cilium 的 bgp 路由方案,pod IP 和宿主机 IP 在同一个大二层。on-premises 的 本地开发机和 pod 容器 三层路由互相可达。服务注册到注册中心的地址既可以是开发机的地址,也可以是 pod 的地址,由于网络互通,对开发均无感。
|
22
ldyisbest 2023-11-29 11:15:35 +08:00 1
直接 k8s 里面起容器开发,idea 、vscode 都支持 remote development
|
23
mightybruce 2023-11-29 12:24:07 +08:00
telepresence 或者 kt-connect 都可以将集群内的请求流量劫持到本机进行处理
https://github.com/telepresenceio/telepresence https://github.com/alibaba/kt-connect |
24
julyclyde 2023-11-29 15:28:33 +08:00
没明白你说的“宿主机”到底是个啥
你说的“没有服务器 root 权限”这个服务器和那句宿主机不是同一个东西吗? |
25
liaoliaojun 2023-11-29 15:53:29 +08:00
同意 22 楼的方案,容器内开发。提升效率方便摸鱼!~
|
26
JayZXu 2023-11-29 16:09:55 +08:00 1
这个我有经验,我是这样弄的。
1.服务打开 NodePort 获取宿主机映射端口 2.在配置容器启动命令,固定在注册中心注册使用的 ip 和 port 。 比如 nacos 在 spring 里固定就传--spring.cloud.nacos.discovery.ip=xxx.xxx.xxx.xxx --spring.cloud.nacos.discovery.port=xxxx 这样开发在注册中心寻找服务时就能正确命中 k8s 中部署的服务 这个方法由于 nacos 注册的为宿主机映射端口,所以网络性能要弱于 ClusterIP ,不过开发环境一般不会有网络压力,所以可以忽略了 |
27
zhenjiachen 2023-11-29 16:30:33 +08:00
我觉得用了 k8s 就不要使用注册中心了,直接使用 k8s 的 service 来做服务发现,本地测试不启动服务测试,而是写单元测试,跨服务调用的接口使用 mock ,实在不能 mock 的再考虑暴露端口来调用,不需要服务发现就不存在要把服务注册到注册中心了。只需要其它服务的地址就行了。
|
28
cookii OP @zhenjiachen 正常来说肯定是这样的,但我们是个老项目进行改造,有历史包袱需要兼顾。一时半会还没办法抛弃这套东西。
|