1.創建secret
[root@master01 1]# ls server.key server.pem #提前到阿里雲申請的證書 [root@master01 1]# kubectl create secret tls mycentos-cert --key server.key --cert server.pem -n kubernetes-dashboard #將申請的證書保存到kubernetes-dashboard 命名空間的secret 名字為mycentos-cert
2.導出dashboardyaml文件
[root@master02 ~]# kubectl get pod -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-79694cfc8b-g7lpc 1/1 Running 2 24h kubernetes-dashboard-57bd6cb5d6-cs2md 1/1 Running 0 9m6s [root@master02 ~]# kubectl get pod -n kubernetes-dashboard kubernetes-dashboard-57bd6cb5d6-cs2md -o yaml > 1.yaml #導出yaml文件,因為dashboard不能edit修改,只能刪了重新構建
[root@master02 ~]# cp 1.yaml 11.yaml #備份原來的yaml文件
3.修改yaml文件
vi 1.yaml #這里我就只放修改的地方了,為了保持和原來的信息一致,我們除了需要修改的地方不多做修改 11 spec: 12 containers: 13 - args: 14 - --auto-generate-certificates=false #不讓他自動創建ssl文件使用我們給的 15 - --namespace=kubernetes-dashboard 16 - --tls-cert-file=server.pem #指定pem文件 17 - --tls-key-file=server.key #指定key文件 18 - --token-ttl=21600 …… 43 volumeMounts: 44 - mountPath: /certs #上面不寫絕對路徑是因為他會自動到這個目錄尋找指定的文件 45 name: kubernetes-dashboard-certs …… 75 volumes: 76 - name: kubernetes-dashboard-certs 77 secret: 78 defaultMode: 420 79 secretName: mycentos-cert #這個是我們剛剛創建的cesret,掛載到/certs下,他會自己找
4.重建dashboard
[root@master02 ~]# kubectl delete -f 11.yaml #刪除原來的dashboard [root@master02 ~]# kubectl apply -f 1.yaml #創建我們修改好的dashboard [root@master02 ~]# kubectl get pod -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-79694cfc8b-g7lpc 1/1 Running 2 24h kubernetes-dashboard-57bd6cb5d6-cs2md 1/1 Running 0 18m #已經啟動,配置ingress試試效果。
5.給dashboard 配置一個域名試試效果。
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: kubernetes-dashboard namespace: kubernetes-dashboard spec: rules: - host: dash.mycentos.top http: paths: - backend: serviceName: kubernetes-dashboard servicePort: 443 path: / pathType: ImplementationSpecific tls: - hosts: - dash.mycentos.top secretName: mycentos-cert #這里是我的yaml,不要直接復制,這里只是作為參考
6.測試
root@master02 ~]# kubectl get svc -n kubernetes-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-metrics-scraper ClusterIP 10.96.45.5 <none> 8000/TCP 24h kubernetes-dashboard NodePort 10.96.44.195 <none> 443:30001/TCP 24h