Releases: univ-lehavre/cluster
Releases · univ-lehavre/cluster
Release list
v2.45.0
2.45.0 (2026-06-26)
Features
- build: premier pas GitOps build — digest exposé, déploiement par @sha256 (ADR 0095 §1.a) (3dd359c)
- ci: garde-fou parité graphe↔ansible (adr 0096, détecteur « marquez oublié ») (3961d51)
- nestor: graphe de dépendances Python figé + check de parité Ansible (refonte lots 2-5) (742699c)
- nestor: porte le graphe de dépendances en python (parité bash) (3a4d282)
Bug Fixes
- bootstrap: durcir l'anti-affinité CoreDNS via kubectl patch (lib python absente du nœud) (fa17a5c)
- nestor: compute_plan_state partagée preview/next/up — fin de la divergence (étape 1) (9f60891)
- nestor: compute_plan_state partagée preview/next/up — fin de la divergence (refonte étape 1) (4384fda)
Refactor
- nestor: dérive le signal de santé du graphe (source unique) (f9d1fac)
- nestor: remplace les ponts subprocess rollback-lib par le graphe python (85da6da)
Documentation
- adr: 0096 et 0097 Accepted ; plan refonte nestor Actif (5d088a5)
- adr: 0096 et 0097 Accepted ; plan refonte nestor Actif (4c68ab8)
- adr: refonte nestor — graphe Python figé (0096) + moteur de chemin (0097) + plan (7377753)
- adr: refonte nestor — graphe Python figé (0096) + moteur de chemin (0097) + plan (b22bf41)
- plan: refonte nestor — coche étape 1 + lots 2-5 (mergés #508/#509) (647b1a9)
- plan: refonte nestor — coche étape 1 + lots 2-5 (mergés) (09f67b1)
- readme: régénère le bloc « le dépôt en chiffres » (34 scénarios, ADR 0060) (f817822)
v2.44.0
2.44.0 (2026-06-25)
Features
- argocd: app-of-apps + ADR 0095 build événementiel in-cluster + seed prod (e82c087)
- argocd: app-of-apps pour instancier les applications applicatives (ADR 0094) (92573c0)
- bootstrap: seed prod app-of-apps + déploiement citation (ADR 0094/0095) (21f986d)
- mailpit: expose l'UI en nodeport (puits alertmanager prod) (9923fc3)
- mailpit: expose l'UI en nodeport + reflète l'usage prod (puits alertmanager) (77e2da0)
Bug Fixes
- bench: scénario 33 source lib.sh en chemin absolu (cwd-indépendant) (175a784)
- bench: scénario 33 source lib.sh en chemin absolu (cwd-indépendant) (ae51075)
- cnpg: applique les networkpolicies du ns postgres (#485) (bdd58c8)
- cnpg: applique les networkpolicies du ns postgres (#485) (4d0bc56)
- docs: lien app-of-apps en URL site /cluster/ (passe orphans ET starlight) (1055beb)
- etcd-backup: retire le {{ … }} d'un commentaire qui cassait le rendu jinja (1f376ec)
- etcd-backup: retire le {{ … }} d'un commentaire qui cassait le rendu jinja (23f6aed)
- k8s-init: durcit l'anti-affinité coredns en required (#487) (38ba539)
- k8s-init: durcit l'anti-affinité coredns en required (#487) (4d8487d)
- kubeadm: expose les métriques control-plane sur 0.0.0.0 (#490) (4e9468c)
- monitoring: restreint le clusterrole grafana aux configmaps (#484) (6c70fce)
- monitoring: restreint le clusterrole grafana aux configmaps (#484) (ee7976c)
Documentation
- adr: 0094 dependsOn.codeLocations (dépendances inter-applicatives) (9f7077f)
- adr: 0094 frontière de déploiement applicatif cluster↔atlas (Proposed) (4318abc)
- adr: 0094 frontière de déploiement applicatif cluster↔atlas (Proposed) (d278198)
- adr: 0095 build applicatif événementiel in-cluster (Proposed) (7df8c05)
- adr: 0095 écarte explicitement le webhook entrant (pull/Cron assumé) (91a77d3)
- audit: vérification poussée non destructive de la prod dirqual (2026-06-24) (88079e8)
- audit: vérification poussée non destructive de la prod dirqual (2026-06-24) (33c006f)
- plan: cache cnpg achevé — scénario 33 joué au banc (pass) (337acdc)
- plan: cache CNPG achevé — scénario 33 joué au banc (PASS) (585c56e)
- plan: cadrage HA control-plane 3 nœuds (ha-3cp, promotion in-place) (bdd32fe)
- plan: cadrage HA control-plane 3 nœuds + fix scrape kubeadm (#486/#490) (23be8bc)
- plan: mise en œuvre du build événementiel GitOps (ADR 0095, Brouillon) (cef9917)
- plan: mise en œuvre du build événementiel GitOps (ADR 0095) (d6ee2ac)
- readme: régénère le bloc « le dépôt en chiffres » (14 plans, ADR 0060) (edcc1ff)
- readme: régénère le bloc « le dépôt en chiffres » (94 ADR, ADR 0060) (971f072)
v2.43.0
2.43.0 (2026-06-24)
Features
- ceph: exposer le dashboard mgr en nodeport l4 (adr 0092) (288e640)
- cni: bascule cilium en l4 pur (retrait gateway/lb-ipam, adr 0092) (ec6926b)
- cnpg: base/rôle cache pour le backing service des flux atlas (adr 0093) (d9273ce)
- contract: exposer les UI par exposed:true (nodeport l4, adr 0092) (7d4773f)
- drift: allowlist nodeport du contrat + ancrage check_contract (adr 0092) (4a9e6e0)
- exposition L4 NodePort des UI + portail (ADR 0092, supersede 0071) (29f611b)
- implémentation cache CNPG (base/rôle + contrat + scénario 33) — plan ADR 0093 (d845059)
- platform: retirer le l7 (7 gateway.yaml + cilium-expo + tâche argocd, adr 0092) (a9fa387)
- platform: services nodeport l4 pour les 7 ui vendored (adr 0092) (4944dad)
- portal: câbler portal dans le chemin (phase, graphe atomique, layers, banc.yaml) (3006c45)
- portal: observer le nodeport l4 au lieu du hostname gateway (adr 0092) (e2f7bfd)
- portal: rôle ansible platform-portal (build image + déploiement nodeport) (6b639db)
Bug Fixes
- bench: vm_memory_default à 12 gio (chaîne mlops mono-nœud sature 8 gio) (ad08529)
- docs: retirer le h1 dupliqué des pages astro générées (starlight rend le title) (10e51cb)
- portal: imagepullpolicy always pour le tag mutable :dev (adr 0092) (cb50fd1)
- portal: observer le service nodeport séparé + afficher le login (adr 0092) (ab7f47f)
- titres dupliqués Astro + imagePullPolicy portail + test scheme https (378c9b9)
Documentation
- adr: 0092 exposition UI en hostPort/NodePort L4 (supersede 0071) + plan (7aa094b)
- adr: 0092 exposition UI en hostPort/NodePort L4 (supersede 0071) + plan (da08afa)
- adr: 0093 cache des flux atlas via cloudnative-pg (pas de redis) + plan (404ed9f)
- adr: 0093 cache des flux atlas via CloudNativePG (pas de Redis) + plan (a79541c)
- adr: aligner contrat + adr 0092 + doc sur l4 nodeport observé (adr 0092) (9cf20a9)
- adr: lier le plan dans 0092 (plan-exposition orphelin → atteignable, adr 0029) (2f6a490)
- bloc « le dépôt en chiffres » à 32 scénarios (ajout du 32-portal) (6c9cb49)
- contract: aligner l'accès UI sur l4 nodeport (adr 0092) (c489139)
- contract: dimensionnement des volumes (atlas décide, sc extensibles) (9627f3e)
- netpol: acter l'egress large GDELT/Zenodo (mediawatch, #471) (35b648a)
- netpol: acter l'egress large pour la collecte gdelt/zenodo (#471) (a7a15b9)
- plan: exposition l4 — étapes 1-4 livrées, plan actif (adr 0092) (f5914d5)
v2.42.0
2.42.0 (2026-06-23)
Features
- dagster: dériver pgvector-pg-auth pour les code-locations atlas (2953aef)
- dagster: dériver pgvector-pg-auth pour les code-locations atlas (ac0faab)
- docs: migrer la documentation de VitePress vers Astro Starlight (6145909)
- docs: migrer la documentation VitePress → Astro Starlight (ADR 0089) (f2913b8)
- nestor: champ kubeconfig dans la topologie (adr 0090, étape 1) (7237244)
- nestor: preview lit l'état réel d'un cluster prod (adr 0090) (9081d08)
- nestor: preview lit l'état réel d'un cluster prod (ADR 0090) (d8e220f)
- nestor: stack select complète la topo avec kubeconfig + preview réoriente (adr 0090) (ec38194)
- portal: image, RBAC sans secrets, Gateway hostNetwork (étapes 3-5, adr 0091) (85390a0)
- portal: logique pure de croisement contrat ↔ état (étape 1, adr 0091) (0c893eb)
- portal: logique pure de croisement contrat ↔ état (étape 1, ADR 0091) (6f5517c)
- portal: serveur in-cluster + rendu HTML (étape 2, adr 0091) (5589a6a)
- portal: serveur in-cluster, image, RBAC sans secrets, Gateway (étapes 2-5, ADR 0091) (f8d00e7)
Bug Fixes
- build-images: installer nerdctl-full épinglé sur le nœud builder (199e290)
- build-images: installer nerdctl-full épinglé sur le nœud builder (311b6d8)
- dataops: workspace Dagster vise la code-location par nom court (gRPC FQDN timeout) (6510827)
- dataops: workspace Dagster vise toy-codeloc par nom court (gRPC FQDN timeout) (a6d5fec)
- marquez: connexion CNPG par nom court (fqdn pg timeoute en prod) (d2f6c7c)
- marquez: connexion CNPG par nom court (fqdn pg timeoute en prod) (44dc381)
- nestor+e2e: next cohérent avec preview (réel prime) + émetteur buildé sur x86 (ed0480e)
- nestor: preview+next résolvent le kubeconfig prod ; gitea-init via localhost (b18d282)
- nestor: stack select prod ne bloque plus + écrit le champ kubeconfig (62887f8)
- prod: garantir le restart containerd après config registry + os-upgrade serial (ae0c058)
- prod: garantir le restart containerd après config registry + os-upgrade serial (fd40a39)
Documentation
- adr: 0091 portail d'accès aux UI + plan (proposed) (30e49dc)
- adr: 0091 portail d'accès aux UI + plan (proposed) (05379f4)
- adr: adr 0090 — confirmer le kubeconfig prod + rapatriement assisté (c53785b)
- adr: ADR 0090 — confirmer le kubeconfig prod + rapatriement assisté (5b63c2f)
- adr: adr 0090 + plan — nestor lit l'état réel d'un cluster prod (0fda406)
- adr: ADR 0090 + plan — nestor lit l'état réel d'un cluster prod (baed263)
- adr: promouvoir 0091 portail Accepted + plan Actif (démarrage étape 1) (c23ea44)
- audit: ajouter les URL de preuve à l'answer-sheet badge (e9db612)
- audit: answer-sheet OpenSSF Best Practices Badge (passing) (1d3d04c)
- audit: answer-sheet OpenSSF Best Practices Badge (passing) (872cb34)
- audit: faisabilité silver/gold du badge — décision : rester à passing (5ad7c99)
- bloc « le dépôt en chiffres » à 11 plans (résidu de plan supprimé) (b2c77db)
- composants: rattacher le portail (README atteignable, adr 0029) (bff2c11)
- contract: mettre le contrat à jour des écarts de l'audit cluster↔atlas (184a419)
- contract: mettre le contrat à jour des écarts de l'audit cluster↔atlas (a62e3bc)
- dns: documenter le piège FQDN→nom court (contrat + guide-dev + drift L58) (202864b)
- encart anglais (readme/contributing/security) — critère english du badge (49479c3)
- régénérer le bloc « le dépôt en chiffres » (adr 0090 accepted, plan actif) (92d14c0)
- réintégrer badge Best Practices + Trademarks→Conformité + encart anglais + audit silver/gold (1827d84)
- réintégrer le badge Best Practices (validé) + section Conformité (3910cc6)
v2.41.1
v2.41.0
2.41.0 (2026-06-21)
Features
- ci: gate --stats-check anti doc-rot du bloc « le dépôt en chiffres » (fb4af78)
- docs: registre des drifts navigable généré depuis le yaml (+ gate) (b06f7c0)
Bug Fixes
- docs: corriger le doc-rot (banc vagrant, compteurs figés, faits périmés) (50364a6)
- docs: neutraliser les url citées dans la page registre-drifts (lychee) (a5f3f61)
Documentation
- adr: promouvoir 6 adr livrés en accepted + reclasser diátaxis (5db7582)
- améliorer navigabilité et pédagogie (suite audit doc) (63e7cb8)
- audit documentation 194 .md + corrections doc-rot + gate stats (537e9ab)
- audit: passage daté — audit documentation 194 .md (2026-06-20) (5041e42)
- finaliser l'audit doc (navigabilité, pédagogie, registre drifts navigable) (4310964)
v2.40.0
2.40.0 (2026-06-20)
Features
- scorecard: SAST, fuzzing, signed-releases + README GitHub pur (1bcbc21)
Documentation
- audit: évaluation kubescape — ne pas câbler (redondant trivy/kyverno) (78d8c45)
- audit: évaluation kubescape — ne pas câbler (redondant) (c78628d)
- audit: tracer packaging n/a assumé (nestor pilote le dépôt, #366) (94d1cea)
- readme: readme github pur, retirer best practices, home dans docs/index (fc1533b)
- readme: retirer la rangée de badges du haut (doublon avec la section) (5d0555e)
- readme: retirer la rangée de badges du haut (doublon) (92ffcbb)
- readme: sections présentées pour les familles de badges (48fe2fd)
- readme: sections présentées pour les familles de badges (fd4a927)
- scorecard: tracer packaging n/a + lire branch-protection (#366) (72489ea)
v2.39.0
2.39.0 (2026-06-19)
Features
- banc: scénario 31 — vérifier le contrat d'interface cluster→atlas (a12ef7b)
- banc: scénario 31 — vérifier le contrat d'interface cluster→atlas (5b65d1d)
- dataops: code-location jouet gRPC déployée par gitops (adr 0086) (3dadf26)
- dataops: code-location jouet gRPC déployée par gitops (ADR 0086) (807b30f)
- dataops: toy_drift logge un drift_score jouet dans mlflow (adr 0086, étape 1) (6268e92)
- dataops: toy_drift logge un drift_score jouet dans MLflow (ADR 0086, étape 1) (5e51c8b)
- dataops: toy_drift utilise le vrai evidently (EmbeddingsDriftMetric) — #428 (10d0eeb)
- dataops: toy_drift utilise le vrai Evidently (EmbeddingsDriftMetric) — closes #428 (50804e6)
- redcap: ajouter l'app redcap (php/apache + mariadb autonome) (3c36304)
- redcap: ajouter l'app redcap (php/apache + mariadb autonome) (8f523d7)
- redcap: mode désinstallation (redcap_state=absent), pvc conservé par défaut (53d5c43)
- redcap: mode désinstallation (redcap_state=absent), pvc conservé par défaut (c556912)
Bug Fixes
- banc: ajouter phase_mlflow (montage layers échouait en rc=127) (713cde4)
- banc: ajouter phase_mlflow (montage layers échouait en rc=127) (ee33e05)
- banc: rendre vm_cpus surchargeable (défaut 4, débloque la chaîne mlops) (60c5158)
- banc: rendre vm_cpus surchargeable (défaut 4, débloque la chaîne mlops) (1df7aec)
- banc: run-all refuse un VAR=val placé après le script (échec silencieux) (3a2c33b)
- banc: run-all refuse un VAR=val placé après le script (échec silencieux) (bbc07e3)
- banc: scénario 01 skip neutre sur banc sans ceph (local-path) (5dffc64)
- banc: scénario 01 skip neutre sur banc sans ceph (local-path) (d58ff39)
- dataops: code-location jouet visible au banc — reload workspace + image fraîche (adr 0086) (3ffd3bd)
- dataops: code-location jouet visible au banc — reload workspace + image fraîche (ADR 0086) (05dd0d1)
- dataops: injecter MLFLOW/OPENLINEAGE dans le pod de run (tag dagster-k8s/config) (c6789e0)
- dataops: injecter MLFLOW/OPENLINEAGE dans le pod de run (tag dagster-k8s/config) (6952b31)
- dataops: run via code-location jouet — dagster-postgres + hook kubectl valide (04b2fa6)
- dataops: run via code-location jouet — dagster-postgres dans l'image + hook kubectl valide (d01f623)
- épreuves: enregistrer le scénario 31 au catalogue (test python vert) (51132e1)
- épreuves: enregistrer le scénario 31 au catalogue (test python vert) (3d74d25)
- trivy: allowlister code-location.yaml (KSV-0014/0118, remplace l'ancien job jouet) (61be173)
- trivy: durcir le hook reload (KSV-0014/0118) — securityContext pod + rootfs RO (3751050)
Documentation
- adr: 0085 — preuves applicatives sur local-path, ceph sur installation seule (bb2b01d)
- adr: 0085 — preuves applicatives sur local-path, ceph sur installation seule (c08b40b)
- contrat: injecter mlflow/openlineage dans les pods de run (tag dagster-k8s/config) (5c676f5)
- contrat: injecter mlflow/openlineage dans les pods de run (tag dagster-k8s/config) — #427 (92d2ef6)
- raccorder la doc aux ajouts récents (redcap, code-location jouet, scénarios 28-31) (4baaf5d)
- raccorder la doc aux ajouts récents (REDCap, code-location jouet, scénarios 28-31) (95eef1d)
v2.38.0
2.38.0 (2026-06-18)
Features
- mlflow: épopée MLflow complète — ADR + briques + contrat (#341-346) (058309b)
- mlflow: layer autonome (next/up/remove/discover) + backing S3 dérivé (2a227aa)
- mlflow: manifestes platform/mlflow + ancrages CNPG/AppProject/netpol (#342-344) (3c98acc)
- mlflow: rôle Ansible platform-mlflow + câblage couche dataops (#345) (e6ba108)
Bug Fixes
- bench: disque VM banc à 40 GiB par défaut (#391) (d2d478a)
- bench: disque VM par défaut à 40 GiB (les deux backends, #391) (5d2d157)
- dagster: egress dagster→mlflow + exclure redcap du scan VitePress (#407) (ff67b91)
- mlflow: image maison (officielle + psycopg2) — corrige le crashloopbackoff (10faf38)
- mlflow: image maison psycopg2 + egress dagster→mlflow (prod-ready) (aa4840a)
- mlflow: liens ADR, securityContext durci, trivy KSV-0014 acté (ci verte) (418eff3)
- nestor:
envne pose pas le kubeconfig banc pour une stack prod (ADR 0084) (2e5f778) - nestor: gater les sondes de lecture par target_kind (ADR 0084) (f599ce8)
- nestor: gater les sondes de lecture par target_kind (preview/next, ADR 0084) (0b59b4b)
- nestor: prod — sauter
up, gater les avertissements banc (ADR 0084) (591e3c4) - next: ancrer le run de référence sur la stack, pas un fallback global (0baf804)
- trivy: allowlister DS-0002 pour platform/mlflow/image/Dockerfile (root, comme dagster/marquez) (1a99057)
Refactor
- plan: layers source unique de l'ordre, presets en alias (ADR 0083) (00cd9e7)
- plan: layers source unique de l'ordre, presets en alias (ADR 0083) (80accf0)
Documentation
v2.37.0
2.37.0 (2026-06-17)
Features
- cluster: fonction shell (pose KUBECONFIG), -h groupé, next confirme (086fe04)
- cluster: outil déclaratif — next/remove/refresh, menu de couches, santé, isolation banc↔prod durcie (22a4202)
- discover: lire le node-side (CRI/CNI/disques) via node_exec (ADR 0081 étape 3) (ce46b59)
- discover: lire le node-side (CRI/CNI/disques/durcissement) via node_exec (ADR 0081 étape 3) (cf1f086)
- discover: rapatrier le kubeconfig depuis le control-plane (ADR 0081 étape 2) (d10517c)
- discover: rapatrier le kubeconfig depuis le control-plane (ADR 0081 étape 2) (26dd908)
- gouvernance: notations & normes externes — doctrine de badges (ADR 0080) (2a29bb4)
- next: gate de santé active après montage — attendre le dernier maillon Ready (#355) (0786064)
- next: gate de santé active après montage (#355) (b971997)
- next: menu des couches montables — choix d'ordre (deps réelles vs convention) (83f5bff)
- node-exec: brique node_exec + résolution inventaire (ADR 0081 étape 1) (ba29791)
- node-exec: brique node_exec + résolution inventaire (ADR 0081 étape 1) (fd7f27e)
- ownership: graphe d'appartenance + remove --dry-run (découverte, ADR 0079 / #372) (81e4990)
- ownership: graphe d'appartenance + remove --dry-run découverte (slice 1 de #372) (26c4014)
- refresh: --prune — retirer les couches déclarées mais absentes du réel (#357) (ace71c3)
- refresh: --prune (retirer les couches absentes du réel) (#357) (4f8978b)
- refresh: cluster refresh — réaligner topology.yaml sur le réel voulu (ADR 0076) (0a0af05)
- remove: cluster remove — supprimer une couche et sa clôture (inverse de next, ADR 0054) (db00592)
- remove: découverte par DÉFAUT + finalize des ns wedgés (ADR 0079 étape A) (b253508)
- remove: rollback par découverte d'appartenance — défaut, finalize ns (ADR 0079, #372 étape A) (38508f6)
- remove: rollback par découverte d'appartenance (--discover, ADR 0079 slice 2) (9524d21)
- test: nestor test scenarios --run + signaux de santé des couches Ceph (#227) (2203089)
- test: nestor test scenarios --run + signaux de santé des couches Ceph (#227) (00dccf7)
- topology: select pose KUBECONFIG (eval), messages simples, expo effective (5fdbd2a)
Bug Fixes
- ci,preview: verdir la CI (test banc-dépendant, lychee 0.23, MD028) + warning preview shell≠banc (7656c15)
- cluster: robustesse KUBECONFIG — /dev/null remplaçable, select non destructif, auto-env (6ae4229)
- gates: until '.resources | default([])' — ne pas crasher si k8s_info échoue (e553a69)
- gates: until '.resources | default([])' — ne pas crasher si le k8s_info échoue (1c96fd5)
- isolation: garde audit-log sur les plays hosts:cloud + test anti-régression (part code de #359) (a0e6aff)
- isolation: garde audit-log sur tous les plays 'hosts: cloud' + test anti-régression (#359) (e3b4649)
- isolation: next valide l'inventaire Ansible avant montage — faille banc→prod (ADR 0053) (ca9c4ae)
- isolation: next vise l'inventaire de la STACK active (banc Lima ≠ prod, ADR 0053) (e360233)
- lint: lychee.toml — include_fragments en enum "none" (compat lychee ≥ 0.24) (b9a9cab)
- metrology: émettre par_noeud avec accolades sans espaces (yamllint refuse
{ ... }) (82201f9) - metrology: par_noeud sans espaces dans les accolades (yamllint refuse
{ ... }) (ebabf14) - next: déléguer toute phase sans play unitaire à run-phases.sh (gitops-seed) (33c9947)
- next: déléguer toute phase sans play unitaire à run-phases.sh (gitops-seed) (f9f7ca6)
- next: gitops-seed vu fait + next cohérent avec preview (signal + observé) (522947b)
- next: signal de santé dataops — webserver, pas un deployment
dagsterinexistant (5cdfbde) - next: signal de santé dataops — webserver, pas un deployment dagster inexistant (7f52a4b)
- node-exec: 3 correctifs révélés par la preuve banc (ADR 0081 étapes 1+3) (b2e993d)
- node-exec: 3 correctifs révélés par la preuve banc (ADR 0081 étapes 1+3) (1245d64)
- plan: profil
storemonte le stockage objet (datalake/RGW) — cheminlayersdérivé (9a53d15) - plan: profil store monte le stockage objet (datalake/RGW) — chemin layers dérivé (0dd6c7f)
- preview,next: couche « saine » = dernier maillon READY, pas namespace présent (b565f92)
- preview: le réel contredit le socle — plus de « ✓ créer les VMs à-jour » sans VM (c0d1606)
- preview: le réel CONTREDIT le socle — plus de « ✓ créer les VMs à-jour » sans VM (c528b19)
- preview: signaler un backend orphelin (réel ≠ déclaré) — drift rook-ceph (#356) (d618bde)
- preview: signaler un backend orphelin réel ≠ déclaré (#356) (c643018)
- profile: loki_s3_backing/endpoint manqu...