Kubernetes CKA課程筆記 76

Certificate Management in Kubernetes

ZONGRU Li
Dec 6, 2021

考量到K8s Cluster建立後運作了半年或快一年後

有人設想到憑證是否快過期了? 是否需要更新憑證?

這時候身為K8s Cluster Admin就需要執行憑證的更新!

憑證效期的確認:

  • 首先我們知道憑證都產在目錄/etc/kubernetes/pki/底下:
  • 並且我們知道這些憑證都是kubeadm工具,
  • 在建立或是升級Cluster時候建立的
  • 其中kubeadm也有包含了憑證更新的功能,我們可以執行指令確認:
kubeadm --help
找到關於憑證的指令
  • 接著繼續找
看到需要的指令了!
  • 後面會介紹使用比較低階的工具來做憑證展期/確認等工作
  • 這邊我們先使用kubeadm提供的確認指令,執行:
kubeadm certs check-expiration
需要root,所以改為以下
sudo kubeadm certs check-expiration
  • 由上可以看到,我雖然從10月開始上課
  • 但是在12月4日時完成了K8s Cluster升級,連帶更新了憑證
  • 上面可以看出,kubeadm提供了極其簡單的工具(指令)
  • 來做確認憑證效期或更新憑證等作業
  • 但是如果不依靠kubeadm
  • 我們仍可以透過較低階的工具 — openssl來做一樣的事
  • 比如透過openssl工具來確認憑證效期,可執行:
openssl {憑證種類} -in {要確認的憑證檔} {輸出型式,這邊用-text} -noout
  • 實際指令可組成如下,將可看到憑證細節!
openssl x509 -in /etc/kubernetes/pki/ca.crt -text -noout
  • 進階還可以簡化指令指看看有效期的部分,執行:
openssl x509 -in /etc/kubernetes/pki/ca.crt -text -noout| grep Validity -A2
只看看這張憑證的效期
  • 其他可以再看看apiserver.crt:
後面就假設這個憑證快到期了,來試試將期展延(更新)
  • 另外同上面說到,我們不久前才在做K8s Cluster升級時候
  • 連帶地更新了憑證:
執行指令過程畫面:kubeadm upgrade apply v1.22.0
  • 實際上本應該週期性地更新憑證才安全
  • 並且因為有kubeadm工具執行憑證更新其實很簡單!

實際嘗試更新憑證:

  • 如何執行,依樣可參考kubeadm指令查看:
  • 繼續往下查找:
kubeadm certs --help
  • 可以看到要更新(展期)憑證的指令已經都準備好了,但是卻比以下目錄多
  • 仔細看到/etc/kubernetes/pki目錄下:
  • 如上圖,大略可以看到,我們僅僅只有apiserver相關憑證及ca憑證等檔案
  • 但是我們沒有看到給admin user憑證
  • 也沒看到給controller-manager的憑證
  • 亦沒見到給scheduler的憑證
  • 因為!實際上,上述的這些憑證早已完成嵌入(embedded)到以下檔案內:
憑證都嵌入到圖中的conf檔案內了!
  • 例如我們可以看看controller-manager.conf:
這些憑證直接地嵌入在conf檔案內
  • 下面我們嘗試更新apiserver相關的憑證資料,直接執行(也要root):
sudo kubeadm certs renew apiserver
  • 再次執行確認指令可以看到:
很簡單就做好一個憑證的更新了!
  • 透過kubeadm工具,更新憑證就不麻煩了!

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet