diff --git a/sreez/src/app.rs b/sreez/src/app.rs index d4d7ad9..4d336d1 100644 --- a/sreez/src/app.rs +++ b/sreez/src/app.rs @@ -7,6 +7,7 @@ use chrono::Utc; use crate::config::get_discord_webhook_url; use crate::pages::ShortLandingPage; use crate::pages::OkdInstallationOverview1; +use crate::pages::OkdRecoverFromExpiredCerts; use crate::pages::HomePage; use crate::pages::InitialOffer; use crate::components::Matomo; @@ -34,6 +35,7 @@ pub fn App() -> impl IntoView { + diff --git a/sreez/src/pages/mod.rs b/sreez/src/pages/mod.rs index e06d223..f7a1d65 100644 --- a/sreez/src/pages/mod.rs +++ b/sreez/src/pages/mod.rs @@ -2,7 +2,9 @@ mod home_page; mod initial_offer; mod short_landing_page; mod okd_installation_overview_1; +mod okd_recover_from_expired_certs; pub use short_landing_page::*; pub use home_page::*; pub use initial_offer::*; pub use okd_installation_overview_1::*; +pub use okd_recover_from_expired_certs::*; diff --git a/sreez/src/pages/okd_recover_from_expired_certs.rs b/sreez/src/pages/okd_recover_from_expired_certs.rs new file mode 100644 index 0000000..c014f8a --- /dev/null +++ b/sreez/src/pages/okd_recover_from_expired_certs.rs @@ -0,0 +1,282 @@ +use leptos::*; +use leptos_meta::*; +use crate::components::{Footer, SubscribeButton}; +/// Renders the home page of your application. +#[component] +pub fn OkdRecoverFromExpiredCerts() -> impl IntoView { + provide_meta_context(); + view! { + + + + + +
+ //
+
+
+
+

"RedHat OKD" + " -OpenShift Community Edition-" +
+ "Certs Expirés - Comment Récupérer Le Cluster" +

+
+
+ RedHat logo +
+
+
+ +
+
+

"Ce matin, j'ai redémarré un cluster "OKD" qui était complètement down depuis quelques semaines. Ce que je j'anticipais s'est bien entendu produit : certificats expirés, plus rien ne fonctionne! Du "déjà-vu" avec kubeadm, un petit "kubeadm certs renew all" suivi de quelques redémarrages de services et c'est reparti. Shall be easy right? 🙄"

+ + + + + + //
# cp a b
+ + + + +

"On confirme l'hypothèse"

+
+

"Plusieurs minutes après le redémarrage du cluster, toujours incapable de rejoindre la console ou d'utiliser "oc" pour lui parler, rien ne répond. Allons faire un tour sur un des control planes pour explorer." +

+ +
"$ ssh core@cp0
+[core@cp0 ~]$ sudo su -
+[root@cp0 ~]# cd /var/log/kube-apiserver
+[root@cp0 kube-apiserver]# tail audit.log
+"
+"{\"kind\":\"Event\",\"apiVersion\":\"audit.k8s.io/v1\",\"level\":\"Metadata\",\"auditID\":\"08f25e10-4b5e-4ffa-a709-54654af4555f\",\"stage\":\"ResponseComplete\",\"requestURI\":\"/apis/groupsnapshot.storage.k8s.io/v1alpha1/volumegroupsnapshotclasses?limit=500\\u0026resourceVersion=0\",\"verb\":\"list\",\"user\":{\"username\":\"system:serviceaccount:openshift-cluster-storage-operator:default\",\"uid\":\"5bb68eb8-bfd0-4184-862c-0954f1ec8c9a\",\"groups\":[\"system:serviceaccounts\",\"system:serviceaccounts:openshift-cluster-storage-operator\",\"system:authenticated\"],\"extra\":{\"authentication.kubernetes.io/pod-name\":[\"csi-snapshot-webhook-85d856ff4f-ctnwg\"],\"authentication.kubernetes.io/pod-uid\":[\"283d9173-1e7a-4c29-8847-9796ab6afe7a\"]}},\"sourceIPs\":[\"10.128.0.13\"],\"userAgent\":\"snapshot-validation-webhook/v0.0.0 (linux/amd64) kubernetes/$Format\",\"objectRef\":{\"resource\":\"volumegroupsnapshotclasses\",\"apiGroup\":\"groupsnapshot.storage.k8s.io\",\"apiVersion\":\"v1alpha1\"},\"responseStatus\":{\"metadata\":{},\"status\":\"Failure\",\"message\":\"volumegroupsnapshotclasses.groupsnapshot.storage.k8s.io is forbidden: User \\\"system:serviceaccount:openshift-cluster-storage-operator:default\\\" cannot list resource \\\"volumegroupsnapshotclasses\\\" in API group \\\"groupsnapshot.storage.k8s.io\\\" at the cluster scope\",\"reason\":\"Forbidden\",\"details\":{\"group\":\"groupsnapshot.storage.k8s.io\",\"kind\":\"volumegroupsnapshotclasses\"},\"code\":403},\"requestReceivedTimestamp\":\"2024-05-23T08:21:27.301688Z\",\"stageTimestamp\":\"2024-05-23T08:21:27.304146Z\",\"annotations\":{\"authorization.k8s.io/decision\":\"forbid\",\"authorization.k8s.io/reason\":\"\"}}\n{\"kind\":\"Event\",\"apiVersion\":\"audit.k8s.io/v1\",\"level\":\"Metadata\",\"auditID\":\"c41e12fc-bfb5-4231-9287-85a5ab6df999\",\"stage\":\"ResponseComplete\",\"requestURI\":\"/apis/groupsnapshot.storage.k8s.io/v1alpha1/volumegroupsnapshotclasses?limit=500\\u0026resourceVersion=0\",\"verb\":\"list\",\"user\":{\"username\":\"system:serviceaccount:openshift-cluster-storage-operator:default\",\"uid\":\"5bb68eb8-bfd0-4184-862c-0954f1ec8c9a\",\"groups\":[\"system:serviceaccounts\",\"system:serviceaccounts:openshift-cluster-storage-operator\",\"system:authenticated\"],\"extra\":{\"authentication.kubernetes.io/pod-name\":[\"csi-snapshot-webhook-85d856ff4f-dgfkn\"],\"authentication.kubernetes.io/pod-uid\":[\"db608383-5220-4a30-acbc-5142724efd34\"]}},\"sourceIPs\":[\"192.168.3.21\"],\"userAgent\":\"snapshot-validation-webhook/v0.0.0 (linux/amd64) kubernetes/$Format\",\"objectRef\":{\"resource\":\"volumegroupsnapshotclasses\",\"apiGroup\":\"groupsnapshot.storage.k8s.io\",\"apiVersion\":\"v1alpha1\"},\"responseStatus\":{\"metadata\":{},\"status\":\"Failure\",\"message\":\"volumegroupsnapshotclasses.groupsnapshot.storage.k8s.io is forbidden: User \\\"system:serviceaccount:openshift-cluster-storage-operator:default\\\" cannot list resource \\\"volumegroupsnapshotclasses\\\" in API group \\\"groupsnapshot.storage.k8s.io\\\" at the cluster scope\",\"reason\":\"Forbidden\",\"details\":{\"group\":\"groupsnapshot.storage.k8s.io\",\"kind\":\"volumegroupsnapshotclasses\"},\"code\":403},\"requestReceivedTimestamp\":\"2024-05-23T08:21:53.194064Z\",\"stageTimestamp\":\"2024-05-23T08:21:53.196702Z\",\"annotations\":{\"authorization.k8s.io/decision\":\"forbid\",\"authorization.k8s.io/reason\":\"\"}}\n{\"kind\":\"Event\",\"apiVersion\":\"audit.k8s.io/v1\",\"level\":\"Metadata\",\"auditID\":\"75c5c22a-a78c-4eaa-9a05-eade76babca1\",\"stage\":\"ResponseComplete\",\"requestURI\":\"/apis/groupsnapshot.storage.k8s.io/v1alpha1/volumegroupsnapshotclasses?limit=500\\u0026resourceVersion=0\",\"verb\":\"list\",\"user\":{\"username\":\"system:serviceaccount:openshift-cluster-storage-operator:default\",\"uid\":\"5bb68eb8-bfd0-4184-862c-0954f1ec8c9a\",\"groups\":[\"system:serviceaccounts\",\"system:serviceaccounts:openshift-cluster-storage-operator\",\"system:authenticated\"],\"extra\":{\"authentication.kubernetes.io/pod-name\":[\"csi-snapshot-webhook-85d856ff4f-ctnwg\"],\"authentication.kubernetes.io/pod-uid\":[\"283d9173-1e7a-4c29-8847-9796ab6afe7a\"]}},\"sourceIPs\":[\"10.128.0.13\"],\"userAgent\":\"snapshot-validation-webhook/v0.0.0 (linux/amd64) kubernetes/$Format\",\"objectRef\":{\"resource\":\"volumegroupsnapshotclasses\",\"apiGroup\":\"groupsnapshot.storage.k8s.io\",\"apiVersion\":\"v1alpha1\"},\"responseStatus\":{\"metadata\":{},\"status\":\"Failure\",\"message\":\"volumegroupsnapshotclasses.groupsnapshot.storage.k8s.io is forbidden: User \\\"system:serviceaccount:openshift-cluster-storage-operator:default\\\" cannot list resource \\\"volumegroupsnapshotclasses\\\" in API group \\\"groupsnapshot.storage.k8s.io\\\" at the cluster scope\",\"reason\":\"Forbidden\",\"details\":{\"group\":\"groupsnapshot.storage.k8s.io\",\"kind\":\"volumegroupsnapshotclasses\"},\"code\":403},\"requestReceivedTimestamp\":\"2024-05-23T08:22:05.526294Z\",\"stageTimestamp\":\"2024-05-23T08:22:05.528896Z\",\"annotations\":{\"authorization.k8s.io/decision\":\"forbid\",\"authorization.k8s.io/reason\":\"\"}}"
+"...
+"
+                        
+

"Première indication d'un probable problème de certificat, des 403. Allons voir un peu plus loin..."

+
"[root@cp0 ~]# date
+Sat 29 Jun 2024 09:01 AM EDT
+
+[root@cp0 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -dates | grep notAfter
+notAfter=Jun 01 07:58:30 2024 GMT"
+                        
+

"Difficile d'être plus clair que ça : ce certificat est expiré depuis bientôt 1 mois. (Wow, le temps passe vite, je n'avais pas réalisé que ce cluster était down depuis si longtemps!)"

+ +
+ +

"La doc de Red Hat"

+
+

"Dès que l'on interroge le web, on tombe rapidement sur une doc de Red Hat qui semble très prometteuse : "Recovering from expired control plane certificates.

+ +

"Selon cette doc, le cluster est en mesure de se relever tout seul suite à ce problème d'expirations à l'exception d'un détail : les nouveaux certificats qu'il va créer doivent être approuvés. La procédure semble simple, ça ne devrait pas être bien compliqué! 🙄"

+ +
+ +

"Approuvons ces certificats!"

+
+

"Le cluster étant non fonctionnel, "oc" ne peut évidemment pas le rejoindre à partir de ma workstation. On va donc aller directement sur un control plane et voir à le faire fonctionner. Je n'ai jamais essayé ça avant (je n'en ai jamais eu le besoin), voyons ce que ça va dire. Je vous partage un extrait de mon exploration."

+
 "$ ssh core@cp0.st.mcd
+Fedora CoreOS 39.20240210.3.0
+
+Tracker: https://github.com/coreos/fedora-coreos-tracker
+Discuss: https://discussion.fedoraproject.org/tag/coreos
+
+[core@cp0 ~]$ oc get csr
+error: Missing or incomplete configuration info.  Please point to an existing, complete config file:
+
+
+  1. Via the command-line flag --kubeconfig
+  2. Via the KUBECONFIG environment variable
+  3. In your home directory as ~/.kube/config
+
+To view or setup config directly use the \'config\' command.
+
+[core@cp0 ~]$ export KUBECONFIG=/etc/kubernetes/kubeconfig
+[core@cp0 ~]$ oc get csr
+error: error loading config file \"/etc/kubernetes/kubeconfig\": open /etc/kubernetes/kubeconfig: permission denied
+
+[core@cp0 ~]$ sudo su -
+[root@cp0 ~]# export KUBECONFIG=/etc/kubernetes/kubeconfig
+[root@cp0 ~]# oc get csr
+NAME        AGE     SIGNERNAME                                    REQUESTOR                                                                   REQUESTEDDURATION   CONDITION
+csr-2skg9   46m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-4fk27   55m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-4x6s7   5m8s    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-5fzkd   20m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-7q747   16m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-d82rh   57s     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-drxmf   31m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-hnt9c   55m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-lj4wk   36m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-sjpvp   20m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-sp9ql   5m12s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-t2dcm   36m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+
+[root@cp0 ~]# oc adm certificate approve csr-2skg9
+Error from server (Forbidden): certificatesigningrequests.certificates.k8s.io \"csr-2skg9\" is forbidden: User \"system:serviceaccount:openshift-machine-config-operator:node-bootstrapper\" cannot update resource \"certificatesigningrequests/approval\" in API group \"certificates.k8s.io\" at the cluster scope
+[root@cp0 ~]# 
+"
+                        
+

"Donc, bonne nouvelle : les certificats ont bien été créés. Moins bonne nouvelle par contre : l\'usager ""node-bootstrapper"" configuré dans notre kubeconfig n\'a pas les droits requis pour les approuver."

+ +
+ +

"À la recherche des droits"

+
+

"J'ai fait toutes sortes de recherche et tests sur le système dont je vous évite les détails, mais c'est finalement dans une "discussion sur github" que j'ai trouvé ce qui m'a débloqué : comment assembler un kubeconfig avec les droits requis pour approuver les certificats."

+ +

"En résumé :" +

    +
  • On prend une coquille de kubeconfig
  • +
  • "On y fait pointer la configuration des certificats vers les fichiers qui sont montés dans le "kube-apiserver" qui roule présentement"
  • +
  • "On utilise l'option "--insecure-skip-certificate" pour nos appels à "oc.
  • +
+

+ +
"[root@cp0 ~]# cp /etc/kubernetes/static-pod-resources/kube-apiserver-certs/configmaps/control-plane-node-kubeconfig/kubeconfig /tmp/kubeconfig
+[root@cp0 ~]# vi /tmp/kubeconfig
+
+--> Mettre à jour les 3 lignes de configuration de certificats avec les valeurs suivantes puis sauvegarder :
+
+certificate-authority: /etc/kubernetes/static-pod-resources/kube-apiserver-certs/configmaps/trusted-ca-bundle/ca-bundle.crt
+client-certificate: /etc/kubernetes/static-pod-resources/kube-apiserver-certs/secrets/control-plane-node-admin-client-cert-key/tls.crt
+client-key: /etc/kubernetes/static-pod-resources/kube-apiserver-certs/secrets/control-plane-node-admin-client-cert-key/tls.key
+
+[root@cp0 ~]# export KUBECONFIG=/tmp/kubeconfig
+[root@cp0 ~]# oc --insecure-skip-tls-verify whoami
+system:control-plane-node-admin
+
+[root@cp0 ~]# Yippie!!
+"
+                        
+

"Got it! :) On est maintenant "control-plane-node-admin", on va avoir les droits requis."

+
+ +

"Approuvons ces certificats - deuxième prise!"

+
+

"Let's do it again!"

+
"[root@cp0 ~]# oc get csr --insecure-skip-tls-verify
+NAME        AGE    SIGNERNAME                                    REQUESTOR                                                                   REQUESTEDDURATION   CONDITION
+csr-2skg9   73m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-4fk27   82m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-4x6s7   32m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-5458k   17m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-5fzkd   48m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-75jkd   107s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-7q747   43m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-8gwz5   17m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-d82rh   28m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-drxmf   58m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-f6jz6   13m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-hnt9c   82m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-lj4wk   63m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-sjpvp   48m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-sp9ql   32m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-t2dcm   63m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+csr-wbkdg   111s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Pending
+
+[root@cp0 ~]# oc get csr -o name --insecure-skip-tls-verify | xargs oc adm certificate approve --insecure-skip-tls-verify
+certificatesigningrequest.certificates.k8s.io/csr-2skg9 approved
+certificatesigningrequest.certificates.k8s.io/csr-4fk27 approved
+certificatesigningrequest.certificates.k8s.io/csr-4x6s7 approved
+certificatesigningrequest.certificates.k8s.io/csr-5458k approved
+certificatesigningrequest.certificates.k8s.io/csr-5fzkd approved
+certificatesigningrequest.certificates.k8s.io/csr-75jkd approved
+certificatesigningrequest.certificates.k8s.io/csr-7q747 approved
+certificatesigningrequest.certificates.k8s.io/csr-8gwz5 approved
+certificatesigningrequest.certificates.k8s.io/csr-d82rh approved
+certificatesigningrequest.certificates.k8s.io/csr-drxmf approved
+certificatesigningrequest.certificates.k8s.io/csr-f6jz6 approved
+certificatesigningrequest.certificates.k8s.io/csr-hnt9c approved
+certificatesigningrequest.certificates.k8s.io/csr-lj4wk approved
+certificatesigningrequest.certificates.k8s.io/csr-sjpvp approved
+certificatesigningrequest.certificates.k8s.io/csr-sp9ql approved
+certificatesigningrequest.certificates.k8s.io/csr-t2dcm approved
+certificatesigningrequest.certificates.k8s.io/csr-wbkdg approved
+
+[root@cp0 ~]# oc get csr --insecure-skip-tls-verify
+csr-4x6s7   36m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-5458k   21m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-5fzkd   52m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-75jkd   5m45s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-7q747   47m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-8gwz5   21m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-d82rh   32m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-drxmf   62m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-f6jz6   17m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-hnt9c   86m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-lj4wk   67m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-sjpvp   52m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-sp9ql   36m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-t2dcm   67m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-wbkdg   5m49s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+"
+                        
+

"Looking really good, ça sent bon tout ça! Laissons quelques minutes et on essaie la console."

+

"[A few minutes later] Ouin ben ça ne fonctionne toujours pas... Regardons un peu sous le hood."

+ +
"[root@cp0 ~]# oc get csr --insecure-skip-tls-verify
+csr-4mpl7   10s     kubernetes.io/kube-apiserver-client           system:node:cp1                                                             24h                 Pending
+csr-4x6s7   36m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-5458k   21m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-5fzkd   52m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-75jkd   5m45s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-7q747   47m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-8gwz5   21m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-d82rh   32m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-drxmf   62m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-f6jz6   17m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-hnt9c   86m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-lj4wk   67m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-rh54p   32s     kubernetes.io/kubelet-serving                 system:node:cp2                                                                           Pending
+csr-sjpvp   52m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-sp9ql   36m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-t2dcm   67m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-wbkdg   5m49s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper                 Approved,Issued
+csr-xqn2m   31s     kubernetes.io/kube-apiserver-client           system:node:cp1                                                             24h                 Pending
+"
+                        
+

"Surprise, de nouveaux certificats à approuver! On répète la même poutine, attend quelques minutes, toujours non-fonctionnel... On vérifie encore une fois, surprise, un 3ième lot de certificats à approuver. Rince, repeat, patiente quelques minutes, essaie la console : ça marche! Woohoo!! Je récupère mon token de la console, "oc login ..." , tout fonctionne, problem solved! Ce fut un intéressant samedi matin :)"

+
+ +

"Conclusion"

+
+

"La petite aventure a été un peu plus compliquée que ce à quoi je m'attendais, mais finalement, j'ai mon cluster et j'ai appris. Pour utiliser la bonne vieille expression, je vais me coucher un peu moins niaiseux ce soir! :)"

+

"En espérant que cet article puisse être utile à quelqu'un. Sur ce, à la prochaine!"

+
+ +

"Références"

+ +
+ +
+

"Article écrit par : "

+

"Sylvain Tremblay"

+

+ + + "LinkedIn" + +

+

+ + "mail" + "stremblay@nationtech.io" + +

+

"Sylvain, co-fondateur et CTO de NationTech, a \"été choisi\" par l'informatique dès l'age de 9 ans. Passionné par tous les aspects du domaine, après quelques années de [gwbasic, turbo pascal, c, c++, asm] c'est particulièrement l'administration de systèmes et les infrastructures complexes qui ont captivé son intérêt. Nous sommes ici à l'époque des BBS, bien avant qu'internet soit disponible aux clients résidentiels."

+

"Il a été parmi les premiers utilisateurs de Linux dès 1992, a ensuite travaillé sur différents systèmes Unix commerciaux à l'occasion de ses années de travail chez Bombardier [Transports, Aerospace], Ferrari F1 ou Hyundai-Kia Motor Corporation. "

+

"Il est ensuite revenu dans le monde de l'informatique pure après un séjour en tant qu'informaticien au millieu d'ingénieurs mécaniques. C'est alors qu'il occupe le poste de programmeur pendant plusieurs années, puis d'architecte cloud, spécialiste en infrastructures distribuée, etc. En plus de son travail dans le domaine, il s'affaire dans ses passes temps à des expérimentations poussées avec les technologies de l'heure soit OpenStack dans les années 2010 puis Kubernetes dont il développe une maîtrise avancée."

+

"Effectivement, pour Sylvain toutes les raisons sont bonnes pour acheter un serveur à ajouter dans son homelab ou une imprimante 3D de plus et il les utilise à bon escient, toujours fidèle à sa grande générosité."

+
+
+
+