【问题标题】:How to renew kubernetes ssl certs如何更新 kubernetes ssl 证书
【发布时间】:2020-07-11 16:39:10
【问题描述】:

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

谢谢大家

【问题讨论】:

    标签: ssl kubernetes openssl certificate kubernetes-apiserver


    【解决方案1】:

    将 Kubernetes 证书续订 10 年(不推荐)。

    • 检查证书过期

      kubeadm alpha certs check-expiration --config="/etc/kubernetes/kubeadm-config.yaml"

    • 备份现有的 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 标志(--experimental-cluster-signing-duration 1.19 之前的版本) /em>

      编辑 /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
           ...
       ...
      

      87600h ~ 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-server 证书过期

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

    【讨论】:

      【解决方案2】:

      您可以使用 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

      【讨论】:

      • 您能帮忙提供一个教程吗?以及如何在集群运行时更改它。
      • 这个命令续订1年,我想延长到10年以上。
      猜你喜欢
      • 2020-10-17
      • 2019-05-26
      • 1970-01-01
      • 2018-08-02
      • 2015-05-15
      • 2018-10-12
      • 1970-01-01
      • 2021-07-29
      • 2019-10-11
      相关资源
      最近更新 更多