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

 

 

posted @ 2021-12-29 23:03  念长卿  阅读(1419)  评论(0编辑  收藏  举报