如何在Openshift源集群中替换etcd过期CA证书

如何在Openshift源集群中替换etcd过期CA证书,openshift,etcd,Openshift,Etcd,我们正在运行OpenShift Origin 1.4(OSE 3.4),etcd的CA证书将在周末到期。集群似乎仍在运行。然而,我猜这是一颗滴答作响的定时炸弹。这就引出了我的问题。有人知道更新证书的安全方法吗 我看到了下面的链接,但似乎是针对即将过期的有效证书。我有一种感觉,由于证书过期,一旦重新启动任何服务,它就会失败 您可以尝试获取证书过期的报告 我已经用过这个剧本好几次了,而且它能很好地处理证书 您可以在运行本playbook之前为您的环境创建备份,以便能够返回到当前状态,以防出现问题

我们正在运行OpenShift Origin 1.4(OSE 3.4),etcd的CA证书将在周末到期。集群似乎仍在运行。然而,我猜这是一颗滴答作响的定时炸弹。这就引出了我的问题。有人知道更新证书的安全方法吗

我看到了下面的链接,但似乎是针对即将过期的有效证书。我有一种感觉,由于证书过期,一旦重新启动任何服务,它就会失败


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

我已经用过这个剧本好几次了,而且它能很好地处理证书


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

我昨天早上解决了这个问题。这里有一个完整的情况描述,以及我做了什么来解决它,以防有人看到同样的问题

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

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

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

为了解决这个问题,我在redeploy-openshift-ca.yaml playbook中找到了生成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
“重新部署etcd证书”playbook在尝试重新启动第一个etcd节点时失败,因为其他两个节点仍在使用过期的证书运行。为了解决这个问题,我手动重新启动了所有三个etcd节点的服务,一切正常。然后,我重新运行了“重新部署etcd证书”剧本。第二次顺利完成,我们的环境又好了


@谢谢你的帮助

您是否曾经尝试过使用已过期的证书在集群上运行剧本?我担心etcd在滚动重启过程中看到过期证书时不会回来。是的,这是我的第一个使用案例。群集无法与etcd对话,因为证书已过期。请首先运行redeploy-openshift-ca.yml,然后再运行redeploy-certificates.yml?否,仅重新部署-certificates@drew请问这个话题的状态如何?