【问题标题】:how to replace etcd expired CA cert in Openshift Origin cluster如何在 Openshift Origin 集群中替换 etcd 过期的 CA 证书
【发布时间】:2017-06-16 21:49:10
【问题描述】:

我们正在运行 OpenShift Origin 1.4 (OSE 3.4),并且 etcd 的 CA 证书在周末到期。集群似乎仍在运行。但是,我猜它是一个定时炸弹。这引出了我的问题。有人知道更新证书的安全方法吗?

我已经看到下面的链接,但它似乎适用于即将过期的有效证书。我有一种感觉,自从证书过期以来,一旦重新启动任何服务,它就会失败。

https://docs.openshift.org/latest/install_config/redeploying_certificates.html

【问题讨论】:

    标签: openshift etcd


    【解决方案1】:

    我昨天早上解决了这个问题。以下是对该情况的完整描述以及我为解决该问题所做的工作,以防遇到相同问题的人看到此问题。

    我们正在运行一个最初安装为 1.1 的 OpenShift 源 1.4 集群,并在过去一年中升级了所有版本。上周六,我们的 etcd 的 CA、服务器和对等证书过期。这导致我们的服务器日志中抛出了许多错误,但 etcd 和 openshift 集群继续运行。但是,当我在我们的开发环境中造成同样的情况并重新启动服务时,etcd 节点拒绝相互连接,并且 openshift 集群无法启动。

    如果您遇到同样的情况,请不要重新启动 etcd 或您的主服务,除非您有解决问题的计划并准备好这样做。

    用于重新部署证书的 OpenShift 文档指出,使用 redeploy-certificates.yaml 剧本不会重新生成任何 CA 证书。我在我们的开发环境中对此进行了测试,并确认它不会重新生成 etcd CA 证书。 redeploy-etcd-certificates.yaml 剧本也没有。这意味着您必须运行 redeploy-openshift-ca.yml 剧本,然后运行 ​​redeploy-certificates.yml 剧本来解决问题。最后,您将拥有集群中所有内容的所有新证书。当 redeploy-openshift-ca 尝试重新启动 etcd 并看到过期的服务器和对等证书时,我很确定这将花费大量时间并可能导致中断。

    为了解决这个问题,我找到了 redeploy-openshift-ca.yaml 剧本中使用的命令,该命令生成 etcd CA 证书并手动运行。之后,我运行了 redeploy-etcd-certificates.yaml 剧本。

    cd /etc/etcd/ca/ 
    export SAN=etcd-signer
    openssl req -config openssl.cnf -newkey rsa:4096 -keyout ca.key \
        -new -out ca.crt -x509 -extensions etcd_v3_ca_self -batch \
        -nodes -days 1825 -subj /CN=etcd-signer@`date +%s`
    ansible-playbook -i hosts_file -vv \ 
        /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-cluster/redeploy-etcd-certificates.yml
    

    redeploy-etcd-certificates playbook 在尝试重新启动第一个 etcd 节点时失败,因为其他两个节点仍在使用过期的证书运行。为了解决这个问题,我手动重启了所有三个 etcd 节点的服务,一切正常。然后,我重新运行了 redeploy-etcd-certificates 剧本以取得良好的效果。它第二次正确完成,我们的环境再次愉快。

    @aleks 感谢您的帮助。

    【讨论】:

      【解决方案2】:

      您可以尝试获取即将过期的证书的报告

      https://docs.openshift.org/latest/install_config/redeploying_certificates.html#install-config-cert-expiry

      我已经多次使用这本剧本,它对证书的处理非常好。

      https://docs.openshift.org/latest/install_config/redeploying_certificates.html#redeploying-all-certificates-current-ca

      您可以在运行此 playbook 之前为您的环境创建备份,以便能够回到当前状态,以防出现问题。

      【讨论】:

      • 您是否尝试过在证书已过期的集群上运行 playbook?我担心当看到过期的证书时,etcd 在滚动重启期间不会回来。
      • 是的,这对我来说是第一个用例。由于证书已过期,集群无法与 etcd 通信
      • 你是先运行 redeploy-openshift-ca.yml 然后再运行 redeploy-certificates.yml 吗?
      • 不只是重新部署证书
      • @drew 请问这个话题的状态如何?
      猜你喜欢
      • 2021-06-15
      • 2019-05-25
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 2019-06-04
      相关资源
      最近更新 更多