RKE 叢集證書管理
v0.2.0 開始可用
注意:這不是 "Kubernetes 中的 TLS 證書管理"。更多細節請參考Kubernetes 文件和 RKE cluster.yaml 示例。
證書是 Kubernetes 叢集的重要組成部分,所有的 Kubernetes 元件都需要用到證書。您可以使用 RKE 的rke cert命令管理證書。
輪換證書
預設狀態下,Kubenetes 叢集使用由 RKE 自動生成的證書。當證書臨近過期時,或當證書被洩露時,使用者應該及時輪換證書。
完成證書輪換後,Kubernetes 元件會自動重啟,重啟後,新的證書就會生效。您可以為以下這些服務輪換證書:
- etcd
- kubelet (節點證書)
- kubelet (啟用 Kubelet 選項後,可以輪換服務證書。)
- kube-apiserver
- kube-proxy
- kube-scheduler
- kube-controller-manager
RKE 具有輪換證書的能力,您可以使用rke cert命令輪換服務證書:
- rke cert rotate:輪換全部服務證書。
- rke cert rotate --service
:輪換單個服務證書。 - rke cert rotate --rotate-ca:輪換 CA 證書和全部服務證書。
只要您在進行證書輪換,都需要用到cluster.yml 檔案。如果您修改了cluster.yml 預設的儲存路徑,在執行證書輪換的時候,您可以使用rke cert rotate --config
輪換服務證書
輪換全部服務證書
執行rke cert rotate命令,可以將所有服務正在使用的證書替換為同一證書籤發機構頒發的新證書。在命令列工具輸入該命令後,返回資訊如下。完成證書輪換後,Kubernetes 元件會自動重啟,然後新的證書就會生效。
輪換單個服務證書
執行rke cert rotate --service
- etcd
- kubelet
- kube-apiserver
- kube-proxy
- kube-scheduler
- kube-controller-manager
以下程式碼示例演示的是替換kubelet元件使用的證書:
rke cert rotate --service kubelet
INFO[0000] Initiating Kubernetes cluster
INFO[0000] Rotating Kubernetes cluster certificates
INFO[0000] [certificates] Generating Node certificate
INFO[0000] Successfully Deployed state file at [./cluster.rkestate]
INFO[0000] Rebuilding Kubernetes cluster with rotated certificates
.....
INFO[0033] [worker] Successfully restarted Worker Plane..
輪換 CA 證書
如果需要輪換 CA 證書,您需要為所有的服務輪換證書。使用--rotate-ca選項,可以輪換 CA 證書和所有服務的證書。完成證書輪換後,Kubernetes 元件會自動重啟,然後新的證書就會生效。
輪換 CA 證書會導致其他 system pods 重啟,這些 pods 重啟後也會使用新的 CA 證書:
- 網路元件 Pods(canal、calico、flannel 和 weave)
- Ingress Controller pods
- KubeDNS pods
rke cert rotate --rotate-ca
INFO[0000] Initiating Kubernetes cluster
INFO[0000] Rotating Kubernetes cluster certificates
INFO[0000] [certificates] Generating CA kubernetes certificates
INFO[0000] [certificates] Generating Kubernetes API server aggregation layer requestheader client CA certificates
INFO[0000] [certificates] Generating Kubernetes API server certificates
INFO[0000] [certificates] Generating Kube Controller certificates
INFO[0000] [certificates] Generating Kube Scheduler certificates
INFO[0000] [certificates] Generating Kube Proxy certificates
INFO[0000] [certificates] Generating Node certificate
INFO[0001] [certificates] Generating admin certificates and kubeconfig
INFO[0001] [certificates] Generating Kubernetes API server proxy client certificates
INFO[0001] [certificates] Generating etcd-xxxxx certificate and key
INFO[0001] [certificates] Generating etcd-yyyyy certificate and key
INFO[0001] [certificates] Generating etcd-zzzzz certificate and key
INFO[0001] Successfully Deployed state file at [./cluster.rkestate]
INFO[0001] Rebuilding Kubernetes cluster with rotated certificates