Documentation développeur Deploiement Migration cinestats → cineges-go
August 17, 2026 at 11:17 PMMigration du projet cinestats vers le mono-dépôt cineges-go
Table of Contents
Résumé
Le projet GitLab hickson/cinestats produisait 19 artefacts :
cinestats-api— l’API REST des statistiques (Postgrespgstats+ JasperReports) ;- 18 consumers Kafka
k2b-*(« kafka to base ») qui alimentent la base de stats à partir des topicscineges.*.data.
Le code a été recopié dans le mono-dépôt hickson/cineges-go, mais la chaîne de
build ne l’avait pas suivi : seul cinestats-api y était réellement industrialisé.
Les 18 k2b-* n’avaient ni stage Dockerfile, ni cible bake, ni job chartify — leur
code était donc mort dans le mono-dépôt, et les environnements continuaient à tourner
sur les images de l’ancien dépôt.
Depuis cineges-go v1.11.16, les 19 artefacts sont produits par le mono-dépôt.
Où sont les artefacts
Ancien dépôt cinestats |
Mono-dépôt cineges-go |
|
|---|---|---|
| Images | dkr.isi.nc/hickson/cinestats/<app> |
docker.isi.nc/hickson/<app> |
| Charts | <app> versions v1.0.x |
<app> versions v1.11.x |
| Chart de base API | @isi/go-api-chart v1.2 |
cmd/.helm/base-api (local) |
| Chart de base job | templates autonomes par app | cmd/.helm/base-job (local) |
Les deux lignées cohabitent sous le même nom de chart au chartmuseum. Passer de
v1.0.x à v1.11.x n’est donc pas un simple bump de version : c’est un changement de
chart sous le même nom de release.
Points d’attention lors d’une bascule
Consumer group Kafka
Les anciens charts k2b-* dérivaient OVERRIDE_KAFKA_CONSUMER_GROUP du fullname
du chart. Les nouveaux le figent explicitement dans
cmd/k2b-<x>/helm/values.yaml, à la même valeur (k2b-<x>). Ne pas modifier cette
valeur : un changement de groupe fait repartir le consumer du début du topic.
Pour la même raison, nameOverride et fullnameOverride sont figés à k2b-<x> :
sans eux, base-job nommerait les objets k2b-<x>-job.
Sélecteur de Deployment
Le sélecteur d’un Deployment est immuable.
-
k2b-*: l’ancien chart utilisait déjàapp.kubernetes.io/name+app.kubernetes.io/instance, identiques à ceux debase-job→helm upgradefonctionne en place. -
cinestats-api: l’ancien chart@isi/go-api-chartutilisaitapp: api+release: cinestats-api, incompatible avecbase-api. Il faut supprimer le Deployment avant l’upgrade :kubectl -n <ns> delete deployment cinestats-apiLe Service et le ServiceAccount, eux, sont réadoptés par le nouveau chart.
Services k2b-*
Les anciens charts créaient un Service ClusterIP:80 par consumer, alors qu’aucun
k2b-* n’écoute sur le réseau. base-job n’en crée pas : Helm supprime ces 18
Services au premier upgrade. C’est voulu.
Registre
Les images passent de dkr.isi.nc (pull anonyme) à docker.isi.nc, qui exige un
imagePullSecrets. Les charts posent isi-registry-credz par défaut ; ce secret doit
exister dans le namespace cible.
Variables d’environnement
Le fichier de values de déploiement partagé par les 18 consumers ne peut pas utiliser
la clé env : Helm remplace les listes au lieu de les fusionner, ce qui écraserait
le consumer group porté par le chart. base-job expose donc extraEnv, concaténé
après env, réservé au fichier de déploiement (Postgres, réglages par environnement).
État par environnement
Qualif central — basculé
deploy-qualif-central déploie les 19 artefacts depuis cineges-go
(VERSION_CINESTATS_API et VERSION_CINESTATS_JOBS = $VERSION_BACKEND_GO).
k2b-zone-projection, qui n’avait jamais eu de job de déploiement, en a un désormais.
Production — non basculée
prod-central tourne toujours sur les images de l’ancien dépôt :
| Composant | Version |
|---|---|
cinestats-api |
v1.0.0 |
k2b-* (11 consumers) |
v1.0.0 |
k2b-pos-session, k2b-show-state, k2b-stats-movie, k2b-stats-sales-session, k2b-user |
v1.0.1 |
k2b-pos-basket |
v1.0.5-fix.2 |
prod-cinecity et prod-kone n’hébergent aucun composant cinestats.
prod-tahiti n’a pas pu être vérifié (API server injoignable au moment de l’audit).
La bascule prod suppose de mettre à jour deploy-prod-central de la même façon que
deploy-qualif-central, en appliquant les points d’attention ci-dessus (notamment la
suppression préalable du Deployment cinestats-api). Elle n’est pas faite et
demande une fenêtre validée.
Archivage de hickson/cinestats
Le projet est archivé (lecture seule). Cela ne supprime ni les images du registre ni les charts du chartmuseum : la prod continue de tourner sur les artefacts déjà publiés tant qu’elle n’est pas basculée.
Deux tags v1.0.6 et v1.0.7 (10/06/2026) existent dans Git mais n’ont jamais été
publiés : leur pipeline bake échouait sur isi.nc/go/odoorpc@v1.0.1, absent du
proxy Athens. Leurs deux correctifs fonctionnels ont été reportés dans cineges-go :
- soft-delete du film sur tombstone dans
k2b-movie(le hard-delete cassaitfk_show_movieet faisait bouclerk2b-show) ; Net.ReadTimeoutsarama à 90 s et arrêt dupanicsur erreur de consumer.
Les répertoires cmd/e2b-show et cmd/poc-viper de l’ancien dépôt sont des POC morts
et n’ont pas été migrés.
Bug connu, non corrigé
Plusieurs consumers (k2b-show, k2b-pos-basket, k2b-pos-session, k2b-product,
k2b-stats-movie, k2b-stats-sales-session) peuvent tomber en CrashLoopBackOff sur :
panic: uuid: Parse(): invalid UUID length: 0
Cause : un message ES dont l’id est vide, passé à uuid.MustParse dans
pkg/stats/mapping. Le comportement est identique dans l’ancien dépôt et dans
cineges-go : la migration ne le corrige pas.