traefik 2.x 不同的另类

traefik之docker-compose.yml

traefik 一般需要一个配置文件来管理路由,服务,证书等。我们可以通过 docker 启动 traefik 时来挂载配置文件,docker-compose.yaml 文件如下
traefik 默认有一个 dashboard,通过 :8080 端口暴露出去。我们可以在浏览器中直接通过 :8080 访问,但是

使用 IP 地址肯定不是特别方便,此时我们可以配置 Host
在公网环境下访问有安全性问题,此时可以配置 basicAuth,digestAuth,IpWhiteList 或者 openVPN

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'

services:
reverse-proxy:
image: traefik
ports:
- "52080:80"
- "52081:8080"
volumes:
- ./traefik.toml:/etc/traefik/traefik.toml
- /var/run/docker.sock:/var/run/docker.sock
container_name: traefik
labels:
- "traefik.http.routers.api.rule=Host(`www.hong.local`)"
- "traefik.http.routers.api.service=api@internal"

traefik.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
## Static configuration
[global]
checkNewVersion = true
sendAnonymousUsage = false

[entryPoints]
[entryPoints.http]
address = ":80"

[entryPoints.traefik]
address = ":8080"

[api]
insecure = true
dashboard = true
#debug = true


[providers]
[providers.docker]
endpoint = "unix:///var/run/docker.sock"
defaultRule = "Host(`{{ normalize .Name }}.docker.localhost`)"
# 限制服务发现范围
# 如果设置为 false, 则没有 traefik.enable=true 标签的容器将从生成的路由配置中忽略
exposedByDefault = false
#[providers.file]
# filename = "dynamic_conf.toml"
# watch = true
[metrics]
[metrics.prometheus]

whoami之docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
whoami:
image: containous/whoami
labels:
# 声明公开此容器访问
- traefik.enable=true
# 服务将响应的域
- traefik.http.routers.whoami.rule=Host(`www.jun.local`)
networks:
default:
external:
name: traefik_default

那 whoami 这个 http 服务做了什么事情呢

暴露了一个 http 服务,主要提供一些 header 以及 ip 信息
配置了容器的 labels,设置该服务的 Host 为 whoami.docker.localhost,给 traefik 提供标记