作者簡介
王海龍, SUSE Rancher 中國社區技術經理,負責 Rancher 中國技術社區的維護和運營。擁有 8 年的雲計算領域經驗,經歷了 OpenStack 到 Kubernetes 的技術變革,無論底層操作系統 Linux,還是虛擬化 KVM 或是 Docker 容器技術都有豐富的運維和實踐經驗。
前 言
Traefik 是一個開源的邊緣路由器,可以讓你的服務發佈變得輕鬆有趣。它負責接收你的系統請求,並使用合適的組件處理這些請求。
Traefik 的儀表板非常便捷,能夠提供集羣當前狀態的詳細概述,包括集羣入口和服務網格路由配置的詳細信息:
K3s 是經 CNCF 一致性認證的 Kubernetes 輕量級發行版,專爲物聯網及邊緣計算設計。在 K3s 中,內置了 Traefik 作爲集羣的默認反向代理和 Ingress Controller。K3s 1.21 開始默認安裝 Traefik v2,而之前的版本則默認安裝 Traefik v1。本文將根據不同的 Traefik 版本來介紹如何啓用 Traefik Dashborad。
Traefik v1 啓用 Dashborad
默認情況下,K3s 1.20 及更早版本默認安裝 Traefik v1,並且默認沒有啓用 Traefik Dashboard。如果要在 K3s 中啓用 Traefik v1 的 Dashborad,我們可以藉助 HelmChartConfig 來自定義由 Helm 部署的 Traefik v1 並啓用 Dashboard:
注意:
-
不建議手動編輯
/var/lib/rancher/K3s/server/manifests/traefik.yaml
來修改 Traefik 配置文件,因爲 K3s 重啓後會覆蓋修改的內容。 -
建議通過在
/var/lib/rancher/K3s/server/manifests
中創建一個額外的HelmChartConfig
清單來自定義 Traefik 配置,請參考:http://docs.rancher.cn/docs/K3s/helm/_index/
cat >> /var/lib/rancher/K3s/server/manifests/traefik-config.yaml << EOF
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
dashboard:
enabled: true
domain: "traefik.localhost"
EOF
此時,Traefik 將會重新部署,大約 10 秒鐘左右,就可以通過 spec.valuesContent.domain 配置的域名來訪問Traefik Dashboard 了:
Traefik v2 啓用 Dashborad
默認情況下,K3s 1.21 及更高版本默認安裝 Traefik v2。出於安全考慮,默認是不公開 Traefik Dashboard 的。我們常見的公開 Dashborad 的方式主要爲以下兩種:
方法 1:通過端口轉發來實現
kubectl -n kube-system port-forward $(kubectl -n kube-system get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:900
端口轉發開啓後,可以通過http://127.0.0.1:9000/dashboard/ 來訪問 Dashboard:
方法 2:自定義 IngressRoute CRD
另一種方法是通過定義和應用 IngressRoute CRD (kubectl apply -f dashboard.yaml):
# dashboard.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: dashboard
spec:
entryPoints:
- web
routes:
- match: Host(`traefik.example`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))
kind: Rule
services:
- name: api@internal
kind: TraefikService
部署成功後,可通過 http://traefik.example/dashboard/ 訪問 Dashboard:
-
參考文獻:traefik-helm-chart:
https://github.com/traefik/traefik-helm-chart/ -
瞭解更多 Traefik Dashboard 配置:
https://doc.traefik.io/traefik/operations/dashboard/