1. 程式人生 > >Kubernetes-dashboard的部署及認證

Kubernetes-dashboard的部署及認證

部署Kubernetes-dashboard

簡介:

dashboard是通用的基於Web的k8s叢集圖形化管理工具,它允許使用者管理在叢集中執行的應用程式,並對它們進行故障排除,以及管理叢集本身。

部署:

  1. 部署dashboard應用資源:
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

     

  2. 修改為NodePort型別的service,讓叢集外部也可以訪問dashboard:

    kubectl patch svc kubernetes-dashboard -p '{"spec": {"type":"NodePort"}}' -n kube-system

     

  3. 在叢集外部訪問dashboard:

 

使用token認證進行登入

dashboard執行在POD資源中的,所以呢dashboard所在的POD要以serviceAcount型別的使用者身份認證到k8s叢集上去訪問k8s的api server元件

  1.  建立serviceAccount,假如使用者名稱為dashboard-admin

    kubectl create serviceaccount dashboard-admin -n kube-system

     

  2. 通過clusterrolebinding繫結到內建的cluster-admin角色上

    kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

     

  3. 檢視dashboard-admin使用者的securet:

    kubectl get secret -n kube-system
    
    kubectl describe secret dashboard-admin-token-6lk9l  -n kube-system

     

  4. 複製dashboard-admin使用者的對應的securet物件中的token進行登入dashboard:

     

 

使用kubeconfig認證進行登入

上面認證時使用的token採用的是base64編碼,並登入時需要複製原內容貼上到文字框中,儲存和操作非常不方便,建議使用將它儲存到kubeconfig配置檔案中,使用kubeconfig的認證方式進行登入。

  1. 設定叢集資訊:

     kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://172.16.0.246:30160" --embed-certs=true --kubeconfig=/root/def-ns-admin.conf
    
    kubectl config view --kubeconfig=/root/def-ns-admin.conf

     

  2. 設定使用者資訊:

    kubectl get secret def-ns-admin-token-7jfxq -o jsonpath={.data.token} | base64 -d
    
    DEF_NS_ADMIN_TOKEN=$( kubectl get secret def-ns-admin-token-7jfxq -o jsonpath={.data.token} | base64 -d)
    
    kubectl config set-credentials def-ns-admin --token=$DEF_NS_ADMIN_TOKEN --kubeconfig=/root/def-ns-admin.conf
    
    kubectl config view --kubeconfig=/root/def-ns-admin.conf

     

  3. 設定context:

    kubectl config set-context [email protected] --cluster=kubernetes --user=def-ns-admin --kubeconfig=/root/def-ns-admin.conf
    
    kubectl config view --kubeconfig=/root/def-ns-admin.conf

     

  4. 設定當前認證時使用context

    kubectl config use-context [email protected] --kubeconfig=/root/def-ns-admin.conf
    
    kubectl config view --kubeconfig=/root/def-ns-admin.conf

     

  5. 將之前生成的config複製到遠端客戶端

     scp [email protected]:/root/def-ns-admin.conf ./

     

  6. 在執行客戶端訪問dashboard,使用剛才生成的kubeconfig檔案進行論證登入