01 简介

0.1. 简介

images

Traefik是开源的边缘路由器,使发布服务变得有趣而轻松。它代表您的系统接收请求,并找出负责处理这些请求的组件。

Traefik 的与众不同之处在于,除了它的许多特性之外,它还能自动为您的服务发现正确的配置。 当 Traefik 检查您的基础设施时,它会发现相关的信息,并发现哪个服务为哪个请求服务。

Traefik本身就兼容所有主流的集群技术,例如Kubernetes,Docker,Docker Swarm,AWS,Mesos,Marathon,名单还在继续增加,并且可以同时处理多个(它甚至适用于在裸机上运行的旧版软件。)

使用 Traefik,不需要维护和同步一个单独的配置文件: 一切都是自动发生的,是实时的(没有重新启动,没有连接中断)。 使用 Traefik,您将时间花费在开发和部署系统的新特性,而不是配置和维护系统的正常工作状态。

开发Traefik,我们的主要目标是使其易于使用,我们相信您会喜欢的。

--- Traefik维护团队

0.2. 概念

0.2.1. 边缘路由

Traefik 是一个边缘路由器,这意味着它是通往平台的大门,它拦截并路由每一个传入的请求: 它知道所有的逻辑和每一个规则,这些逻辑和规则决定哪些服务处理哪些请求(基于路径、主机、请求头等等)。

images

0.2.2. 自动服务发现

传统上,边缘路由器(或反向代理)需要一个配置文件,其中包含通往服务的所有可能路由,而Traefik则从服务本身获取它们。部署服务时,附加一些信息,来告诉 Traefik 后台服务可以处理的请求的特征。

images

这意味着在部署服务时,Traefik 会立即检测到该服务,并实时更新路由规则。 反之亦然: 当从基础设施中移除一项服务时,该路由将相应地消失。 您不再需要用 IP 地址或其他规则混乱地创建和同步配置文件。

0.2.2.1. 许多不同的规则

在上面的示例中,我们使用请求路径来确定由哪个服务负责,当然也可以使用许多其他不同的规则。

0.2.2.2. 更新请求

在中间件部分,可以了解如何在将请求转发到服务之前更新请求。

0.2.2.3. Traefik如何发现服务

Traefik 能够使用集群 API 发现服务并读取附加信息。 在 Traefik,这些连接器被称为提供者,因为它们向 Traefik 提供配置。 要了解更多关于它们的信息,请阅读提供者概述部分。

0.3. 配置

images

Traefik 的配置可以指两件不同的事情:

  • 完全动态路由配置(称为动态配置)
  • 启动配置(称为静态配置)

动态配置包含定义系统如何处理请求的所有内容。 这种配置可以改变,并且是无缝热重加载,没有任何请求中断或连接丢失。

静态配置中的元素设置与提供者的连接,并定义 Traefik 将监听的入口点(这些元素不经常更改)。

不兼容的配置:请注意,Traefik v1.x 的旧配置现在不兼容 v2.x 配置。 如果您运行的是 v2,请确保您使用的是 v2配置。

0.3.1. 动态配置

Traefik 从提供者获得其动态配置: 无论是协调器、服务注册中心还是普通的旧配置文件。 由于此配置特定于您的基础结构选择,因此我们邀请您参考本文档的专门部分。

Https 证书也属于动态配置。 您可以添加 / 更新 / 删除它们,而无需重新启动 Traefik 实例。

0.3.2. 静态配置

在 Traefik 定义静态配置选项时有三种不同的、相互排斥的方法(同一时间只能使用一种) :

  1. 配置文件
  2. 命令行参数
  3. 环境变量

这些方法按照上面列出的顺序进行评估。

如果没有为给定的选项提供值,则应用默认值。 此外,如果一个选项具有子选项,而且没有指定这些子选项中的任何一个,那么也将应用一个默认值。

例如,--providers.docker 选项本身就足以启用 docker提供者,即使存在 --providers.docker.endpoint 之类的子选项。 一旦设置,此选项将设置(并重置) --providers.docker 的子选项的所有默认值。

0.3.2.1. 配置文件

在启动时,Traefik 在以下位置搜索名为 traefik.toml (或 traefik.ymltraefik.yaml)的文件:

  • /etc/Traefik/
  • $XDG_CONFIG_HOME/
  • $HOME/.config /
  • . (工作目录)

可以使用 configFile 参数覆盖它。

Traefik --configFile=foo/bar/myconfigfile.toml

0.3.2.2. 命令行参数

要获取所有可用参数的列表:

traefik --help
# or
docker run traefik[:version] --help
# ex: docker run traefik:2.0 --help

所有可用的参数也可以在这里找到。

0.3.2.3. 环境变量

所有可用的环境变量都可以在这里找到。

0.3.3. 可用的配置选项

所有的配置选项都记录在它们的相关章节中。 可以浏览菜单、提供者或路由部分中的可用特性,以查看它们的实际操作。

0.4. 部署Traefik

您可以使用以下方式安装 Traefik:

  • 使用官方 Docker 镜像
  • 使用二进制发行版
  • 从源代码中编译二进制文件

0.4.1. 使用Docker官方镜像

选择一个官方的 Docker 映像,并使用示例配置文件运行它:

docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik:v2.0

有关详细信息,请参阅 Docker 提供者文档。

0.4.1.1. 注意

  1. 更喜欢一个固定的版本,而不是最新的,可能是一个意外的版本。 例如:traefik:v2.0.0
  2. Docker镜像是基于Alpine Linux的官方镜像
  3. 所有的协调器使用docker镜像可以获取官方 Traefik docker镜像

0.4.2. 使用二进制发行版

发布页面获取最新的二进制文件。

检查下载文件的完整性

# 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

0.4.3. 从源码编译二进制文件

所有详情请参阅参考指南

上次修改: 12 April 2020