Traefik是开源的边缘路由器,使发布服务变得有趣而轻松。它代表您的系统接收请求,并找出负责处理这些请求的组件。
Traefik 的与众不同之处在于,除了它的许多特性之外,它还能自动为您的服务发现正确的配置。 当 Traefik 检查您的基础设施时,它会发现相关的信息,并发现哪个服务为哪个请求服务。
Traefik本身就兼容所有主流的集群技术,例如Kubernetes,Docker,Docker Swarm,AWS,Mesos,Marathon,名单还在继续增加,并且可以同时处理多个(它甚至适用于在裸机上运行的旧版软件。)
使用 Traefik,不需要维护和同步一个单独的配置文件: 一切都是自动发生的,是实时的(没有重新启动,没有连接中断)。 使用 Traefik,您将时间花费在开发和部署系统的新特性,而不是配置和维护系统的正常工作状态。
开发Traefik,我们的主要目标是使其易于使用,我们相信您会喜欢的。
--- Traefik维护团队
Traefik 是一个边缘路由器,这意味着它是通往平台的大门,它拦截并路由每一个传入的请求: 它知道所有的逻辑和每一个规则,这些逻辑和规则决定哪些服务处理哪些请求(基于路径、主机、请求头等等)。
传统上,边缘路由器(或反向代理)需要一个配置文件,其中包含通往服务的所有可能路由,而Traefik则从服务本身获取它们。部署服务时,附加一些信息,来告诉 Traefik 后台服务可以处理的请求的特征。
这意味着在部署服务时,Traefik 会立即检测到该服务,并实时更新路由规则。 反之亦然: 当从基础设施中移除一项服务时,该路由将相应地消失。 您不再需要用 IP 地址或其他规则混乱地创建和同步配置文件。
在上面的示例中,我们使用请求路径来确定由哪个服务负责,当然也可以使用许多其他不同的规则。
在中间件部分,可以了解如何在将请求转发到服务之前更新请求。
Traefik 能够使用集群 API 发现服务并读取附加信息。 在 Traefik,这些连接器被称为提供者,因为它们向 Traefik 提供配置。 要了解更多关于它们的信息,请阅读提供者概述部分。
Traefik 的配置可以指两件不同的事情:
动态配置包含定义系统如何处理请求的所有内容。 这种配置可以改变,并且是无缝热重加载,没有任何请求中断或连接丢失。
静态配置中的元素设置与提供者的连接,并定义 Traefik 将监听的入口点(这些元素不经常更改)。
不兼容的配置:请注意,Traefik v1.x 的旧配置现在不兼容 v2.x 配置。 如果您运行的是 v2,请确保您使用的是 v2配置。
Traefik 从提供者获得其动态配置: 无论是协调器、服务注册中心还是普通的旧配置文件。 由于此配置特定于您的基础结构选择,因此我们邀请您参考本文档的专门部分。
Https 证书也属于动态配置。 您可以添加 / 更新 / 删除它们,而无需重新启动 Traefik 实例。
在 Traefik 定义静态配置选项时有三种不同的、相互排斥的方法(同一时间只能使用一种) :
这些方法按照上面列出的顺序进行评估。
如果没有为给定的选项提供值,则应用默认值。 此外,如果一个选项具有子选项,而且没有指定这些子选项中的任何一个,那么也将应用一个默认值。
例如,--providers.docker
选项本身就足以启用 docker提供者,即使存在 --providers.docker.endpoint
之类的子选项。 一旦设置,此选项将设置(并重置) --providers.docker
的子选项的所有默认值。
在启动时,Traefik 在以下位置搜索名为 traefik.toml
(或 traefik.yml
或 traefik.yaml
)的文件:
/etc/Traefik/
$XDG_CONFIG_HOME/
$HOME/.config /
.
(工作目录)可以使用 configFile
参数覆盖它。
Traefik --configFile=foo/bar/myconfigfile.toml
要获取所有可用参数的列表:
traefik --help
# or
docker run traefik[:version] --help
# ex: docker run traefik:2.0 --help
所有可用的参数也可以在这里找到。
所有可用的环境变量都可以在这里找到。
所有的配置选项都记录在它们的相关章节中。 可以浏览菜单、提供者或路由部分中的可用特性,以查看它们的实际操作。
您可以使用以下方式安装 Traefik:
选择一个官方的 Docker 映像,并使用示例配置文件运行它:
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik:v2.0
有关详细信息,请参阅 Docker 提供者文档。
从发布页面获取最新的二进制文件。
检查下载文件的完整性
# Compare this value to the one found in traefik-${traefik_version}_checksums.txt
sha256sum ./traefik_${traefik_version}_linux_${arch}.tar.gz
提取下载的文件
tar -zxvf traefik_${traefik_version}_linux_${arch}.tar.gz
然后运行它
./traefik --help
所有详情请参阅参考指南。