基本概念#
EntryPoints
EntryPoints
是进入traefik
的入口点,定义端口接收数据包,可以是tcp
也可以udp
的包。
Routers
Middlewares
附加在路由之上,中间件可以在发送至后端服务器之前处理请求或响应。
Services
简单部署#
可以写一个docker-compose.yaml
文件编排traefik
与后端服务whoami
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
version: '3'
services:
reverse-proxy:
# The official v2 Traefik docker image
image: traefik:v2.10
# Enables the web UI and tells Traefik to listen to docker
command: --api.insecure=true --providers.docker --accesslog=true
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
whoami:
image: containous/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
|
使用如下命令启动服务
我们先采用最简单的方式,docker
作为provider
,traefik
如果使用docker
作为provider
,则
需要设置相关的标签,traefik
会根据标签来实现自动动态配置与服务发现的功能
至此,服务已启动,我们可以根据localhost:8080
来访问web ui
,可以看到相关的服务,路由等信息,dashboard
目前也只提供查看功能,不提供操作功能。
打开/etc/hosts
文件,将whoami.docker.localhost
映射到127.0.0.1
1
|
127.0.0.1 whoami.docker.localhost
|
浏览器访问whoami.docker.localhost
,可以看到如下输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
Hostname: 28977a8332dd
IP: 127.0.0.1
IP: 172.25.0.2
RemoteAddr: 172.25.0.3:53906
GET / HTTP/1.1
Host: whoami.docker.localhost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Sec-Ch-Ua: "Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "macOS"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
X-Forwarded-For: 172.25.0.1
X-Forwarded-Host: whoami.docker.localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: cde1e4fe2fd4
X-Real-Ip: 172.25.0.1
|
参考文档#
https://doc.traefik.io/traefik/