Hello folks,我是 Luga,今天我们来聊一下云原生生态中的网关技术 – 由 Traefik Labs 开发的开源项目 Traefik
Proxy,一个诞生于 8 年前、在社区的帮助下已成为现代云原生基础设施堆栈的重要组成部分。

一、Traefik 发展历程简要回顾

时光荏苒,白驹过隙 …

距离 Traefik 上一个主要版本 v2.0 发布,已经过去了近五年。在这五年里,Traefik
以其强大的功能、灵活的配置和易用的特性,赢得了全球开发者的青睐,成为了业界领先的反向代理和负载均衡器之一。

对于 Traefik 的发展历程,我们可以通过如下几个数字来进行概要性总结:

  • 超过 30 亿次下载量: Traefik 的受欢迎程度可见一斑。
  • 超过 700 名贡献者: 庞大的社区为 Traefik 的不断发展提供了强劲动力。
  • DockerHub 排名前 15: Traefik 在开发者社区中拥有广泛的影响力。
  • 46,000 个 GitHub star: Traefik 的代码质量和受欢迎程度得到了高度认可。
  • 连续五年蝉联 API 网关排名第一: Traefik 在 API 网关领域的地位无可撼动。

二、Traefik Proxy v3.0 RC1 里程碑特性概括

在此版本(v3.0 RC1)中,主要围绕几个关键方面进行了增强性设计。

首先,增加了对流行的新兴技术的支持及优化——WebAssembly (Wasm)、OpenTelemetry 以及 Kubernetes Gateway
API。这些技术的引入为用户提供了更广泛的选择和更高的灵活性。

同时,基于 Proxy
的核心基石——“路由”和“安全性”等特性,对路由规则的一些关键部分进行修改,旨在提供更强大、更可靠的路由功能,使用户能够更好地管理和控制流量的流向。

此外,还添加了对一些前沿技术的支持,如 HTTP/3、SPIFFE 和 Tailscale。通过支持
HTTP/3,我们提升了性能和效率,使用户能够更快地传输数据。SPIFFE 技术的引入增强了安全性,为用户提供了更可靠的身份验证和授权机制。而
Tailscale 技术的支持则使用户能够更方便地建立安全的网络连接,实现跨网络的通信。

三、Traefik Proxy v3.0 RC1 里程碑特性解析

1. 引入 WebAssembly 支持:扩展性和灵活性再升级

早在 2019 年,随着 Traefik v2 的发布,引入了扩展引擎 Yaegi,使得能够为其上下文开发中间件(或提供程序)。

作为一个极其强大的解释器引擎,Yaegi 边界俨然已超越了 Traefik 本身。但考虑到其性质,Yaegi 仍然需要做很多工作来支持完整的 Go
规范并跟上该语言的每个版本,此种场景下,会导致添加极具挑战性的功能变得困难。

Traefik v3.0 RC1 中添加了对 WebAssembly (Wasm) 技术的支持。WebAssembly
是一种低级的、可执行的二进制格式,可以在多种环境中运行,包括浏览器和服务器。Traefik 通过 WebAssembly 支持,可以在 WebAssembly
环境中执行更多的功能,例如扩展 Traefik 的功能或实现新的插件。这一支持将使 Traefik 更加灵活和可扩展。

Traefik 对 Wasm 的支持包括以下功能:

(1) 将 Wasm 模块作为路由器

Wasm 模块可以用来定义路由规则,并根据请求将流量路由到不同的服务。通过这种方式,用户可以根据自定义的逻辑和需求,灵活地控制流量的分发和路由。

# 使用 Wasm 模块定义路由规则

routers:
  wasm:
    # Wasm 模块的路径
    module: /path/to/wasm/module.wasm
    # Wasm 模块的导出函数
    function: router

# 将流量路由到不同的服务

services:
  service1:
    # 匹配 /path/to/service1 的请求
    path: /path/to/service1
  service2:
    # 匹配 /path/to/service2 的请求
    path: /path/to/service2