J'ai résolu ce problème hier matin. Voici une description complète de la situation et ce que j'ai fait pour la résoudre au cas où quelqu'un avec le même problème voit cela.
Nous utilisons un cluster OpenShift origin 1.4 installé à l'origine en version 1.1 et qui a été mis à jour à travers toutes les versions au cours de l'année écoulée. Samedi dernier, nos certificats d'autorité de certification, serveurs et homologues pour etcd ont expiré. Cela a provoqué un certain nombre d'erreurs dans nos journaux de serveur, mais le cluster etcd et openshift a continué à fonctionner. Cependant, lorsque j'ai provoqué la même situation dans notre environnement de développement et redémarré les services, les nœuds etcd ont refusé de se connecter les uns aux autres et le cluster openshift ne démarrait pas.
Si vous êtes dans la même situation, ne redémarrez pas etcd ou vos services maîtres sauf si vous avez un plan de jeu pour résoudre le problème et que vous êtes prêt à le faire. Les docs OpenShift pour le redéploiement des certificats indiquent que l'utilisation du playbook redeploy-certificates.yaml ne régénère aucun certificat d'autorité de certification. J'ai testé cela dans notre environnement de développement et confirmé qu'il ne régénère pas le certificat de l'AC etc. Le redéploiement-etcd-certificates.yaml playbook non plus. Ce qui signifie que vous devez exécuter le playbook redeploy-openshift-ca.yml puis le playbook redeploy-certificates.yml pour résoudre le problème. À la fin, vous auriez tous les nouveaux certificats pour tout dans le cluster. J'étais à peu près sûr que cela prendrait beaucoup de temps et causerait potentiellement une panne quand redeploy-openshift-ca essaierait de redémarrer etcd et verrait des certificats de serveur et d'homologues expirés.
Pour résoudre le problème, j'ai trouvé la commande utilisée dans le livre de jeu redeploy-openshift-ca.yaml qui génère le certificat de CA etcd et l'a exécuté manuellement. Après cela, j'ai exécuté le playbook 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
Le Redéployer-ETCD certificats Playbook a échoué à essayer de redémarrer le premier noeud ETCD parce que les deux autres étaient encore en cours d'exécution des noeuds avec les certificats expirés. Pour résoudre ce problème, j'ai redémarré manuellement les services pour les trois nœuds etcd et tout est arrivé correctement. J'ai alors réexécuté le playbook redeploy-etcd-certificates pour faire bonne mesure. Il a terminé correctement la deuxième fois et notre environnement est heureux à nouveau.
@aleks merci pour l'aide.
Avez-vous déjà essayé d'exécuter les playbooks sur un cluster avec un certificat déjà expiré? Je suis préoccupé par le fait que le fichier etcd ne reviendra pas lors du redémarrage tournant lorsqu'il verra un certificat expiré. – drew
Oui, c'était le premier cas d'utilisation pour moi. Le cluster n'a pas pu parler avec etcd car le certificat a expiré – Aleksandar
Avez-vous exécuté d'abord redploy-openshift-ca.yml, puis redeploy-certificates.yml? – drew