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

