traefik 學習
Routers Services Providers Middlewares
Routers
在Traefik中,Routers是將傳入的請求路由到正確的服務的機制。Routers可以根據請求的主機名、路徑、請求頭、請求方法等進行匹配,並將請求轉發到相應的Service。以下是Routers的定義和一個示例:
定義
Routers定義瞭如何將傳入的請求路由到正確的Service。每個Router都具有一個唯一的名稱和一個或多個入口點。入口點可以是HTTP請求的主機名、路徑、請求頭、請求方法等。
示例
Router示例,它將所有到example.com的HTTP請求路由到名爲example的Service:
http:
routers:
my-router:
rule: "Host(`example.com`)"
service: "example"
Services
在Traefik中,Services是實際處理請求的後端應用程序。Services可以是容器、Kubernetes Pod、虛擬機等。Traefik支持多種類型的Service,例如HTTP、TCP、UDP、gRPC等。以下是Services的定義和一個示例:
定義
Services定義了後端應用程序的地址和端口,並定義瞭如何將請求傳遞給該應用程序。每個Service都具有一個唯一的名稱和一個或多個後端地址。
示例
以下是一個基本的HTTP Service示例,它將所有請求傳遞到名爲my-app的HTTP服務:
http:
services:
my-app:
loadBalancer:
servers:
- url: "http://my-app:8080"
Providers
在Traefik中,Providers是用於動態配置Traefik的插件。Traefik支持多種Providers,包括Docker、Kubernetes、Mesos、Consul、ZooKeeper等。以下是Providers的定義和一個示例:
定義
Providers定義了Traefik可以使用的外部源,以獲取動態路由和負載平衡信息。每個Provider都具有一個唯一的名稱和一個或多個配置參數。
示例
以下是一個基本的Docker Provider示例,它從本地Docker守護程序獲取容器信息,並自動爲這些容器配置路由規則和負載平衡:
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
Middlewares
在Traefik中,Middlewares是一種在請求處理過程中添加邏輯的機制。Middlewares可以用於添加安全性、日誌記錄、重定向、認證等功能。以下是Middlewares的定義和一個示例:
定義
Middlewares定義了請求處理過程中要執行的邏輯。每個Middleware都具有一個唯一的名稱和一個或多個配置參數。
示例
以下是一個基本的Redirect Middleware示例,它將所有HTTP請求重定向到HTTPS:
http:
middlewares:
my-middleware:
basicAuth:
users:
- "username:password"
rate-limit:
rateLimit:
average: 100
burst: 200
period: 10s
routers:
my-router:
rule: "Host(`example.com`) && Path(`/api`)"
middlewares:
- my-middleware
- rate-limit
service: my-service
entryPoints:
- web
http:
routers:
my-router:
rule: "Host(`example.com`) && Path(`/api`)"
service: my-service
entryPoints:
- web
- secure
services:
my-service:
loadBalancer:
servers:
- url: "http://localhost:8080"
entryPoints:
web:
address: ":80"
secure:
address: ":443"
在上述示例中,Traefik定義了兩個入口點,一個是web,另一個是secure。然後,在名爲my-router的路由器中,entryPoints屬性被定義爲web和secure,表示該路由器將使用這兩個入口點。最後,Traefik定義了一個名爲my-service的服務,它將負責將流量路由到後端服務器。
其他
Global Configuration
全局配置包括Traefik的基本設置,如日誌記錄級別、入口點、TLS配置等。以下是全局配置的定義和一個示例:
定義
Global Configuration定義了Traefik的全局設置。每個Global Configuration都具有一個唯一的名稱和一些基本設置,如日誌記錄級別、入口點、TLS配置等。
示例
以下是一個基本的Global Configuration示例,它定義了Traefik的日誌記錄級別、入口點和TLS配置:
global:
log:
level: "DEBUG"
entryPoints:
web:
address: ":80"
tls:
certificates:
- certFile: "/path/to/cert.pem"
keyFile: "/path/to/key.pem"
TLS
在Traefik中,TLS用於配置HTTPS。TLS證書用於驗證服務器身份,並加密數據傳輸。以下是TLS配置的定義和一個示例:
定義
TLS定義了Traefik使用的HTTPS配置。每個TLS配置都具有一個唯一的名稱和一個或多個證書配置。
示例
以下是一個基本的TLS配置示例,它定義了Traefik使用的HTTPS證書和私鑰:
tls:
certificates:
- certFile: "/path/to/cert.pem"
keyFile: "/path/to/key.pem"
Access Logging
在Traefik中,Access Logging用於記錄請求和響應的詳細信息。這些日誌可以用於監控、故障排除和性能優化等目的。以下是Access Logging的定義和一個示例:
定義
Access Logging定義了Traefik如何記錄請求和響應的詳細信息。每個Access Logging都具有一個唯一的名稱和一些配置參數,如日誌格式、輸出位置等。
示例
以下是一個基本的Access Logging示例,它將請求和響應的詳細信息記錄到指定的文件中:
accessLog:
filePath: "/path/to/access.log"
Tracing
在Traefik中,Tracing用於跟蹤請求的流經和處理過程。Tracing可以用於診斷問題和優化性能。以下是Tracing的定義和一個示例:
定義
Tracing定義了Traefik如何跟蹤請求的流經和處理過程。每個Tracing都具有一個唯一的名稱和一些配置參數,如跟蹤工具、採樣率等。
示例
以下是一個基本的Tracing示例,它使用Jaeger跟蹤請求的流經和處理過程:
tracing:
serviceName: "my-service"
provider: "jaeger"
jaeger:
endpoint: "http://jaeger:14268/api/traces"