如何更新Kubernetes SSL证书

jm81lzqq  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(2)|浏览(128)

我正在使用kubeadm构建k8s集群,默认的ssl证书将在1年内使用。我计划使用cfssl或opensll生成新的证书,使用10年。有人能帮我吗?
谢谢大家

hivapdat

hivapdat1#

您可以使用cfssl或openssl生成证书并存储在目录中,并在Kubeadm init中指定该目录,kubeadm将不会生成证书并使用提供的证书。

kubeadm init --cert-dir

字符串
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#custom-certificates
Kubeadm还提供证书更新机制,可将证书更新1年。

kubeadm alpha certs renew


由于您有一个正在运行的集群,它签署的证书有效期为1年,您可以将kube控制器管理器的默认证书签署期限更改为10年。

--experimental-cluster-signing-duration duration     Default: 8760h0m0s


完成后,您可以使用以下指南签署证书,有效期为10年。
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#renew-certificates-with-the-kubernetes-certificates-api

yrefmtwq

yrefmtwq2#

将Kubernetes证书续订10年(不推荐)。x1c 0d1x的数据

  • 检查证书过期

第一个月

  • 备份现有的Kubernetes证书

mkdir -p $HOME/fcik8s-old-certs/pki
/bin/cp -p /etc/kubernetes/pki/*.* $HOME/fcik8s-old-certs/pki

  • 备份现有配置文件

/bin/cp -p /etc/kubernetes/*.conf $HOME/fcik8s-old-certs

  • 备份您的主配置

mkdir -p $HOME/fcik8s-old-certs/.kube
/bin/cp -p ~/.kube/config $HOME/fcik8s-old-certs/.kube/.

  • kube-controller-manager 添加 --cluster-signing-duration flag(1.19之前的 --experimental-cluster-signing-duration

编辑/etc/kubernetes/manifests/kube-controller-manager.yaml

apiVersion: v1
 kind: Pod
 metadata:
   creationTimestamp: null
   labels:
     component: kube-controller-manager
     tier: control-plane
   name: kube-controller-manager
   namespace: kube-system
 spec:
   containers:
   - command:
     - kube-controller-manager
     ...
     - --experimental-cluster-signing-duration=87600h
     ...
 ...

字符串
87600 h ~ 10年

  • 更新所有证书

kubeadm alpha certs renew all --config /etc/kubernetes/kubeadm-config.yaml --use-api

  • 批准证书请求

kubectl get csr
kubectl certificate approve <cert_request>

  • 更新kubeconfig文件

kubeadm init phase kubeconfig all --config /etc/kubernetes/kubeadm-config.yaml

  • 用新生成的管理配置文件覆盖原始的管理文件

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

  • 重新启动组件

docker restart $(docker ps | grep etcd | awk '{ print $1 }')
docker restart $(docker ps | grep kube-apiserver | awk '{ print $1 }')
docker restart $(docker ps | grep kube-scheduler | awk '{ print $1 })
docker restart $(docker ps | grep kube-controller | awk '{ print $1 }')
systemctl daemon-reload && systemctl restart kubelet

  • 检查api服务器证书过期

echo | openssl s_client -showcerts -connect 127.0.0.1:6443 -servername api 2>/dev/null | openssl x509 -noout -enddate

相关问题