K8S dashboard
阿新 • • 發佈:2018-11-19
kubernetes-dashboard有兩種認證方式,一個token認證,另一個是Kubeconfig檔案的認證。這個時候的認證不是UserAccount而是獲取kubernetes叢集資源資訊的serviceAccount。
token 認證
# 建立一個dashboard的私鑰 cd /etc/kubernetes/pki/ (umask 077; openssl genrsa -out dashboard.key 2048) # 生成一個證書籤署請求 openssl req -new -key dashboard.key -out dashboard.csr -subj "/O=klvchen/CN=dashboard" # 通過ca.key和ca.crt簽署證書 openssl x509 -req -in dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dashboard.crt -days 365 # 通過簽署證書建立一個sercert kubectl create secret generic dashboard-cert -n kube-system --from-file=dashboard.crt=./dashboard.crt --from-file=dashboard.key=./dashboard.key # 建立一個專用的 serviceaccount 帳號 dashboard-admin kubectl create serviceaccount dashboard-admin -n kube-system # 繫結角色 cluster-admin kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin # 檢視 dashboard-admin 的 Tokens kubectl describe serviceaccount dashboard-admin -n kube-system # 根據上面顯示為 dashboard-admin-token-wrfng kubectl get secret -n kube-system kubectl describe secret dashboard-admin-token-wrfng -n kube-system # 獲取 token 值,用來在填寫網頁登入認證資訊 # 建立 dashboard 所需要的資源 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml kubectl get pods -n kube-system kubectl get svc -n kube-system # 修改 svc 的的網路型別 kubectl patch svc kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}' -n kube-system kubectl get svc -n kube-system # 獲取 NodePort 對映的外網埠,這裡是 32240
使用 火狐瀏覽器 訪問 https://192.168.0.205:32240 ,點選 高階, 新增例外。這裡使用 chrome 和 搜狗瀏覽器沒法出來介面。
Kubeconfig檔案認證
# 建立一個訪問 default命令空間的 serviceaccount 賬號 cd /etc/kubernetes/pki kubectl create serviceaccount def-ns-admin -n default # 建立 rolebinding 把 def-ns-admin 與 admin 關聯 kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin # 檢視 def-ns-admin 的 token kubectl get secret kubectl describe secret def-ns-admin-token-8vzj5 # 建立一個kubeconfig配置檔案(基於token配置) kubectl config set-cluster kubernetes --certificate-authority=./ca.crt --server="https://192.168.0.205:6443" --embed-certs=true --kubeconfig=/root/def-ns-admin.conf kubectl config view --kubeconfig=/root/def-ns-admin.conf DEF_NS_ADMIN_TOKEN=$(kubectl get secret def-ns-admin-token-8vzj5 -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 # 配置上下文 kubectl config set-context
[email protected] --cluster=kubernetes --user=def-ns-admin --kubeconfig=/root/def-ns-admin.conf # 配置當前上下文 kubectl config use-context [email protected] --kubeconfig=/root/def-ns-admin.conf kubectl config view --kubeconfig=/root/def-ns-admin.conf # 下載 def-ns-admin.conf # 使用 火狐瀏覽器 訪問 https://192.168.0.205:31328