From 7d11c97a5f403a200526f7b336a3aaa7c6a21078 Mon Sep 17 00:00:00 2001 From: Mathieu LAUDE Date: Tue, 9 Jul 2024 17:29:05 +0200 Subject: [PATCH] feat: :thread: split argo applications: one per repo --- .gitignore | 1 + charts/dso-env/Chart.yaml | 6 +++++- charts/dso-env/README.md | 7 ++++--- charts/dso-env/templates/application-app.yaml | 21 ++++++++++++------- charts/dso-env/templates/application-env.yaml | 4 +++- charts/dso-env/templates/project-app.yaml | 4 +++- charts/dso-env/templates/project-env.yaml | 4 +++- charts/dso-env/values.yaml | 9 +++++--- 8 files changed, 39 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index d109dd8..75b01ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ # Helm chart automated files /charts/*/charts +/charts/*/Chart.lock diff --git a/charts/dso-env/Chart.yaml b/charts/dso-env/Chart.yaml index b0e6196..b3f85c5 100644 --- a/charts/dso-env/Chart.yaml +++ b/charts/dso-env/Chart.yaml @@ -2,5 +2,9 @@ apiVersion: v2 name: dso-env description: Creates argocd Project and Applications to deploy DSO project repositories. type: application -version: 1.1.1 +version: 1.2.0 appVersion: 1.0.0 +maintainers: + - name: this-is-tobi + email: thibault.colin@interieur.gouv.fr + url: https://this-is-tobi.com diff --git a/charts/dso-env/README.md b/charts/dso-env/README.md index 5e69f7e..1d37586 100644 --- a/charts/dso-env/README.md +++ b/charts/dso-env/README.md @@ -8,17 +8,18 @@ Creates argocd Project and Applications to deploy DSO project repositories. | Key | Type | Default | Description | |-----|------|---------|-------------| -| application.destination.name | string | `""` | Nom du cluster applicatif cible | +| application.destination.name | string | `"dest"` | Nom du cluster applicatif cible | | application.destination.namespace | string | `"app1"` | Nom du namespace applicatif cible | -| application.repositories | list | `[{"path":".","repoURL":"https://gitlab.com/projects/org/demo/quota-explorer.git","targetRevision":"main"}]` | Liste des dépôts à déployer | +| application.repositories | list | `[{"name":"quota-explorer","path":".","repoURL":"https://gitlab.com/projects/org/demo/quota-explorer.git","targetRevision":"main"}]` | Liste des dépôts à déployer | | application.sourceReposPrefix | string | `"https://gitlab.com/projects/org/demo"` | Préfixe des dépôts autorisés | | argocd.namespace | string | `"argocd"` | Namespace de création des objets ArgoCD | | argocd.nsChartVersion | string | `"1.0.0"` | Version du Chart dso-ns à utiliser | | argocd.project | string | `"project1"` | Préfixe des projets ArgoCD à créer | -| commonLabels | object | `{}` | Labels appliqués sur les différents objets | +| commonLabels | string | `""` | Labels appliqués sur les différents objets | | environment.roGroup | string | `"/project/environment/RO"` | Nom du groupe à autoriser en lecture seule sur les objets applicatifs (-app) déployés par ArgoCD | | environment.rwGroup | string | `"/project/environment/RW"` | Nom du groupe à autoriser en lecture/écriture sur les objets applicatifs (-app) déployés par ArgoCD | | environment.valueFilePath | string | `"values.yaml"` | Chemin du fichier à utiliser lors de la récupération des values | +| environment.valueFileRepository | string | `"https://gitlab.com/projects/Infra/org/demo/infra.git"` | URL du repo avec le fichier values à utiliser pour cet environnement | | environment.valueFileRevision | string | `"HEAD"` | Revision Git à utiliser lors de la récupération des values | ---------------------------------------------- diff --git a/charts/dso-env/templates/application-app.yaml b/charts/dso-env/templates/application-app.yaml index a4c7cda..87d31b6 100644 --- a/charts/dso-env/templates/application-app.yaml +++ b/charts/dso-env/templates/application-app.yaml @@ -1,20 +1,27 @@ +{{- range .Values.application.repositories }} --- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: - name: {{ .Values.argocd.project }}-app - namespace: {{ .Values.argocd.namespace }} + name: {{ $.Values.argocd.project }}-app-{{ .name }} + namespace: {{ $.Values.argocd.namespace }} labels: app.kubernetes.io/managed-by: dso-console - {{- .Values.commonLabels | toYaml | nindent 4 }} + {{- if $.Values.commonLabels -}} + {{- $.Values.commonLabels | toYaml | nindent 4 }} + {{- end }} spec: - project: {{ .Values.argocd.project }}-app - sources: {{ .Values.application.repositories | toYaml | nindent 4 }} + project: {{ $.Values.argocd.project }}-app + source: + repoURL: {{ .repoURL }} + targetRevision: {{ .targetRevision }} + path: {{ .path }} destination: - name: {{ .Values.application.destination.name }} - namespace: {{ .Values.application.destination.namespace }} + name: {{ $.Values.application.destination.name }} + namespace: {{ $.Values.application.destination.namespace }} syncPolicy: automated: prune: true selfHeal: true allowEmpty: true +{{- end }} diff --git a/charts/dso-env/templates/application-env.yaml b/charts/dso-env/templates/application-env.yaml index b2c2f81..b201780 100644 --- a/charts/dso-env/templates/application-env.yaml +++ b/charts/dso-env/templates/application-env.yaml @@ -6,7 +6,9 @@ metadata: namespace: {{ .Values.argocd.namespace }} labels: app.kubernetes.io/managed-by: dso-console - {{- .Values.commonLabels | toYaml | nindent 4 }} + {{- if $.Values.commonLabels -}} + {{- $.Values.commonLabels | toYaml | nindent 4 }} + {{- end }} spec: project: {{ .Values.argocd.project }}-env sources: diff --git a/charts/dso-env/templates/project-app.yaml b/charts/dso-env/templates/project-app.yaml index b7c15db..0959514 100644 --- a/charts/dso-env/templates/project-app.yaml +++ b/charts/dso-env/templates/project-app.yaml @@ -3,7 +3,9 @@ kind: AppProject metadata: labels: app.kubernetes.io/managed-by: dso-console - {{- .Values.commonLabels | toYaml | nindent 4 }} + {{- if $.Values.commonLabels -}} + {{- $.Values.commonLabels | toYaml | nindent 4 }} + {{- end }} name: {{ .Values.argocd.project }}-app namespace: {{ .Values.argocd.namespace }} spec: diff --git a/charts/dso-env/templates/project-env.yaml b/charts/dso-env/templates/project-env.yaml index 21c4fd0..ffec521 100644 --- a/charts/dso-env/templates/project-env.yaml +++ b/charts/dso-env/templates/project-env.yaml @@ -3,7 +3,9 @@ kind: AppProject metadata: labels: app.kubernetes.io/managed-by: dso-console - {{- .Values.commonLabels | toYaml | nindent 4 }} + {{- if $.Values.commonLabels -}} + {{- $.Values.commonLabels | toYaml | nindent 4 }} + {{- end }} name: {{ .Values.argocd.project }}-env namespace: {{ .Values.argocd.namespace }} spec: diff --git a/charts/dso-env/values.yaml b/charts/dso-env/values.yaml index e4a973c..104f5ab 100644 --- a/charts/dso-env/values.yaml +++ b/charts/dso-env/values.yaml @@ -1,5 +1,5 @@ # -- Labels appliqués sur les différents objets -commonLabels: {} +commonLabels: "" argocd: # -- Préfixe des projets ArgoCD à créer project: project1 @@ -8,6 +8,8 @@ argocd: # -- Version du Chart dso-ns à utiliser nsChartVersion: 1.0.0 environment: + # -- URL du repo avec le fichier values à utiliser pour cet environnement + valueFileRepository: https://gitlab.com/projects/Infra/org/demo/infra.git # -- Revision Git à utiliser lors de la récupération des values valueFileRevision: HEAD # -- Chemin du fichier à utiliser lors de la récupération des values @@ -21,11 +23,12 @@ application: sourceReposPrefix: https://gitlab.com/projects/org/demo destination: # -- Nom du cluster applicatif cible - name: "" + name: dest # -- Nom du namespace applicatif cible namespace: app1 # -- Liste des dépôts à déployer repositories: - - repoURL: https://gitlab.com/projects/org/demo/quota-explorer.git + - name: quota-explorer + repoURL: https://gitlab.com/projects/org/demo/quota-explorer.git targetRevision: main path: '.'