2017-06-13 21 views
0

我们运行的是OpenShift Origin 1.4(OSE 3.4),并且在周末期间有etcd的CA证书过期。群集似乎仍在运行。不过,我猜测它是一颗定时炸弹。这导致我的问题。有谁知道更新证书的安全方法吗?如何在Opensift Origin集群中替换etcd过期的CA证书

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

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

回答

2

昨天早上我解决了这个问题。以下是对这种情况的全面描述,以及我解决这个问题的方法,以防万一有同样问题的人看到这种情况。

我们运行的OpenShift起源1.4集群最初安装为1.1,并且在过去的一年中已升级到所有版本。上周六,我们的CA,服务器和etcd的同行证书过期了。这在我们的服务器日志中引发了一些错误,但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并看到过期的服务器和对等证书时出现中断。

要解决此问题,我找到了用于生成etcd CA cert的redeploy-openshift-ca.yaml剧本中的命令,并手动运行该命令。之后,我运行了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 /[email protected]`date +%s` 
ansible-playbook -i hosts_file -vv \ 
    /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-cluster/redeploy-etcd-certificates.yml 

的重新部署,ETCD-证书剧本未能在尝试重新启动第一ETCD节点,因为这两个其他节点仍然用过期的证书运行。为了解决这个问题,我手动为所有三个etcd节点重新启动了服务,并且一切正常。然后,我重新运行redeploy-etcd-certificates操作手册以获得更好的效果。第二次正确完成,我们的环境再次开心。

@aleks感谢您的帮助。

0

你可以尝试获得了证书的报告whicl将到期

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

运行此之前,剧本要能回到当前的状态,在出现问题的情况下呦可以为您的环境中的备份。

+0

你有没有试过在已经过期的证书集群上运行剧本?我担心etcd在看到过期证书时在滚动重新启动期间不会回来。 – drew

+0

是的,这是我的第一个用例。由于证书已过期,群集无法与etcd通信 – Aleksandar

+0

您是否先通过redeploy-openshift-ca.yml运行,然后再运行redeploy-certificates.yml? – drew