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

时间:2017-06-13 19:26:23

标签: openshift etcd

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

我已经看到了下面的链接,但它似乎是有效的证书即将到期。我有一种感觉,一旦任何服务重新启动,它将失败,因为证书已过期。

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

2 个答案:

答案 0 :(得分:2)

昨天早上我解决了这个问题。以下是对情况的完整描述以及解决问题的方法,以防有任何相同问题的人看到此情况。

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

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

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

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

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 playbook以获得良好的衡量标准。它第二次正确完成,我们的环境再次开心。

@aleks感谢您的帮助。

答案 1 :(得分:0)

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

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

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

相关问题