最近接触了traefik,写了几个traefik middle,感觉traefik很棒。

所以找了个时间看下traefik源码,学习一下。

以后出问题了也好解决。

clone代码,这里使用v2.6版本

1
git clone --depth 1 --branch v2.6 git@github.com:traefik/traefik.git

配置traefik

cmd/traefik目录下增加两个文件traefik.yamlhttp.yaml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# traefik.yaml
# traefik启动配置文件
global:
  checkNewVersion: true
  sendAnonymousUsage: true
entryPoints:
  web:
    address: :80
  websecure:
    address: :443
log:
  level: DEBUG
providers:
  file:
    filename: ./http.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# http.yaml
# traefik动态配置文件,这个修改后traefik会热加载
http:
  routers:
    api:
      rule: host(`prod.ppapi.cn`)
      service: svc1
      entryPoints:
        - web
  services:
    svc1:
      loadBalancer:
        servers:
          - url: "http://localhost:8999"

这里我是本地调试,所以配置了个prod.ppapi.cn指向127.0.0.1

1
2
# 启动一个service作为endpoint
docker run -d -p 8999:80 -it containous/whoami

启动traefik

1
2
cd cmd/traefik
go run traefik.go 

等待依赖下载完成启动traefik,输入curl prod.ppapi.cn(prod.ppapi.cn的host是127.0.0.1) 可以看到whoami输出信息。

到这一步,traefik代码环境就完成了,接下来就可以调试分析traefik代码了。