chore: update
ci-api / test (push) Successful in 24m6s
ci-web / test (push) Successful in 13m50s

This commit is contained in:
Xor290
2026-09-20 11:50:02 +02:00
parent cb48bb2b70
commit 76b1412968
23 changed files with 2141 additions and 89 deletions
@@ -36,17 +36,21 @@ import (
// HelmProvisioner : implémente Provisioner en appelant l'exécutable Helm.
// Nécessite que helm soit installé dans le container (ex: dans /usr/local/bin/helm).
type HelmProvisioner struct {
cfg *config.Config
k8sClient *kubernetes.Clientset
restConfig *rest.Config // pour l'exec dans les pods (pg_dump/restore)
metricsClient *metricsclient.Clientset // optionnel : nil si metrics-server indisponible
dynamicClient dynamic.Interface // pour les CRD Velero (Schedule/Backup), voir ensureDemoBackupSchedule
chartsDir string // chemin vers le dossier des charts (ex: /charts)
frontendImage string
backendImage string
lbtelegramImage string
baseDomain string
helmPath string // chemin vers l'exécutable helm (default: "helm")
cfg *config.Config
k8sClient *kubernetes.Clientset
restConfig *rest.Config // pour l'exec dans les pods (pg_dump/restore)
metricsClient *metricsclient.Clientset // optionnel : nil si metrics-server indisponible
dynamicClient dynamic.Interface // pour les CRD Velero (Schedule/Backup), voir ensureDemoBackupSchedule
chartsDir string // chemin vers le dossier des charts (ex: /charts)
// vitrineChartsDir : charts des projets vitrine (backend, frontend,
// postgresql, redis, ingressroute), distincts de chartsDir dont les
// charts de mêmes noms déploient le produit des démos.
vitrineChartsDir string
frontendImage string
backendImage string
lbtelegramImage string
baseDomain string
helmPath string // chemin vers l'exécutable helm (default: "helm")
}
// NewHelmProvisioner crée un nouveau provisioner Helm.
@@ -79,17 +83,18 @@ func NewHelmProvisioner(
}
return &HelmProvisioner{
cfg: cfg,
k8sClient: k8sClient,
restConfig: restConfig,
metricsClient: metricsClient,
dynamicClient: dynamicClient,
chartsDir: chartsDir,
frontendImage: cfg.FrontendImage,
backendImage: cfg.BackendImage,
lbtelegramImage: cfg.LBTelegramImage,
baseDomain: cfg.DemoDomain,
helmPath: helmPath,
cfg: cfg,
k8sClient: k8sClient,
restConfig: restConfig,
metricsClient: metricsClient,
dynamicClient: dynamicClient,
chartsDir: chartsDir,
vitrineChartsDir: cfg.VitrineChartsDir,
frontendImage: cfg.FrontendImage,
backendImage: cfg.BackendImage,
lbtelegramImage: cfg.LBTelegramImage,
baseDomain: cfg.DemoDomain,
helmPath: helmPath,
}, nil
}
@@ -843,10 +848,10 @@ func (h *HelmProvisioner) ensureDemoBackupSchedule(namespace string) error {
"spec": map[string]interface{}{
"schedule": "*/15 * * * *",
"template": map[string]interface{}{
"includedNamespaces": []interface{}{namespace},
"includedNamespaces": []interface{}{namespace},
"defaultVolumesToFsBackup": true,
"storageLocation": "default",
"ttl": "24h0m0s",
"storageLocation": "default",
"ttl": "24h0m0s",
},
},
}}
@@ -911,6 +916,13 @@ func (h *HelmProvisioner) deleteDemoBackups(namespace string) error {
// avec des valeurs personnalisées. Release name : "<namespace>-<chartName>".
// Adapté aux charts par démo (namespace toujours neuf).
func (h *HelmProvisioner) installChart(namespace, chartName string, values map[string]interface{}) error {
return h.installChartFrom(h.chartsDir, namespace, chartName, values)
}
// installChartFrom : comme installChart, avec un dossier de charts explicite
// (charts des démos : h.chartsDir ; charts des projets vitrine :
// h.vitrineChartsDir).
func (h *HelmProvisioner) installChartFrom(chartsDir, namespace, chartName string, values map[string]interface{}) error {
release := fmt.Sprintf("%s-%s", namespace, chartName)
valuesFile, cleanup, err := h.writeValuesFile(namespace, chartName, values)
if err != nil {
@@ -921,7 +933,7 @@ func (h *HelmProvisioner) installChart(namespace, chartName string, values map[s
args := []string{
"install",
release,
filepath.Join(h.chartsDir, chartName),
filepath.Join(chartsDir, chartName),
"--namespace", namespace,
"--values", valuesFile,
"--wait",