《通過rancher部署的k8s集群如何查看和更新集群證書過期時間?》是我6月底在博客園提出的懸賞問題。現在問題搞清楚了,在此做個簡單記錄,希望能幫到有需要的博友。
k8s集群搭建完成后,默認集群證書一年有效。過期會導致集群不可用。因此在集群證書過期前需要及時完成更新。
通過rancher搭建的集群也有同樣的問題。因為搭建方式不同,rancher集群的證書更新方式也有不同。可參考官方文檔
http://docs.rancher.cn/docs/rancher2/trending-topics/certificate-rotation/_index/ #rancher官方
https://blog.51cto.com/u_12462495/2415676 #RancherLabs官方文檔
在兩篇文章中都提供了[獨立容器 Rancher Server]概念,根據RancherLabs官方文檔回答,[獨立容器 Rancher Server]就是通過docker run 啟動的單節點rancher server。這種情況只需確認自己的rancher版本是否符合官方要求的證書自動更新的版本即可。
如下官方說明:
- 證書未過期
證書未過期時,rancher server 可以正常運行。升級到 Rancher v2.0.14+ 、v2.1.9+、v2.2.2+ 后會自動檢查證書有效期,如果發現證書即將過期,將會自動生成新的證書。所以獨立容器運行的 Rancher Server,只需在證書過期前把 rancher 版本升級到支持自動更新 ssl 證書的版本即可,無需做其他操作。
我所使用的rancher基本上是2.5.X以上的版本,所以可以確認不用在做其他操作。
為了確認官方的說法。在本地臨時搭建了一個rancher集群環境做了個驗證測試。
測試步驟
1.本地搭建rancher集群環境
2.查看集群環境的證書過期時間
- 在rancher容器內部執行查看集群證書信息
sh-4.4# for i in ls /var/lib/rancher/k3s/server/tls/*.crt; do echo $i; openssl x509 -enddate -noout -in $i; done
ls
Can't open ls for reading, No such file or directory
139848484012480:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:72:fopen('ls','r')
139848484012480:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:79:
unable to load certificate
/var/lib/rancher/k3s/server/tls/client-admin.crt
notAfter=Jul 12 15:33:12 2022 GMT
/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt
notAfter=Jul 12 15:33:12 2022 GMT
/var/lib/rancher/k3s/server/tls/client-ca.crt
notAfter=Jul 10 15:33:12 2031 GMT
/var/lib/rancher/k3s/server/tls/client-cloud-controller.crt
notAfter=Jul 12 15:33:12 2022 GMT
/var/lib/rancher/k3s/server/tls/client-controller.crt
notAfter=Jul 12 15:33:12 2022 GMT
/var/lib/rancher/k3s/server/tls/client-k3s-controller.crt
notAfter=Jul 12 15:33:12 2022 GMT
/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt
notAfter=Jul 12 15:33:12 2022 GMT
/var/lib/rancher/k3s/server/tls/client-kube-proxy.crt
notAfter=Jul 12 15:33:12 2022 GMT
/var/lib/rancher/k3s/server/tls/client-scheduler.crt
notAfter=Jul 12 15:33:12 2022 GMT
/var/lib/rancher/k3s/server/tls/request-header-ca.crt
notAfter=Jul 10 15:33:12 2031 GMT
/var/lib/rancher/k3s/server/tls/server-ca.crt
notAfter=Jul 10 15:33:12 2031 GMT
/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt
notAfter=Jul 12 15:33:12 2022 GMT
如上可以確認集群證書將於2022年的7月12下午 15:33:12 過期,過了那個時間點,集群就不可用了。
3.修改本機的系統時間,提前觸發集群證書過期時間
- 第一輪觸發,設置時間為[2022-07-11 18:02:20],關機,三天后開機查看集群證書已過期。
timedatectl set-ntp false
timedatectl set-time '2022-07-11 18:02:20'
[root@rancher01 ~]# kubectl get nodes
Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-20T13:57:29+08:00 is after 2022-07-12T16:33:11Z
- 第二輪觸發,設置時間[2022-07-12 14:33:20],一個小時后檢查集群證書信息,rancher已經自動更新集群證書,非常棒!
timedatectl set-time '2022-07-12 14:33:20'
sh-4.4# for i in ls /var/lib/rancher/k3s/server/tls/*.crt; do echo $i; openssl x509 -enddate -noout -in $i; done
ls
Can't open ls for reading, No such file or directory
140100381073856:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:72:fopen('ls','r')
140100381073856:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:79:
unable to load certificate
/var/lib/rancher/k3s/server/tls/client-admin.crt
notAfter=Jul 12 01:07:40 2023 GMT
/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt
notAfter=Jul 12 01:07:40 2023 GMT
/var/lib/rancher/k3s/server/tls/client-ca.crt
notAfter=Jul 10 15:33:12 2031 GMT
/var/lib/rancher/k3s/server/tls/client-cloud-controller.crt
notAfter=Jul 12 01:07:40 2023 GMT
/var/lib/rancher/k3s/server/tls/client-controller.crt
notAfter=Jul 12 01:07:40 2023 GMT
/var/lib/rancher/k3s/server/tls/client-k3s-controller.crt
notAfter=Jul 12 01:07:40 2023 GMT
/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt
notAfter=Jul 12 01:07:40 2023 GMT
/var/lib/rancher/k3s/server/tls/client-kube-proxy.crt
notAfter=Jul 12 01:07:40 2023 GMT
/var/lib/rancher/k3s/server/tls/client-scheduler.crt
notAfter=Jul 12 01:07:40 2023 GMT
/var/lib/rancher/k3s/server/tls/request-header-ca.crt
notAfter=Jul 10 15:33:12 2031 GMT
/var/lib/rancher/k3s/server/tls/server-ca.crt
notAfter=Jul 10 15:33:12 2031 GMT
/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt
notAfter=Jul 12 01:07:40 2023 GMT
- 因此符合要求的rancher版本不用過於擔心集群證書過期的問題了
