Как заменить сертификат CA с истекшим сроком действия в кластере Openshift Origin
Мы работаем с OpenShift Origin 1.4 (OSE 3.4), и срок действия сертификата CA для etcd истек в выходные. Похоже, кластер все еще функционирует. Тем не менее, я думаю, это бомба замедленного действия. Что приводит меня к моему вопросу. Кто-нибудь знает безопасный способ обновления сертификатов?
Я видел ссылку ниже, но, похоже, она действительна для сертификатов, срок действия которых истекает. У меня такое чувство, что оно не получится, как только перезапустится какая-либо служба после истечения срока действия сертификата
https://docs.openshift.org/latest/install_config/redeploying_certificates.html
2 ответа
Я решил эту проблему вчера утром. Вот полное описание ситуации и того, что я сделал для ее разрешения на случай, если кто-то с такой же проблемой увидит это.
Мы работаем с кластером OpenShift origin 1.4, который изначально был установлен как 1.1 и обновлен во всех версиях за последний год. В прошлую субботу истек срок действия сертификатов CA, Server и Peer для etcd. Это вызвало ряд ошибок в журналах нашего сервера, но кластер etcd и openshift продолжал работать. Однако, когда я вызвал ту же ситуацию в нашей среде разработки и перезапустил службы, узлы etcd отказались соединяться друг с другом, и кластер openshift не запустился.
Если вы находитесь в такой же ситуации, НЕ перезапускайте etcd или ваши основные сервисы, если у вас нет плана игры для устранения проблемы и вы готовы к этому.
Документы OpenShift для повторного развертывания сертификатов гласят, что использование playbook redeploy-certificate.yaml не создает никаких сертификатов CA. Я проверил это в нашей среде разработки и подтвердил, что он не восстанавливает сертификат etcd CA. Ни один не делает playbook redeploy-etcd-Certificates.yaml. Это означает, что вы должны запустить playbook redeploy-openshift-ca.yml, а затем playbook redeploy-reports.yml, чтобы решить эту проблему. В итоге у вас будут все новые сертификаты для всего в кластере. Я был почти уверен, что это займет значительное количество времени и потенциально может привести к сбою, когда redeploy-openshift-ca попытается перезапустить etcd и увидит просроченные серверные и одноранговые сертификаты.
Чтобы решить эту проблему, я нашел команду, использованную в playbook redeploy-openshift-ca.yaml, которая генерирует сертификат etcd CA и запускает его вручную. После этого я запустил playbook redeploy-etcd-certificate.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 не удалось перезапустить плейбук redeploy-etcd-сертификаты, так как два других узла все еще работали с просроченными сертификатами. Чтобы решить эту проблему, я вручную перезапустил сервисы для всех трех узлов etcd, и все прошло правильно. Затем я повторно запустил книгу воспроизведения redeploy-etcd-сертификаты для хорошей меры. Он завершился правильно во второй раз, и наша среда снова счастлива.
@aleks спасибо за помощь.
Вы можете попытаться получить отчет о сертификатах, срок действия которых истечет
https://docs.openshift.org/latest/install_config/redeploying_certificates.html
Я использовал эту пьесу несколько раз, и она очень хорошо справляется с сертификатами.
https://docs.openshift.org/latest/install_config/redeploying_certificates.html
Yo может создать резервную копию для вашей среды, прежде чем вы запустите этот playbook, чтобы иметь возможность вернуться к текущему состоянию, если что-то пойдет не так.