众所周知,在上个月重磅发布的 Traefik v3.0 版本,标志着云原生网关技术正式迈入了一个全新的纪元。这一里程碑版本囊括了诸多创新功能,旨在为用户提供卓越的安全性、出众的性能表现,以及无与伦比的易用体验。
在功能大升级的同时,Traefik v3.0 也紧跟技术发展趋势,首次引入了令人瞩目的SPIFFE(Secure Production Identity Framework for Everyone)安全标识框架、Tailscale 点到点加密虚拟私有网络,以及提供更快速安全连接的 HTTP/3 协议。
— 01 —SPIFFE:加强云原生环境的身份验证和授权
SPIFFE(Secure Production Identity Framework For Everyone)作为一种云原生环境下革命性的身份验证和授权框架,为确保服务之间安全通信提供了坚实的基础。通过采用标准化的工作负载身份识别方式,彻底解决了传统基于特权的访问控制模型中存在的痛点,如密钥管理混乱、跨云环境身份映射等棘手问题,将身份验证和授权模型与基础设施细节解耦,使之更加灵活、可扩展。
值得一提的是,Traefik 3.0 全面拥抱了 SPIFFE,并原生支持基于 SPIFFE 工作负载身份的 mTLS(mutual TLS) 双向认证机制。在该机制下,每个服务在启动时都会获取一个由 SPIFFE 颁发的加密身份证书,用于后续的服务间通信。只有通过证书交换并成功验证对方身份后,两个服务才能建立安全的加密连接,进行数据传输。
由此可见,SPIFFE mTLS 为 Traefik 提供了服务通信的"免疫力",确保只有经过授权的服务才能相互访问,有效隔离不受信任的服务,从根本上杜绝潜在的安全风险。
另一个值得关注的亮点是,SPIFFE 还支持为每个工作负载分配细粒度的身份和权限,甚至可以给定一个时间作用域的有效期限,实现精细化的权限控制。这就意味着,即使某个服务暴露在公共网络中,攻击者也无法模拟该服务的行为,从而最大限度地减少受攻击面。可以说,SPIFFE 让 Traefik v3.0 成为了云原生时代真正意义上的"安全守卫",为现代分布式应用铺就了安全坚实的基石。
在实际的业务场景中,我们可以通过在配置文件中声明,具体如下所示:
## Static configuration
spiffe:
workloadAPIAddr: localhost
在 Traefik v3.0 中,通过设置 workloadAPIAddr 来定义 SPIFFE Workload API 的地址,全局启用了 SPIFFE 功能。接下来,在 ServersTransport 级别配置路由时,我们可以利用 SPIFFE 信任域的强大功能,以确保 Traefik 只允许来自指定信任域的任何 SpiffeID。
基于此配置使得 Traefik 能够更精确地控制和管理与启用 SPIFFE 的后端之间的连接。通过与工作负载 API 的连接,Traefik 可以获取 x509-SVID,以确保与后端的通信的安全性和保护性。
## Dynamic configuration
http:
serversTransports:
mytransport:
spiffe:
trustDomain: spiffe://trust-domain
— 02 —Tailscale:简化云原生应用的安全连接
作为一种强大的网状网络服务,Tailscale 专为创建安全连接而设计。它能够轻松实现跨云、跨地域和跨设备的应用互联,为我们所设计的网络架构提供灵活和可靠的解决方案。
现在,Traefik v3.0 与 Tailscale 进行了集成,为我们的架构带来了更便捷的功能。通过与Tailscale 的集成,Traefik 能够直接从 Tailscale 获取 TLS 证书,并将其应用于保护 Traefik 路由的服务。
这种集成的好处是显而易见的:我们无需繁琐地管理和维护 TLS 证书,而是直接从 Tailscale 获得所需的证书,确保我们的服务在通信过程中始终得到有效的保护。
无论是在多云环境下、跨越不同地理位置、还是连接多种设备,Traefik 和 Tailscale 的集成为我们提供了更高级的安全性和便捷性。它们共同为我们的应用程序提供了无缝的连接和保护,让我们的网络架构更加强大和可靠。
要从 Tailscale 获取 TLS 证书,需要在动态配置中配置 Tailscale 证书解析器,具体操作如下所示:
certificatesResolvers:
devopsresolver:
tailscale: {}
接下来,我们需要做的便是从路由或入口点进行引用,以下是基于 Kubernetes ingress 资源中的一个简单示例,具体如下:
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: devops
spec:
entryPoints:
- websecure
routes:
- match: Host(`monitoring.devops.ts.net`) && Path(`/metrics`)
kind: Rule
services:
- name: devops
port: 8080
tls:
certResolver: devopsresolver
— 03 —HTTP/3:提升云原生应用的性能
HTTP/3 作为下一代超越 HTTP/2 的应用层协议,融合了 QUIC 传输层协议的多项创新,在提升网络性能和效率方面颇有卓越建树。首先,HTTP/3 借助 QUIC 的多路复用特性,不仅能在单一连接中并行处理多个请求和响应,还能够通过更智能的拥塞控制和重传机制,实现更佳的带宽利用率和更低的延迟。其次,HTTP/3 基于 UDP 构建,无需昂贵的 TCP 握手开销,可以显著缩短连接建立时间。再加上 0-RTT 和连接迁移等创新功能,HTTP/3有望为全球用户带来极速体验。
令人振奋的是,Traefik v3.0 作为先行者,率先支持并全面拥抱了 HTTP/3 协议。通过与 QUIC 的紧密合作,Traefik 不仅能在总体上降低延迟,提高吞吐量,更能有效减少 CPU 和内存等资源的消耗,为云原生应用的高性能交付注入了新的动能。可以预见,借助 Traefik v3.0 + HTTP/3 的强强联手,未来云原生应用必将为全球用户带来极致流畅、毫无卡顿的极致体验。
通常,我们需要在入口点上启用 HTTP/3,具体可参考如下:
entryPoints:
foo:
http3: {}
需要注意的是,由于 HTTP/3 实际上使用 UDP,当 Traefik 在启用了 HTTP/3 的端口 N 上配置 TCP 入口点时,启动的底层 HTTP/3 服务器也会自动监听 UDP 端口N。因此,这意味着端口 N 不能被另一个 UDP 入口点使用。由于 HTTP/3 需要使用 TLS,因此只有启用了 TLS 的路由器才能与 HTTP/3 一起使用。
众所周知,简单和出色的用户体验一直是 Traefik 的核心价值。综合 SPIFFE 身份验证、Tailscale 加密网络和 HTTP/3 高性能协议等一系列创新技术,Traefik v3.0 可谓是为云原生时代量身打造的"安全屏障"和"高速公路"。无论是从确保服务间通信的安全性,还是提升分布式应用的高效运行,亦或是为终端用户带来无与伦比的极速体验,Traefik v3.0 在每一个层面都展现出了独一无二的翘楚实力。
毫无疑问,Traefik v3.0 是通往云原生时代的理想选择和不二之路,将安全性、性能和易用性高度融合,为企业构建现代化、高弹性的云原生架构提供了坚实保障。未来,我们有理由相信:在 Traefik v3.0 的引领下,云原生将成为应用创新和数字化转型的驱动力,引领技术向更高维度迈进。
Reference :
[1] https://doc.traefik.io/traefik/v3.0/https/spiffe/?ref=traefik.io
[2] https://doc.traefik.io/traefik/v3.0/https/tailscale/?ref=traefik.io
[3] https://doc.traefik.io/traefik/v3.0/routing/entrypoints/#http3_1
Adiós !
··································