From 73bf7d1170e6932c2746e90493a2b71e69640221 Mon Sep 17 00:00:00 2001 From: Gabriel Radureau Date: Sat, 25 Jul 2026 10:47:34 +0200 Subject: [PATCH] =?UTF-8?q?fix(argocd):=20url-shortener=20enfin=20syncable?= =?UTF-8?q?=20=E2=80=94=20ignorer=20le=20volumeName=20=C3=A9pingl=C3=A9=20?= =?UTF-8?q?de=20son=20PVC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L'app url-shortener était en SyncError permanent : son PVC live porte un spec.volumeName épinglé (rebind du volume Longhorn après le drill coupure de courant) absent du chart ; chaque sync tentait donc de le vider, refus API (spec immuable après création), échec en boucle malgré automated+selfHeal. - apps.yaml : passthrough générique ignoreDifferences + syncOptions par app. - values.yaml : url-shortener ignore /spec/volumeName du PVC, avec RespectIgnoreDifferences=true pour que l'apply réinjecte la valeur live au lieu de la vider (le cas d'usage documenté d'ArgoCD pour les champs immuables). Rendu helm vérifié : seule l'Application url-shortener change. Co-Authored-By: Claude Fable 5 --- argocd/templates/apps.yaml | 11 +++++++++++ argocd/values.yaml | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/argocd/templates/apps.yaml b/argocd/templates/apps.yaml index a71ee05..1c595c7 100644 --- a/argocd/templates/apps.yaml +++ b/argocd/templates/apps.yaml @@ -24,6 +24,14 @@ spec: destination: server: https://kubernetes.default.svc namespace: {{ $ns }} + {{- /* Champs à exclure du diff (ex: /spec/volumeName d'un PVC rebindé à la + main après le drill coupure de courant — immuable côté API). À coupler + avec la syncOption RespectIgnoreDifferences=true pour que l'apply + réinjecte la valeur live au lieu de tenter de la vider. */}} + {{- with $app_attr.ignoreDifferences }} + ignoreDifferences: + {{- toYaml . | nindent 4 }} + {{- end }} syncPolicy: {{- if $app_attr.syncPolicy }} {{- toYaml $app_attr.syncPolicy | nindent 4 }} @@ -34,6 +42,9 @@ spec: {{- end }} syncOptions: - CreateNamespace=true + {{- range $app_attr.syncOptions }} + - {{ . }} + {{- end }} {{- /* Non-prod environments (ADR-0002 elision rule): one extra Application per env under `.envs`. Each renders the SAME repo + chart, overlaid with diff --git a/argocd/values.yaml b/argocd/values.yaml index 60fab3c..bbdc5d5 100644 --- a/argocd/values.yaml +++ b/argocd/values.yaml @@ -4,6 +4,15 @@ gitea_applications: url-shortener: annotations: {} + # Le PVC live a un spec.volumeName épinglé (rebind du volume Longhorn) que + # le chart ne déclare pas : sans ceci, chaque sync tente de le vider et + # l'API le refuse (spec immuable) → SyncError permanent. + ignoreDifferences: + - kind: PersistentVolumeClaim + jsonPointers: + - /spec/volumeName + syncOptions: + - RespectIgnoreDifferences=true tools: annotations: {} syncPolicy: