基本概念

  • 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`)"

使用如下命令启动服务

1
docker compose up

我们先采用最简单的方式,docker作为providertraefik如果使用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/