springcloud无注册中心时本地开发环境配置,适应k8s

前言

  最近的springcloud项目的生产环境要使用k8s,由于k8s已提供service实现服务发现,与Eureka的功能有重叠,所以想要删除Eureka,但又想保持开发代码与生产环境一致,所以需要构建springcloud无注册中心本地开发环境来解决这个问题。

基本思路

  feign调用从使用服务名改为使用url,其中url仍然使用服务名称,端口一律不写,默认80端口,k8s中创建服务名称也使用此名称;开发环境通过修改host与nginx代理转发url完成服务之间的调用。
完成后,开发环境代码上线无需进行任何修改可以部署至k8s环境,缺点是,本地调试时需要开启Nginx服务。

具体实现

处理feign代码

@FeignClient 配置url,实际访问http://user-service/,k8s的service名称建立时也需要固定为user-service。

@FeignClient(name="user-service", url="user-service")

添加本地host

host文件添加 127.0.0.1 服务名1 服务名2 服务名3 服务名4 ...

127.0.0.1 cloud-consumer user-service auth-service check-service

下载配置nginx

自行下载,在confi配置目录,新建proxy.conf,添加各服务的配置,关键点:server_name 服务名
proxy_pass 转发地址,按照实际情况编写。

### cloud-consumer ###
server {
    listen 80;
    server_name cloud-consumer;
    index index.jsp index.html index.html index.shtml;
    location / {
    proxy_pass http://127.0.0.1:9001;
    #Proxy Settings;
    #proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

### auth-service ###
server {
    listen 80;
    server_name auth-service;
    index index.jsp index.html index.html index.shtml;
    location / {
    proxy_pass http://127.0.0.1:9004;
    #Proxy Settings;
    #proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

修改 nginx.conf,将proxy.conf 包含入配置即可。

http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
    include proxy.conf;
}

完成

  代码调试期间运行nginx即可,服务之间本地feign调用通信时,即可通过nginx转发至其他服务。

你可能感兴趣的:(springcloud无注册中心时本地开发环境配置,适应k8s)