Dashboard安裝配置

獲取dashboard yaml文件node

curl -O https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

更改官網鏡像地址git

sed -i 's/k8s\.gcr\.io/jicki/g' kubernetes-dashboard.yaml

導入文件github

# kubectl apply -f kubernetes-dashboard.yaml 
secret "kubernetes-dashboard-certs" created
serviceaccount "kubernetes-dashboard" created
role "kubernetes-dashboard-minimal" created
rolebinding "kubernetes-dashboard-minimal" created
deployment "kubernetes-dashboard" created
service "kubernetes-dashboard" created

 

訪問方式web

Kubernetes 暴露服務的方式目前只有三種:LoadBlancer Service、NodePort Service、Ingressvim

一、NodePortapi

爲了方便驗證,這裏採用NodePort是將節點直接暴露在外網的一種方式,只建議在開發環境,單節點的安裝方式中使用。瀏覽器

啓用NodePort很簡單,只需執行kubectl edit命令進行編輯,將type: ClusterIP修改成type: NodePort(將service監聽端口映射到node節點安全

保存後使用kubectl get service命令來查看自動生成的端口app

# kubectl -n kube-system edit service kubernetes-dashboard
  type: ClusterIP --->type:NodePort
#kubectl -n kube-system get svc
NAME                           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE     SELECTOR
service/kubernetes-dashboard   NodePort    10.254.37.88   <none>        443:30469/TCP   2d18h   k8s-app=kubernetes-dashboard

此時能夠經過局域網進行正常訪問curl

https://172.17.213.60:30469 

二、API Server

作好下面的瀏覽器訪問kube-apiserver安全端口後能夠直接經過 API Server的方式進行訪問:

https://172.17.213.60:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

 

Dashboard登錄認證

首先建立一個dashboard rbac超級用戶

# vim dashboard-admin-rbac.yaml

---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard-admin
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard-admin
  namespace: kube-system

# kubectl apply -f dashboard-admin-rbac.yaml

查看超級用戶的token名稱

# kubectl -n kube-system get secret | grep kubernetes-dashboard-admin

查看token部分

# kubectl describe -n kube-system secret/kubernetes-dashboard-admin-token-*****

登錄web ui選擇「令牌登錄」,輸入上面的token

 

瀏覽器訪問kube-apiserver安全端口

通常狀況下訪問kube-apiserver的安全端口6443時,會提示證書不被信任。這是由於 kube-apiserver 的 server 證書是咱們建立的根證書 ca.pem 簽名的,須要將根證書 ca.pem 導入操做系統,並設置永久信任。對於 Mac,操做以下: 啓動臺-->搜索輸入「鑰匙串訪問」

對於win使用如下命令導入ca.perm

keytool -import -v -trustcacerts -alias appmanagement -file "PATH...\\ca.pem" -storepass password -keystore cacerts

再次訪問 https://172.17.213.60:6443/,已信任,但提示 401,未受權的訪問:Unauthorized

咱們須要給瀏覽器生成一個 client 證書,訪問 apiserver 的 6443 https 端口時使用。

這裏使用部署 kubectl 命令行工具時建立的 admin 證書、私鑰和上面的 ca 證書,建立一個瀏覽器可使用的 PKCS#12/PFX 格式的證書:

openssl pkcs12 -export -out admin.pfx -inkey admin-key.pem -in admin.pem -certfile ca.pem

將建立的 admin.pfx 導入到系統的證書中

重啓瀏覽器,再次訪問時提示選擇一個瀏覽器證書,選中上面導入的 admin.pfx 後實現訪問正常。

 

客戶端選擇證書的原理

一、證書選擇是在客戶端和服務端 SSL/TLS 握手協商階段商定的;
二、服務端若是要求客戶端提供證書,則在握手時會向客戶端發送一個它接受的 CA 列表;
三、客戶端查找它的證書列表(通常是操做系統的證書,對於 Mac 爲 keychain),看有沒有被 CA 簽名的證書,若是有,則將它們提供給用戶選擇(證書的私鑰);
四、用戶選擇一個證書私鑰,而後客戶端將使用它和服務端通訊;
相關文章
相關標籤/搜索