证书是 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
rke cert rotate --rotate-ca
INFO[0000] Initiating Kubernetes cluster
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 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