0%

Kubernetes 中如何讓 Dashboard 在無 https 的情況下讓外部存取

前言

最近在自學 K8s 的時候,看到官方文件有提到 Web UI (Dashboard),想說自己操作一下試試看,
目標是透過個人電腦的瀏覽器可以進入 cluster 的 dash board,
但是在建立的過程中有遇到一些雷所以在這裡記錄一下。

環境

兩台機器,一台 master 跟一台 slave,在同一個網域底下,兩台電腦皆是 privete ip。
master 192.168.1.111
slave 192.168.1.110
個人電腦跟 master 與 slave 在同一個網段下。

步驟

  1. 首先把 yaml 檔下載下來
    curl -O https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

  2. 修改 recommended.yaml 中的 kubernetes-dashboard Service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    kind: Service
    apiVersion: v1
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
    spec:
    type: NodePort // 多加這一行
    ports:
    - port: 443
    targetPort: 8443
    selector:
    k8s-app: kubernetes-dashboard
  3. Apply 進 k8s
    kubectl apply -f recommended.yaml

  4. 因為 dashboard 只允許使用 Bearer Token 登入,所以必須要創一個使用者。
    參考:這裡

  5. 取得 dashboard 的 NodePort
    kubectl get svc -n kubernetes-dashboard
    在這個例子中我拿到的是 30144

    接著因為 dashboard 只支援 https 但是我們 service 是使用 NodePort 來創建,
    所以 url 會是 https://192.168.1.111:30144

參考

  1. https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
  2. https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
  3. https://stackoverflow.com/questions/39864385/how-to-access-expose-kubernetes-dashboard-service-outside-of-a-cluster