K3S TLS證書延長

镂空的行尸發表於2024-05-26
  • 新安裝叢集:
  1. 根證書延長: 修改指令碼: https://github.com/k3s-io/k3s/blob/master/contrib/util/generate-custom-ca-certs.sh 將 3700 改你期望的天數 (根證書) 並執行,如果修改了 DATA_DIR 目錄記得加到環境後在執行
  2. 頒發的子證書延長: 目前官方沒有支援相關的配置,但是透過原始碼可以看到 k3s 呼叫了 github.com/rancher/dynamiclistener/cert.NewSignedCert 方法並沒有傳遞引數,且在該方法內有一個讀取環境變數 CATTLE_NEW_SIGNED_CERT_EXPIRATION_DAYS 作為預設的證書市場的.
    1. ansible 安裝方式: 在 role/k3s_server 寫入預設的變數: extra_service_envs: [ 'CATTLE_NEW_SIGNED_CERT_EXPIRATION_DAYS=36500' ] 即可
    2. k3s-install.sh 指令碼: 目前該指令碼沒有提供讀取外部的環境變數的方式. 需要自己進行改造. 這裡就不細說.
  • 已有叢集:
  1. 往 k3s.service.env 寫入 CATTLE_NEW_SIGNED_CERT_EXPIRATION_DAYS=36500 配置
  2. 透過官網升級指引,配合上述的自定義ca指令碼進行升級.(注意指定到別的路徑, 不要直接覆蓋當前的證書路徑)
  3. 透過該方法對證書進行升級後,即使刪除 /etc/rancher/k3s/k3s.yaml 檔案重啟得到新的叢集配置檔案也無法透過 kubectl 訪問叢集. (但是tls證書過期時間、k3s 服務均可以變成期望的)

相關文章