乐趣区

关于springcloud:Spring-Cloud在k8s下使用IDEA进行本地开发

写在后面
咱们在 k8s 去掉了 Eureka 组件,引入 spring-cloud-kubernetes 组件。

一、所需工具或命令

  1. kubectl 命令
  2. Shadowsocks Server
  3. Shadowsocks Client
  4. KT Connect

原本只须要 kubectl 命令和 kt connect 就行了,次要是 kt connect 现有的 socks5 代理服务有点问题,至多在我这边是这样,0.0.12 版本的话 idea 外面的程序起不来,0.0.13-rc11 版本的话 vpn 和 socks5 延时高,常常超时。所以萌发了用 shadowsocks server 来替换 kt connect 外面的 socks5 服务(也就是 kt connect 这一步),kt 其余的性能还是依旧,这样就完满联合了。

如果是 mac 电脑或者 ubuntu 零碎的电脑的话用 0.0.12 版本的 kt 的 vpn 连贯是没有问题的,然而我还是倡议应用 socks5 的模式,因为这样不是所有的流量都走 vpn,而且其余的开发人员不须要在本机启动 vpn 代理,只须要通过 shadowsocks client 连上 k8s 内的服务,就能够应用 kt 命令了。

二、装置

2.1 装置 kubectl 命令

参考官网地址装置:https://kubernetes.io/zh/docs/tasks/tools/install-kubectl/,装置实现后在用户目录下 (Mac 或 Ubuntu 用户:/Users/xxxxxx ; Windows 用户: C:UsersAdministrator) 下手动建设 .kube 文件夹, 而后将群外面的 config 文件拷贝到这外面。操作完后应用命令 kubectl get pods 查看是否装置实现。如果失败认真查看官网装置步骤,重新安装。

装置实现后,批改 hosts 文件在其中增加上面记录(联合本人的 k8s 集群的 apiserver 地址来设置)

192.168.1.236 k8s.apiserver

2.2 装置 Shadowsocks Server 服务端

编写 yml 文件,并在 k8s 集群的 default 命名空间中执行。

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: shadowsocks-server-deployment
  namespace: default
  labels:
    app: shadowsocks-server-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: shadowsocks-server-pod
  template:
    metadata:
      labels:
        app: shadowsocks-server-pod
    spec:
      containers:
        - name: shadowsocks-server-container
          image: shadowsocks/shadowsocks-libev
          command: [
            # need to modify "-d" to k8s core-dns "--fast-open"
              "ss-server","-s","0.0.0.0", "-p", "8388", "-t", "300","-k", "代理明码", "-m", "aes-256-cfb", "-d", 
              "10.96.0.10,114.114.114.114", "-u"
          ]
          ports:
            - containerPort: 8388
              protocol: TCP
              name: tcp
            - containerPort: 8388
              protocol: UDP
              name: udp


---
apiVersion: v1
kind: Service
metadata:
  name: shadowsocks-server
  namespace: default
spec:
  type: NodePort
  ports:
    - port: 8388
      targetPort: 8388
      nodePort: 32088
      protocol: TCP
      name: tcp
    - port: 8388
      targetPort: 8388
      nodePort: 32088
      protocol: UDP
      name: udp
  selector:
    app: shadowsocks-server-pod

我这里间接用的是 NodePort 来开发端口,你们也能够应用 ingress 来裸露服务

2.3 装置 Shadowsocks Client 客户端

Mac 用户下载:https://github.com/shadowsocks/ShadowsocksX-NG/releases/download/v1.9.4/ShadowsocksX-NG.1.9.4.zip

Window 用户下载:https://github.com/shadowsocks/shadowsocks-windows/releases/download/4.1.10.0/Shadowsocks-4.1.10.0.zip

依照下图来设置

地址:因为应用 NodePort 地址能够填写任意一台 node 节点的物理 IP,这里是:192.168.1.237

端口:填写 NodePort 裸露的端口,这里是:32088

明码:填写 Shadowsocks Server 的 yml 中设置的明码即可

2.4 装置 KT Connect 客户端命令

参考官网装置步骤:https://alibaba.github.io/kt-connect/#/zh-cn/downloads 咱们应用 0.0.12 版本,装置完后应用命令 ktctl - v 查看是否依照实现

2.5 配置 IDEA

首先增加 k8s 的 namespace 环境变量

如果用的是 KT Connect 来建设 socks5 连贯的话则增加以下两个运行参数:

如果应用的是 Shadowsocks Client 来建设代理连贯的话则增加以下参数:

至于这个 http.proxyPort 这个端口号,在 Mac 下是 1087

在 Windows 下是 1080

三、应用 KT 进行本地联调

3.1 首先在本地的 IDEA 中启动要调试的服务
3.2 托管开发环境某个服务将流量引入本地
# 在命令行中执行以下命令
#-n default 是托管命名空间 (default) 下的 deployment 服务
#zsy-business-service-deployment 格局是【模块名称 -deployment】#--expose 8088 指定是本地启动的服务的端口
#这样就将开发环境下的 zsy-business-service 的流量代理到本地启动的服务
sudo ktctl -d -n default exchange zsy-business-service-deployment --expose 8088

留神:这个是齐全托管,不论开发环境中有几个这个服务的 pod,所有流量都托管到本地

3.3 间接公布本地服务

如果开发环境没有公布这个服务,则间接将本地服务公布到 k8s 中去,不须要托管

# localservice 改成本地服务名
#-n default 是将服务公布在命名空间 (default) 下
#--port 8080 是本地服务端口
sudo ktctl -d -n default run localservice --port 8080 --expose

参考资料

  1. https://zhuanlan.zhihu.com/p/…
  2. https://alibaba.github.io/kt-…
退出移动版