Traefik中间件——

Posted 浮生空得半日闲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Traefik中间件——相关的知识,希望对你有一定的参考价值。

前言

traefik中除了 route外,感觉最精华的就是 Middleware了,架构示意图如下

请求通过 router部分后,将会转发给 middleware,经过 middleware处理后,然后再发给后端

traefik中可用的 middleware如下

Traefik中间件——(一)

下面只列出部分常用的 middleware的写法,以做参考

环境准备

  1. kubernetes集群

  2. 后端服务

  3. traefik部署

  4. 创建1个使用中间件的 ingressroute


    yaml文件示例如下

    使用 kubectl apply-f即可创建成功该 ingressroute


    1. [root@a file-yaml]$ cat busybox-ingressroute-v2.yaml

    2. apiVersion: traefik.containo.us/v1alpha1

    3. kind: IngressRoute

    4. metadata:

    5. name: busybox-httpd-ingressroute-v2

    6. spec:

    7. routes:

    8. - match: Host("v2.a.b") ### 域名匹配规则

    9. kind: Rule

    10. services:

    11. - name: busybox-httpd-v2 ### 指向后端服务

    12. port: 80

    13. middlewares:

    14. - name: busybox-httpd-middleware ### 指定中间件

此3步骤,可查看文档

traefik安装以及ingressroute的使用

traefik中router匹配器的高级使用

StripPrefix

功能:从 url路径中删除指定的前缀

yaml文件如下

 
   
   
 
  1. [root@a file-yaml]$ cat busybox-middleware.yaml

  2. apiVersion: traefik.containo.us/v1alpha1

  3. kind: Middleware

  4. metadata:

  5. name: busybox-httpd-middleware

  6. spec:

  7. stripPrefix:

  8. prefixes:

  9. - /v2

使用 kubectl apply-f部署该 middleware后,可查看到创建成功

Traefik中间件——(一)

使用 curl访问带有前缀的 url(http:v2.a.b:30080/v2)访问,显示成功

Traefik中间件——(一)

StripPrefix中间件会在 url中有该前缀的时候删除它,但是没有该前缀的时候,就不会起作用,因此原来的 v2.a.b:30080也是可以访问成功的

BasicAuth

功能:

创建1个 secret,如下

Traefik中间件——(一)

注意

basicAuth中使用的 secret必须只能包含1个元素,如果包含多个元素, traefikpod则会报错,如下

Traefik中间件——(一)

修改 middleware中使用的中间件为 basicAuth,其 yaml如下

 
   
   
 
  1. [root@a file-yaml]$ cat busybox-middleware.yaml

  2. apiVersion: traefik.containo.us/v1alpha1

  3. kind: Middleware

  4. metadata:

  5. name: busybox-httpd-middleware

  6. spec:

  7. basicAuth:

  8. secret: middleware-secret

使用 kubectl apply-f创建后,从浏览器访问,出现提示框

输入刚才创建 secret时,使用的账号密码,访问成功


以上是关于Traefik中间件——的主要内容,如果未能解决你的问题,请参考以下文章

Traefik:无法使用摘要身份验证登录服务

使用 Traefik 提高 WebSocket 应用性能

Kubernetes Traefik集成Pilot

开源反向代理 Traefik 暴露用户的 TLS 证书密钥

将(子)域绑定到 traefik 仪表板出现 503 错误

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段