前言
Traefik v2 版本已经发布有一段时间了,看到 v2 有一些很不错的功能:
- 支持TCP
- 支持路由中间件
- 支持灰度发布
- 支持流量复制
- 全新的 dashboard
- ...
看官网的文档和一些中文的教程都是使用docker的示例,有些细节理解起来有点吃力,通过可执行文件学习,可以更好的理解其中的一些细节。
下面描述一下 Traefik v2 源码编译安装,启动,并访问 dashboard的过程。
编译安装
1 获取最新源码
git clone git@github.com:containous/traefik.git
cd traefik
git checkout v2.1
2 生成 webui 的静态文件
cd webui
npm install
npm run build
可以看到 traefik/static 目录下生成了静态文件
3 使用go-bindata把静态文件都打包到 go 程序中
go generate
4 编译生成可执行文件 traefik
go build -v -o traefik ./cmd/traefik
5 配置文件
Traefik 中的配置发现是通过 provider 组件实现的
现在支持的 provider 有 docker、k8s、File 、Marathon 、Rancher
下面以 File 作为示例
- 静态配置文件 traefik.toml,仅在启动时被加载
[global]
checkNewVersion = true
sendAnonymousUsage = true
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.websecure]
address = ":443"
[log]
level = "DEBUG"
[api]
dashboard = true
[ping]
[providers]
[providers.file]
directory = "/path/config"
filename = "dynamic.yml"
watch = true
- 动态配置文件 dynamic.toml,可被热更新(无需重启进程)
[http.routers]
[http.routers.api]
rule = "Host(`127.0.0.1`)"
entryPoints = ["web"]
service = "api@internal"
6 启动 traefik 服务
./traefik --configfile=traefik.toml
7 浏览器访问 http://127.0.0.1, 可以打开 taefik dashboard
访问Traefik v2 的 dashborad,使用官方的 docker 示例,直接运行就可以了,但是源码编译安装的包,启动后访问 dashboard 一直 404,过程中却折腾了很久,主要是2,3步的文档中给的有点少,我google了很久,发现不少人也遇到同样的问题,都没有好的解决办法。最后是在阅读源码 dashboard 部分找到方法。