Traefik Proxy V3版本正式发布: 支持WebAssem)bly等特性

本文最后更新于 260 天前, 如有失效请评论区留言.

特性简单介绍

主要摘自官方博客 Announcing Traefik Proxy v3.0 RC1

V3 版本增加了对流行、新兴技术的支持——WebAssemblyWasm)、OpenTelemetryKubernetes Gateway API

代理的核心是路由和安全,我们对路由规则的关键部分进行了迭代,并增加了对一些前沿技术的支持,如 HTTP/3、SPIFFE 和 Tailscale

路由与安全

  • HTTP/3 稳定版本支持,基于 quic-go
  • 支持 Brotli 压缩算法, 网站加载速度加快
  • grpc 支持
  • tailscale 联动,支持通过 tailscale 签发证书

扩展

支持 Wasm 开发 traefik 插件,提升性能与安全性。

〉WebAssembly(Wasm)是一种可在现代 Web 浏览器中运行的二进制代码格式。由于其高效性能和安全性,WebAssembly 在许多领域都得到了广泛应用。

可观测性

支持了 OpenTelemetry

集成 Kubernetes Gateway API

Traefik 可以说是 Gateway API 先锋,最早支持 GatewayAPI 版本的,现在全面支持,也很正常。

v2 迁移 v3

总体上来说,没有什么特别重点变更。如果你是从很早版本之前升级上来的可能需要注意了。

CRD 更新

目前更新 charts 版本不会自动更新已经存在的 crd,老版本升级可能需要注意,更新一下 CRD 资源

kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/master/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml

安装参数变更

# 老版本
    expose: true
# 新版本
    expose:
      default: true

资源版本

v3 版本移除对 traefik.containo.us 的支持

这个在 v2 版本里已经调整为 traefik.io/v1alpha1

IP 白名单插件调整

目前使用 ipAllowList,

ipWhiteList 已经废弃,可能后续版本就不支持了,暂时没影响

测试 Demo

apiVersion: v1
kind: Service
metadata:
  name: whoami
spec:
  ports:
    - protocol: TCP
      name: web
      port: 80
  selector:
    app: whoami
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoami
  labels:
    app: whoami
spec:
  replicas: 2
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      nodeSelector:
        node-role.kubernetes.io/bj: "true"
      containers:
        - name: whoami
          image: h2.ysicing.net/containous/whoami
          resources:
            limits:
              cpu: 100m
              memory: 128M
          ports:
            - name: web
              containerPort: 80
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: whoami-http
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`whoami.bjslb.ysicing.net`) && PathPrefix(`/notls`)
      kind: Rule
      services:
        - name: whoami
          port: 80
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: whoami-https
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`whoami.bjslb.ysicing.net`) && PathPrefix(`/tls`)
      kind: Rule
      services:
        - name: whoami
          port: 80
  tls:
   certResolver: myresolver

Chapters

Sponsor

Like this article? $1 reward

Comments