如何在 K3s 中啟用 Traefik Dashborad

Rancher發表於2022-03-25
作者簡介
王海龍, 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/K...
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/dashbo... 訪問 Dashboard:

相關文章