From 4c41c9eab3efde69ef7755f8a5504dc98ca97084 Mon Sep 17 00:00:00 2001 From: Melvin GABALI Date: Mon, 12 Jan 2026 00:51:11 +0100 Subject: [PATCH] add homarr app --- README.md | 2 +- apps/applicationset-homarr.yaml | 55 ++++++++++++++++++++++++ helm/homarr/dev/Chart.lock | 6 +++ helm/homarr/dev/Chart.yaml | 11 +++++ helm/homarr/dev/charts/homarr-8.9.0.tgz | Bin 0 -> 18759 bytes helm/homarr/dev/values.yaml | 18 ++++++++ 6 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 apps/applicationset-homarr.yaml create mode 100644 helm/homarr/dev/Chart.lock create mode 100644 helm/homarr/dev/Chart.yaml create mode 100644 helm/homarr/dev/charts/homarr-8.9.0.tgz create mode 100644 helm/homarr/dev/values.yaml diff --git a/README.md b/README.md index 2dd8187..bee0571 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ cd headlamp/dev Connexion au registre Harbor ``` -helm registry login harbor.example.com --username admin --insecure +helm registry login harbor.gkdomaine.local --username admin --insecure ``` Téléchargement des dépendances diff --git a/apps/applicationset-homarr.yaml b/apps/applicationset-homarr.yaml new file mode 100644 index 0000000..e69d1b5 --- /dev/null +++ b/apps/applicationset-homarr.yaml @@ -0,0 +1,55 @@ +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: homarr-apps + namespace: argocd-ops +spec: + generators: + # Utilise un générateur merge pour combiner : + # 1. Les répertoires Helm existants (détermine quels environnements sont disponibles pour homarr) + # 2. Les fichiers de config partagés (pour obtenir name et server) + - merge: + generators: + # Premier générateur : scanne uniquement les répertoires Helm qui existent pour homarr + - git: + repoURL: https://git.gkdomaine.fr/kubernetes/argocd.git + revision: main + directories: + - path: "helm/homarr/*" + # Deuxième générateur : lit les fichiers de config partagés + # ApplicationSet utilisera seulement les fichiers config.json dont le basename + # correspond à un répertoire Helm trouvé + - git: + repoURL: https://git.gkdomaine.fr/kubernetes/argocd.git + revision: main + files: + - path: "configs/*/config.json" + mergeKeys: + - path.basename + template: + metadata: + # Utilise path.basename qui vient du générateur git (plus fiable que environment du JSON) + name: 'homarr-{{path.basename}}' + spec: + # Utilise path.basename pour le projet (ou {{environment}} si disponible dans le JSON) + project: '{{path.basename}}' + source: + repoURL: '{{repository}}' + targetRevision: '{{targetRevision}}' + # Construit explicitement le chemin Helm à partir du basename + path: '{{helmPath}}/homarr/{{path.basename}}' + helm: + valueFiles: + - values.yaml + destination: + # Les variables {{name}} et {{server}} viennent du fichier config.json + # (deuxième générateur du merge) + name: '{{name}}' + # server: '{{server}}' + namespace: 'homarr-{{path.basename}}' + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true \ No newline at end of file diff --git a/helm/homarr/dev/Chart.lock b/helm/homarr/dev/Chart.lock new file mode 100644 index 0000000..5f21f30 --- /dev/null +++ b/helm/homarr/dev/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: homarr + repository: oci://harbor.gkdomaine.local/charts + version: 8.9.0 +digest: sha256:b6a51de0f481cf50bc40f851412469481c31ca498ad3b463260fde4d5363359e +generated: "2026-01-12T00:49:29.2668062+01:00" diff --git a/helm/homarr/dev/Chart.yaml b/helm/homarr/dev/Chart.yaml new file mode 100644 index 0000000..19da788 --- /dev/null +++ b/helm/homarr/dev/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +name: Homarr-wrapper +description: Wrapper pour Homarr - Environnement DEV +type: application +version: 1.0.0 + +dependencies: + - name: homarr + version: 8.9.0 # Assurez-vous que cette version correspond à celle poussée sur Harbor + # Utilisation de votre registre Harbor interne (OCI) + repository: "oci://harbor.gkdomaine.local/charts" \ No newline at end of file diff --git a/helm/homarr/dev/charts/homarr-8.9.0.tgz b/helm/homarr/dev/charts/homarr-8.9.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..cfb5b7c8c5fde961d9856bb7ff05b8c658a977bc GIT binary patch literal 18759 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