证书是 Kubernetes 集群的重要组成部分,所有的 Kubernetes 组件都需要用到证书。您可以使用 RKE 的 命令管理证书。

如果您想使用证书签发机构创建和签发证书,您可以使用RKE 创建证书签发请求和密钥

您可以使用证书签发请求和密钥给证书签发机构的证书签名。签名之后,RKE 可以在 Kubernetes 集群中使用这些。

轮换证书

完成证书轮换后,Kubernetes 组件会自动重启,重启后,新的证书就会生效。您可以为以下这些服务轮换证书:

  • etcd
  • kubelet
  • kube-apiserver
  • kube-proxy
  • kube-scheduler
  • kube-controller-manager

RKE 具有轮换证书的能力,您可以使用rke cert命令轮换服务证书:

  • rke cert rotate:轮换全部服务证书。
  • rke cert rotate --rotate-ca:轮换 CA 证书和全部服务证书。

只要您在进行证书轮换,都需要用到cluster.yml 文件。如果您修改了cluster.yml 默认的存储路径,在执行证书轮换的时候,您可以使用rke cert rotate --config指向cluster.yml 的路径。

轮换全部服务证书

轮换单个服务证书

运行命令,可以将单个服务正在使用的证书替换为同一证书签发机构颁发的新证书。在命令行工具输入该命令后,返回信息如下。完成证书轮换后,Kubernetes 组件会自动重启,然后新的证书就会生效。

<ServiceName>的可选值包括:

  • etcd
  • kubelet
  • kube-apiserver
  • kube-proxy
  • kube-scheduler
  • kube-controller-manager

以下代码示例演示的是替换kubelet组件使用的证书:

轮换 CA 证书

轮换 CA 证书会导致其他 system pods 重启,这些 pods 重启后也会使用新的 CA 证书:

  • 网络组件 Pods(canal、calico、flannel 和 weave)
  • Ingress Controller pods
  • KubeDNS pods
  1. rke cert rotate --rotate-ca
  2. INFO[0000] Initiating Kubernetes cluster
  3. INFO[0000] [certificates] Generating CA kubernetes certificates
  4. INFO[0000] [certificates] Generating Kubernetes API server aggregation layer requestheader client CA certificates
  5. INFO[0000] [certificates] Generating Kubernetes API server certificates
  6. INFO[0000] [certificates] Generating Kube Scheduler certificates
  7. INFO[0000] [certificates] Generating Kube Proxy certificates
  8. INFO[0000] [certificates] Generating Node certificate
  9. INFO[0001] [certificates] Generating admin certificates and kubeconfig
  10. INFO[0001] [certificates] Generating Kubernetes API server proxy client certificates
  11. INFO[0001] [certificates] Generating etcd-xxxxx certificate and key
  12. INFO[0001] [certificates] Generating etcd-yyyyy certificate and key
  13. INFO[0001] [certificates] Generating etcd-zzzzz certificate and key