Traefik 是一個出色的 Kube.NETes 集群入口控制器,允許您擁有一個 L7 入口路由引擎來將入口流量路由到您的 Kubernetes 托管服務。在本教程中,我們將研究 Traefik 的 安裝和配置,以了解如何使用 MetalLB 作為負載均衡器;并使用 helm 安裝 Traefik。
Traefik Helm 安裝的先決條件
您可以使用 Node Port 來配置 Traefik。但是,NodePort 管理起來很麻煩,而且即使在實驗室環境中也不能很好地擴展。
我們可以選擇使用MetalLB;請查看我關于Kubernetes 安裝 MetalLB 負載平衡器主題的帖子,了解如何輕松運行 MetalLB 并創建簡單的配置來分配 Kubernetes 服務的 IP 地址。使用該帖子,您將 MetalLB 配置為 Kubernetes 集群的負載均衡器,以便您可以為 Kubernetes 服務映射 IP 地址。
除了運行 MetalLB 之外,我使用kubeadm初始化了標準的 3 節點 Kubernetes 集群,并且已經安裝了helm。
Traefik Helm 安裝和配置
在大多數情況下,我可在官方文檔中找到的使用 Helm 部署 Traefik 的步驟進行操作:Traefik 安裝文檔 – Traefik。
這些步驟讓您添加 Helm 存儲庫、更新存儲庫,然后安裝 helm chart。
$ helm repo add traefik https://helm.traefik.io/traefik
$ helm repo update
$ helm show values traefik/traefik > /tmp/traefik-chart.yaml
自定義配置
現在,我們可以使用以下語法通過 values 文件實際部署 Traefik chart:
$ helm install traefik traefik/traefik --values ./traefik-chart.yaml -n traefik --create-namespace
您可以使用以下命令列出 helm 部署狀態:
$ helm list -n traefik
現在,如果您檢查 Traefik 命名空間,使用get all,您將看到我們已正確獲取 LoadBalancer IP 地址并公開了正確的端口。
$ kubectl -n traefik get all
配置traefik dashboard
- 將證書上傳到服務器,并創建對應的secret
kubectl create secret tls example.com.default --key STAR_example_com.key --cert STAR_example_com_integrated.crt
- 配置Traefik中間件BasicAuth; 設置dashboard訪問權限
#配置secret,密碼必須是一個 MD5,SHA1 或者 BCrypt 的哈希值
$ apt install Apache2-utils -y
$ htpasswd -nb admin admin123
admin:$apr1$RuTEI9dp$GrpMJ.cdHY1pG1N.dlaIu1
#配置authsecre.yaml文件
$ vim traefik-authsecret.yaml
apiVersion: v1
kind: Secret
metadata:
name: traefik-authsecret
namespace: traefik
type: Opaque
stringData:
users: admin:$apr1$RuTEI9dp$GrpMJ.cdHY1pG1N.dlaIu1
traefik-basic-auth.yaml 內容如下:
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: traefik-basic-auth
namespace: traefik
spec:
basicAuth:
secret: traefik-authsecret
- 配置Ingress Route
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard-route
namespace: traefik
spec:
entryPoints:
- websecure
tls:
secretName: aixbx.com.default
routes:
- match: Host(`traefik.aixbx.com`)
kind: Rule
services:
- name: traefik
port: 9000
middlewares:
- name: traefik-basic-auth
- 應用配置
kubectl Apply -f traefik-authsecret.yaml
kubectl apply -f traefik-basic-auth.yaml
kubectl apply -f traefik-dashboard-ingress-route.yaml
訪問面板
域名后加/dashboard/; 訪問打開之后輸入用戶名和密碼。即可完成訪問。
參考鏈接:
https://traefik.io/traefik/