OpenKruise-webhook-certs 过期如何重新生成?

OpenKruise-webhook-certs 过期如何重新生成?

展开
收起
嘟嘟嘟嘟嘟嘟 2024-02-07 08:07:36 210 分享 版权
3 条回答
写回答
取消 提交回答
  • OpenKruise-webhook-certs 过期后,需要重新生成和更新证书。以下是通常在 Kubernetes 中为 OpenKruise webhook 重新生成证书的大致步骤:

    1. 备份现有证书(如果需要):

      kubectl -n <namespace> get secret <webhook-secret-name> -o jsonpath='{.data.tls\.crt}' | base64 --decode > old.crt
      kubectl -n <namespace> get secret <webhook-secret-name> -o jsonpath='{.data.tls\.key}' | base64 --decode > old.key
      

      <namespace> 替换为您的 OpenKruise webhook 所在的命名空间,将 <webhook-secret-name> 替换为实际密钥名称。

    2. 删除现有的过期 Secret

      kubectl -n <namespace> delete secret <webhook-secret-name>
      
    3. 生成新的证书
      如果您有自签名 CA 证书,可以使用 OpenSSL 或其他工具来创建一个新的证书对。对于 Kubernetes 集群内部的 webhook,您可以使用 kubernetes.io/tls 类型的 Secret 的自动管理功能,例如通过 cert-manager 来自动化这一过程。如果没有现成的解决方案,手动创建证书并确保它满足 webhook 的要求。

      如果使用 cert-manager,请按照其文档配置一个 Issuer 或 ClusterIssuer,以及相应的 Certificate 资源以自动签发新证书。

    4. 为 OpenKruise webhook 创建新的 Secret
      如果是手动创建证书:

      openssl req -new -newkey rsa:2048 -nodes -keyout tls.key -out tls.csr # 生成 CSR
      # 签发证书(这里假设已有 CA 用于签署或直接自签名)
      openssl x509 -req -in tls.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out tls.crt -days 365
      
      kubectl -n <namespace> create secret tls <webhook-secret-name> --key tls.key --cert tls.crt
      

      确保将 tls.keytls.crt 替换为您刚生成的私钥和证书文件,并且 <webhook-secret-name> 与 OpenKruise webhook 配置中期望使用的 Secret 名称一致。

    5. 更新 OpenKruise webhook 配置
      如果 OpenKruise webhook 是通过 Deployment、StatefulSet 或其他方式部署的,需要更新对应的配置文件或 Helm chart 参数以指向新的 Secret。重启 webhook 控制器以加载新的证书。

    请注意,在生产环境中,应遵循最佳安全实践,例如使用合适的 DNS 或 IP 地址 SANs,并确保证书链完整性和有效期足够长但不过于冗长。同时,考虑设置自动证书轮转机制,避免将来再次出现过期问题。

    2024-02-26 16:54:24
    赞同 展开评论
  • 这块逻辑稳定运行了几年了, 一直没动过的。此回答整理自钉群“OpenKruise 社区交流群”

    2024-02-08 10:37:14
    赞同 展开评论
  • 北京阿里云ACE会长

    image.png

    OpenKruise-webhook-certs 是一个用于存储和管理 Webhook 证书的 Kubernetes 资源。如果证书已经过期,需要重新生成新的证书,可以按照以下步骤进行操作:

    1. 备份现有的证书和私钥。可以使用以下命令备份证书和私钥:

    kubectl get secret openkruise-webhook-certs -o jsonpath="{.data.cert.crt}" | base64 --decode > cert.crt
    kubectl get secret openkruise-webhook-certs -o jsonpath="{.data.private.key}" | base64 --decode > private.key
    CopyCopy

    1. 删除现有的证书和私钥。可以使用以下命令删除证书和私钥:

      kubectl delete secret openkruise-webhook-certs
      CopyCopy

    2. 创建新的证书和私钥。可以使用以下命令创建新的证书和私钥:

      openssl genrsa -out private.key 2048
      openssl req -new -key private.key -out cert.crt -subj "/CN=openkruise-webhook/O=kruise"
      CopyCopy

    3. 将新的证书和私钥添加到 Kubernetes 存储库中。可以使用以下命令将新的证书和私钥添加到 OpenKruise-webhook-certs 存储库中:

      kubectl create secret tls openkruise-webhook-certs --key private.key --cert cert.crt
      CopyCopy

    4. 更新 Webhook 配置。确保 Webhook 配置中使用的证书和私钥是新的证书和私钥。

    image.png

    2024-02-07 09:13:24
    赞同 展开评论