一、介绍
插件支持是一项强大的功能,允许开发人员向 Traefik 添加新功能并定义新行为。例如,插件可以修改请求或标头、发出重定向、添加身份验证等,提供与 Traefik中间件类似的功能。 然而,与传统的中间件不同,插件是动态加载的,并由嵌入式解释器yaegi执行。无需编译二进制文件,所有插件都是 100% 跨平台的,这使得它们易于开发并与更广泛的 Traefik 社区共享 Traefik v2.3 及更高版本提供对插件的支持
插件可能会以不希望的方式修改 Traefik 的行为。向生产 Traefik 实例添加新插件时要小心。
二、插件和 Traefik Pilot
Traefik 与 Traefik Pilot 一起启用插件生态系统。Traefik 操作员可以从在线目录中浏览和安装插件,该目录可从Traefik Pilot 仪表板的插件选项卡中获得
选择插件的磁贴会打开一个描述插件功能的页面,以及可选的可用配置选项.
在那里,选择安装插件将显示必要的代码,添加到Traefik代理的静态 and/or 动态配置中以完成安装过程
三、安装插件
对于一个特定的Traefik实例来说,一个插件要被激活,它必须在静态配置中被声明。当你选择安装插件时,要添加的代码是由Traefik Pilot UI提供的。
插件完全在启动过程中被解析和加载,这使得Traefik能够检查代码的完整性,并在早期捕获错误。如果在加载过程中发生错误,该插件将被禁用。
需要重新启动:出于安全考虑,在Traefik运行时,无法启动一个新的插件或修改现有的插件
一旦加载,中间件插件的行为就像静态编译的中间件。它们的实例化和行为是由动态配置驱动的。
3.1 静态配置
在下面的例子中,我们添加了blockpath
和rewritebody
插件:
--entryPoints.web.address=:80
--pilot.token=xxxxxxxxx
--experimental.plugins.block.modulename=github.com/traefik/plugin-blockpath
--experimental.plugins.block.version=v0.2.0
--experimental.plugins.rewrite.modulename=github.com/traefik/plugin-rewritebody
--experimental.plugins.rewrite.version=v0.3.0
3.2 动态配置
一些插件需要通过添加动态配置来配置。对于bodyrewrite
插件,例如:
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: my-rewritebody
spec:
plugin:
rewrite:
rewrites:
- regex: example
replacement: test