一文读懂 Traefik v 2.6 企业版新特性

简介: Traefik Enterprise 是一种统一的云原生网络解决方案,将 API 管理、入口控制和服务网格整合到一个简单的控制平面中。Traefik Enterprise 为整个组织的开发人员和运营团队减轻了微服务网络的复杂性。


    Traefik Enterprise 是一种统一的云原生网络解决方案,将 API 管理、入口控制和服务网格整合到一个简单的控制平面中。Traefik Enterprise 为整个组织的开发人员和运营团队减轻了微服务网络的复杂性。其核心组件:

    1、Ingress Proxies - 入口代理

    入口代理主要为接受来自外部网络的请求并根据自定义规则定义和行为将它们转发至集群上运行的服务的工作节点。

    2、Mesh Proxies - Mesh 代理

    Mesh 代理管理集群上服务之间的内部通信,以便它们可以协同工作,同时提供服务间身份验证、速率限制和流量拆分等功能。

    3、Controllers - 控制器

    控制查询网络基础设施以生成适当的路由配置,然后将其分发至代理节点。除此之外,控制器还存储有关集群的所有数据,通常,可以通过 API 访问这些数据。

    所有 Traefik Enterprise 节点类型都可以通过添加更多节点来水平扩展。它们一起形成了一个高可用性集群,可以自主维护自己的运行状况。

    不仅如此,Traefik Enterprise 也是建立在开源 Traefik Proxy 和 Traefik Mesh 之上,提供独家的一体化、高可用性、可扩展和分布式功能,并结合对生产级部署的高级捆绑支持。



    Traefik Enterprise v2.6 与 2022 年 3 月 上旬正式面向大众,相比半年前发布的 v2.5,此版本是统一云原生网络解决方案的最新更新,也是一个新的里程碑。值得注意的是,此版本的核心要点主要聚焦在 OpenID Connect (OIDC) 层面。在构建、打包机制中,引入了与 ARM64 兼容的 Docker 镜像和二进制文件。现在,让我们深入了解 Traefik Enterprise v2.6 所带来的新功能特性。

    正如之前所述,Traefik Enterprise v2.6 的发布主要聚焦于 OpenID Connect (OIDC) 相关的多项功能改进,涉及 OIDC 状态模式、 Microsoft AD 支持、Vault 命名空间和 API 门户增强功能等。

OIDC 中间件的有状态模式

    Traefik Enterprise v2.6 包括为 OIDC 中间件添加新的有状态模式。之前的 OIDC 中间件提供了无状态选项,要求会话数据与 Cookie 一起存储。 Cookie 可能会变得太大,当它们这样做时会在客户端引入延迟。

    使用新的有状态模式,用户可以将所有会话数据安全地存储在 Traefik Enterprise 外部的 K/V 存储中,完全消除了在客户端应用程序上存储 Cookie 的开销。目前支持的 K/V 存储包括 Consul、Etcd、Zookeeper 和 Redis。启用后,它们可以将用于通过 OIDC 进行身份验证的客户端请求的 Cookie 的总大小从数百 KB 减少到仅几个字节。有状态模式的引入将降低延迟并提高效率。

    接下来,我们基于如下的 OIDC 改进示例来简要了解一下 OIDC 中间件的有状态模式。

    下面为一个如何将 OIDC 配置为使用会话存储的简要示例,其中自定义发现和身份验证参数应用于 Traefik Enterprise 和身份验证服务器之间的授权流。具体配置可参考如下所示:


# Static Configuration
authSources:
  my-oidc-source:
    oidc:
      issuer: "http://my-auth-server-addr/auth/realms/traefik"
      clientID: "demo-app"
      clientSecret: "my-app-secret"
      #Required by Microsoft AD when returning custom claims
      discoveryParams:
        app-id: my-app-id
sessionStorages:
  consulStore:
    consul:
      tls: {}
      endpoints:
        - "my-consul-server:8501"

    动态配置可参考如下所示:


# Dynamic Configuration
http:
  middlewares:
    my-oidc:
      plugin:
        oidcAuth:
          source: my-oidc-source
          scopes:
            - openid
          redirectUrl: "/callback"
          session:
            store: consulStore
            name: "%s-session"
            path: "/"
            secret: my-secret-token
          # Overrides the prompt-consent option during the authorization phase with the IDP
          authParams:
                prompt: none
          forwardHeaders:
            X-Traefik-Group: groups
          claims: Contains(`groups`, `admin`)

支持 Microsoft AD

    Traefik Enterprise v2.6 还带来了两个新的自定义选项,可以覆盖通常的 OIDC 授权流程。在使用自定义声明或启用单点登录时,这些选项改进了与 Microsoft Active Directory (AD) 的集成,而无需用户登录后的授权。

支持 HashiCorp Vault 命名空间

    此版本的 Traefik Enterprise 改进了对 HashiCorp Vault 和 Consul 的支持。它通过支持其名称空间隔离功能来确保与 HashiCorp 的企业产品的兼容性。

    目前,Traefik Enterprise 通过两个独立的集成支持 Vault。首先,Traefik 的证书解析器利用了 Vault PKI 机密引擎。其次,证书存储使用其 K/V 机密引擎。由于没有命名空间配置选项,因此无法连接到使用该功能的 Vault 企业实例,例如 HashiCorp 的托管选项,它默认使用命名空间。

    我们先来看一下 Vault PKI 配置示例,具体如下所示:


certificatesResolvers:
     vaultpki:
       vault:
         url: "https://vault-cluster.mydomain:8200"
         auth:
           token: "my-secret-token"
         enginePath: "pki"
         role: "vault-role"
         namespace: "admin"

    接下来,我们再来看一下 Vault K/V 配置示例,具体可参考如下所示:


plugin:
    vault:
      url: "https://vault-cluster.mydomain:8200"
      auth:
        token: "my-secret-token"
      enginePath: "kv"
      syncInterval: "5s"
      rescanInterval: "60s"
      namespace: "certs"

    如果大家有兴趣了解有关使用最新版本 Traefik Enterprise 更多的功能特性信息,请查看此博客文章“Lock Down Your Network with Traefik Enterprise and Vault.”。

API 门户增强

    Traefik Enterprise v2.6 为 API 门户带来了更有价值意义的功能增强,所有这些都是基于客户的要求而定的。在之前的 Traefik Enterprise 版本中,API 门户仅能读取 JSON 格式文件。而基于此版本,其现在也按照 Open API 的规范读取 YAML 文件。

    除此之外,在 Traefik Enterprise v2.6 版本,还支持更多关于用户如何获取 API 端点的配置选项。大家现在可以依据自身的业务场景需求在 URL 中指定参数并在后端指定 API 规范的端点路径。我们来了解一下在如下提供方环境下的相关配置情况,具体可参考:

    基于 Docker 配置示例,如下所示:


labels:
  - "traefik.http.routers.openapi-yaml.entrypoints=web"
  - "traefik.http.routers.openapi-yaml.rule=Host(`openapi.docker.localhost`)"
  - "traefik.http.services.openapi-yaml.loadbalancer.server.port=8080"
  - "traefik.http.services.openapi-yaml.loadbalancer.apiportal.path=spec.yaml"

    基于 Kubernetes 配置示例,如下所示:


apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: default
  annotations:
    traefik.ingress.kubernetes.io/service.apiportal.path: spec.json
spec:
  ports:
    - name: web
      port: 80
  selector:
    app: traefiklabs
    task: whoami

    基于 Traefik Mesh 的云原生拓扑结构示意图,如下所示:



    其实,从本质上而言,Traefik Enterprise 2.6 Version 只是统一云原生网络堆栈生态体系的一个最新版本。或许,在不久的将来,我们将迎来发展更好的 Traefik Enterprise 产品,以帮助不同企业、组织简化其现代分布式应用程序操作。与此同时,基于 Traefik Enterprise 所支持传统和云原生应用程序的混合支持,从而能够帮助各大厂商、企业以及组织机构逐步、安全地迁移到微服务平台,使其成为云原生生态体系的最佳解决方案之一。


# 参考资料


相关文章
|
11月前
|
API 微服务
Traefik 微服务 API 网关教程(全)
Traefik 微服务 API 网关教程(全)
|
6月前
|
机器学习/深度学习 缓存 人工智能
一文了解DeepSeek及应用场景
本文详细介绍了DeepSeek及其应用场景,涵盖了大模型的发展历程、基本原理和分类(通用与推理模型)。文章分析了DeepSeek的具体特性、性能优势、低成本训练与调用特点,以及其技术路线(如MoE、MLA架构),并与竞品进行了对比。此外,还探讨了DeepSeek在金融风控等领域的应用前景。
一文了解DeepSeek及应用场景
|
9月前
|
人工智能 搜索推荐
PersonaCraft:首尔国立大学推出的单参考图像生成多身份全身图像技术
PersonaCraft是由首尔国立大学推出的创新技术,能够从单一参考图像生成多个人物的逼真全身图像。该技术结合了扩散模型和3D人类建模,有效处理人物间的遮挡问题,并支持用户自定义身体形状调整,为多人图像合成树立了新标准。
198 9
PersonaCraft:首尔国立大学推出的单参考图像生成多身份全身图像技术
|
11月前
|
Linux 虚拟化
Vmware 傻瓜式安装(不可不知道的Linux基础知识和技术 01)
本文介绍了VMware虚拟机的下载与安装步骤。首先,通过提供的网盘链接下载VMware安装包。接着,详细描述了安装流程,包括接受协议、选择安装路径(建议避免系统C盘)、取消更新选项等。最后,输入许可证密钥完成安装,并展示了打开虚拟机后的主界面。整个过程简单易懂,适合新手操作。
336 2
|
存储 算法 计算机视觉
Baumer工业相机堡盟工业相机软件CameraExplorer常见功能使用说明一
Baumer工业相机堡盟工业相机软件CameraExplorer常见功能使用说明一
407 0
|
监控 前端开发 测试技术
三三裂变系统开发/详情模式/方案设计
三三裂变系统开发概要: 理解系统目标,涉及三级裂变增长策略。 关键步骤包括需求分析、系统设计、技术选型、编码、测试及优化。 - 注意点:安全性、可扩展性和用户体验。 部署后需持续监控与维护,适应未来功能扩展。
|
Kubernetes Cloud Native 安全
一文读懂 Traefik Hub
Hello folks,今天我们介绍一下 Traefik 生态中的“革命性产物”——Traefik Hub 云原生网络平台。(注:其与 Traefik Proxy 2.7 及更高版本兼容,早期版本不支持)
433 0
|
Java 应用服务中间件
SprinBoot项目启动报错Exception in thread “main“ java.lang.reflect.InvocationTargetException
SprinBoot项目启动报错Exception in thread “main“ java.lang.reflect.InvocationTargetException
1204 0
|
前端开发 JavaScript Java
基于Springboot+Vue实现的宠物管理系统
基于Springboot+Vue实现的宠物管理系统
996 0
|
Kubernetes 网络协议 安全
还不会Traefik?看这篇文章就够了!(一)
还不会Traefik?看这篇文章就够了!
还不会Traefik?看这篇文章就够了!(一)