简介
Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。
核心概念:
当启动Traefik时,需要定义entrypoints
,然后通过entrypoints的路由来分析传入的请求,来查看他们是否是一组规则匹配,如果匹配,则路由可能将请求通过一系列的转换过来在发送到服务上去。
Providers
用来自动发现平台上的服务,可以是编排工具、容器引擎
Entrypoints
监听传入的流量,是网络的入口点,定义了接受请求的端口(HTTP或者TCP)
Routers
分析请求(host,path,headers,SSL等),负责将传入的请求连接到可以处理这些请求的服务上去
Service
将请求转发给应用,负责配置如何最终将处理传入请求的实际服务
Middlewares
中间件,用来修改请求或者根据请求来做出判断,中间件被附件到路由上,是一种在请求发送到服务之前调整请求的一种方法
安装
使用helm在k8s中安装
暴露dashboard服务
Host
为你的域名,写好配置清单之后kubectl apply
一下就好了.
最后打开浏览器访问 http://traefik.nblh.local:39281/dashboard/ 即可(注意dashboard后面还有个/
不然访问不了).
上面的39281
为traefik NodePort的映射端口,这里要换成实际自己的(没有LoadBlancer的话).
docker中运行
使用场景
路由
应用清单文件并查看结果:
打开dashboard可以看到新创建的route:
打开浏览器访问 whoami.nblh.local:39281:
反向代理
下面以反代tcp MySQL服务为例。
- 默认配置文件下,只有
traefik
(9000)、web
(8000)、websecure
(8443)以及metrics
(9100)开放,如果想要反代MySQL tcp又想自定义端口的话,需要单独在配置文件中进行配置,下面以helm 安装的traefik为例:
修改完成之后发布helm chart:
可以看到MySQL的13306已经映射到NodePort的37197
端口.
2. 编写反代tcp的清单文件:
应用该清单文件:kubectl apply -f traefik-tcp-mysql.yaml
.
3. 检查与测试:
在dashboard中检查:
现在就可以使用MySQL客户端进行连接啦,比如使用mycli工具进行连接:
Done.
参考链接