Traefik中间件——
Posted 浮生空得半日闲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Traefik中间件——相关的知识,希望对你有一定的参考价值。
前言
traefik
中除了 route
外,感觉最精华的就是 Middleware
了,架构示意图如下
请求通过 router
部分后,将会转发给 middleware
,经过 middleware
处理后,然后再发给后端
traefik
中可用的 middleware
如下
下面只列出部分常用的 middleware
的写法,以做参考
环境准备
kubernetes
集群后端服务
traefik
部署创建1个使用中间件的
ingressroute
其
yaml
文件示例如下使用
kubectl apply-f
即可创建成功该ingressroute
[root@a file-yaml]$ cat busybox-ingressroute-v2.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: busybox-httpd-ingressroute-v2
spec:
routes:
- match: Host("v2.a.b") ### 域名匹配规则
kind: Rule
services:
- name: busybox-httpd-v2 ### 指向后端服务
port: 80
middlewares:
- name: busybox-httpd-middleware ### 指定中间件
此3步骤,可查看文档
traefik安装以及ingressroute的使用
traefik中router匹配器的高级使用
StripPrefix
功能:从 url
路径中删除指定的前缀
其 yaml
文件如下
[root@a file-yaml]$ cat busybox-middleware.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: busybox-httpd-middleware
spec:
stripPrefix:
prefixes:
- /v2
使用 kubectl apply-f
部署该 middleware
后,可查看到创建成功
使用 curl
访问带有前缀的 url
(http:v2.a.b:30080/v2)访问,显示成功
StripPrefix
中间件会在 url
中有该前缀的时候删除它,但是没有该前缀的时候,就不会起作用,因此原来的 v2.a.b:30080
也是可以访问成功的
BasicAuth
功能:
创建1个 secret
,如下
注意
basicAuth
中使用的 secret
必须只能包含1个元素,如果包含多个元素, traefik
的 pod
则会报错,如下
修改 middleware
中使用的中间件为 basicAuth
,其 yaml
如下
[root@a file-yaml]$ cat busybox-middleware.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: busybox-httpd-middleware
spec:
basicAuth:
secret: middleware-secret
使用 kubectl apply-f
创建后,从浏览器访问,出现提示框
输入刚才创建 secret
时,使用的账号密码,访问成功
以上是关于Traefik中间件——的主要内容,如果未能解决你的问题,请参考以下文章
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段