kubernetesv1.16系列——搞定Traefik2.1強大的中間件

介紹

中間件是 Traefik2.x 中一個非常有特色的功能,我們可以根據自己的各種需求去選擇不同的中間件來滿足服務,Traefik 官方已經內置了許多不同功能的中間件,其中一些可以修改請求,頭信息,一些負責重定向,一些添加身份驗證等等,而且中間件還可以通過鏈式組合的方式來適用各種情況。

kubernetesv1.16系列——搞定Traefik2.1強大的中間件

重定向

使用之前的例子whoami應用,我們可以通過 https://who.domain.com/tls 來訪問到應用,但是如果我們用 http 來訪問的話呢就不行了,就會404了,因為我們根本就沒有簡單80端口這個入口點,所以要想通過 http 來訪問應用的話自然我們需要監聽下 web 這個入口點:

<code>apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: ingressroutetls-http
spec:
entryPoints:
- web
routes:
- match: Host(`who.qikqiak.com`) && PathPrefix(`/tls`)
kind: Rule
services:
- name: whoami
port: 80/<code>

注意這裡我們創建的 IngressRoute 的 entryPoints 是 web,然後創建這個對象,這個時候我們就可以通過 http 訪問到這個應用了。

但是我們如果只希望用戶通過 https 來訪問應用的話呢?按照以前的知識,我們是不是可以讓 http 強制跳轉到 https 服務去,對的,在 Traefik 中也是可以配置強制跳轉的,只是這個功能現在是通過中間件來提供的了。如下所示,我們使用 redirectScheme 中間件來創建提供強制跳轉服務:

<code>apiVersion: traefik.containo.us/v1alpha1
kind: Middleware

metadata:
name: redirect-https
spec:
redirectScheme:
scheme: https/<code>

然後將這個中間件附加到 http 的服務上面去,因為 https 的不需要跳轉:

<code>apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: ingressroutetls-http
spec:
entryPoints:
- web
routes:
- match: Host(`who.domain.com`) && PathPrefix(`/tls`)
kind: Rule
services:
- name: whoami
port: 80
middlewares:
- name: redirect-https/<code>

這個時候我們再去訪問 http 服務可以發現就會自動跳轉到 https 去了。

關於更多中間件的用法可以查看文檔:

https://docs.traefik.io/middlewares/overview/


分享到:


相關文章: