k8s 给dashboard配置自定义证书
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