Commit Graph
28 Commits
Author SHA1 Message Date
arcodange d93fa9c8ae feat(argocd) — enregistrer kadans-admin, compagnon sans état de kadans
Backoffice de modération (ADR kadans-dossier 0018) : le squelette et son
chart sont mergés côté kadans-admin depuis le 03/08, mais rien ne
l'enregistrait ici — aucune Application, rien de vivant sur le cluster.

Compagnon « sans état » au sens du runbook (09-service-compagnon.md),
même motif que kadans-jobs : ni base ni secret Vault propres, juste le
namespace partagé `kadans`. La sécurité applicative vit côté kadans-api
(requireAdmin, KADANS_ADMIN_EMAILS — déjà câblé là-bas).

⚠ Merger APRÈS que l'image kadans-admin:latest existe réellement sur le
registre (kadans-admin!wire-deploiement, le workflow qui la construit) —
sinon la première synchro tire dans le vide (ImagePullBackOff), le même
piège déjà payé une fois côté kadans-jobs.
2026-08-11 17:16:13 +02:00
arcodangeandClaude Fable 5 73bf7d1170 fix(argocd): url-shortener enfin syncable — ignorer le volumeName épinglé de son PVC
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 <[email protected]>
2026-07-25 10:47:34 +02:00
arcodangeandClaude Opus 4.8 1365c95c2f feat(argocd) — enregistre kadans-api (app-of-apps, namespace kadans)
Ajoute l'API cœur au registre gitea_applications. ArgoCD crée une Application
`kadans-api` (source arcodange/kadans-api, path chart, targetRevision HEAD), sync
automatique prune+selfHeal, image-updater par digest sur :latest — même moule que
les autres apps.

Namespace `kadans` (comme kadans-jobs) : kadans-api partage le stack Vault/DB déjà
en place pour l'app front (VaultAuth `kadans`, rôle Postgres dynamique
postgres/creds/kadans, ServiceAccount `kadans`, policy KV `kadans`). Aucun nouvel
iac/DB/Vault à provisionner.

À merger APRÈS le fix chart kadans-api (VaultAuth + hôte DB pgbouncer.tools) pour
que la première synchro ArgoCD parte d'un chart correct.

helm template rend l'Application kadans-api → repoURL arcodange/kadans-api,
namespace kadans, CreateNamespace, digest.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_013ws8L74dVZmp97Wu36fm8j
2026-07-24 10:28:28 +02:00
arcodange 1f22669ac6 feat(argocd): apps override destination namespace; kadans-jobs → kadans (#38)
Co-authored-by: Gabriel Radureau <[email protected]>
Co-committed-by: Gabriel Radureau <[email protected]>
2026-07-20 10:23:34 +02:00
arcodange 34c1ad697f fix(argocd): let the image-updater trust the lab CA — the last blocker to rollouts (#36)
Co-authored-by: Gabriel Radureau <[email protected]>
Co-committed-by: Gabriel Radureau <[email protected]>
2026-07-20 09:11:25 +02:00
arcodangeandClaude Opus 4.8 d3261bc8c4 feat(argocd): enroll kadans-jobs — the Kadans analysis-jobs façade (#35)
kadans-jobs is the tier-2 (homelab, 24/7) piece of the Kadans topology: a job
queue plus the store of published analysis results, decoupling the product from
the volatile Mac worker.

org: arcodange — the repo does not live under the default arcodange-org.
Digest-based image-updater annotations follow the fleet pattern; the
cluster-wide ImageUpdater CR (namePattern "*", useAnnotations) picks them up,
so there is no per-app CR to maintain. The image is already in the registry.

No postgres/iac/terraform.tfvars entry, on purpose: the façade runs a memory
store in v0, so it needs neither a database nor Vault. That is the runbook's
degraded mode — the DB, the Vault JWT role and the app's own iac/ will land
together with the Postgres store.

Chart realigned on the runbook conventions first, in kadans-jobs#1.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_013ws8L74dVZmp97Wu36fm8j
Co-authored-by: Gabriel Radureau <[email protected]>
Co-committed-by: Gabriel Radureau <[email protected]>
2026-07-20 09:07:44 +02:00
arcodangeandClaude Fable 5 a4be009e3e chore(argocd): retire le bloc repoServer mort des values image-updater
Ajouté par bda53f29 pour « monter les credentials dans le repo-server »,
mais ces values sont passées au chart argocd-image-updater (HelmChart
kube-system) qui n'a pas de clé repoServer : no-op intégral. Le vrai
repo-server ArgoCD est déployé par l'addon k3s et n'a pas besoin de ce
montage — les credentials repo passent par les secrets étiquetés
argocd.argoproj.io/secret-type.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-16 20:37:58 +02:00
arcodange bda53f299a fix: monter credentials dans repo-server 2026-07-13 19:15:40 +02:00
arcodange 1d477a4c6e fix: corriger organisation kadans vers arcodange 2026-07-13 19:05:05 +02:00
arcodange 3f1df060a2 feat: ajouter kadans à argocd et postgres 2026-07-13 18:55:04 +02:00
arcodange 5a80ec32ae Merge pull request 'feat(argocd): onboard prospection dans l'app-of-apps' (#20) from arcodange/onboard-prospection into main 2026-07-08 17:02:39 +02:00
arcodangeandClaude Opus 4.8 5957439f9f feat(argocd): onboard prospection dans l'app-of-apps
Ajoute prospection à gitea_applications → ArgoCD Application (repoURL
arcodange-org/prospection, path chart, namespace prospection) + image-updater
(digest) sur gitea.arcodange.lab/arcodange-org/prospection:latest.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-08 15:38:45 +02:00
arcodangeandClaude Opus 4.7 90498e4f55 feat(multi-env): Phase D4 — register erp-sandbox ArgoCD Application
ADR-0002 Phase D, final step. Adds `envs: { sandbox: {} }` to the erp entry
in argocd/values.yaml, so the Phase B per-env loop in templates/apps.yaml
renders an extra Application "erp-sandbox":
  - source: same erp repo + chart, overlaid with values.yaml + values-sandbox.yaml
  - destination namespace: erp-sandbox (CreateNamespace=true)
  - syncPolicy: automated prune + selfHeal (default)

GitOps activation: on merge to main, the factory app-of-apps re-renders and
ArgoCD creates the erp-sandbox Application, which deploys the Dolibarr chart
into the erp-sandbox namespace. The pod's VSO reads the Vault paths created in
D2/D3 (auth/kubernetes/role/erp-sandbox, postgres/creds/erp-sandbox,
kvv2/erp-sandbox/config) and connects to the erp-sandbox DB created in D1.

Render verified: the only diff vs main is the added erp-sandbox Application;
prod erp + all other apps render byte-identical.

No DNS/TLS change needed (Phase E): *.arcodange.lab is a wildcard in Pi-hole
(CoreDNS forwards to it) and cert-manager holds a *.arcodange.lab wildcard set
as Traefik's default TLS — so erp-sandbox.arcodange.lab resolves + gets HTTPS
automatically once the ingress is up.

Completes Phase D. D1=factory#17, D2=tools#3, D3=erp#12 (all merged).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-06-28 18:35:48 +02:00
arcodange 3fb7544351 argocd: rename homelab-gateway → telegram-gateway
Aligns with the upstream repo rename
(arcodange/homelab-gateway → arcodange/telegram-gateway) so the name
matches the public URL tg.arcodange.fr and Arcodange's naming
conventions.
2026-05-09 12:35:37 +02:00
arcodange 5038956332 argocd: add homelab-gateway application
Adds the homelab-gateway Argo CD Application pointing at
arcodange/homelab-gateway (user space, like dance-lessons-coach).

Image Updater watches gitea.arcodange.lab/arcodange/homelab-gateway:latest
with digest strategy.

Phase 1 of the Telegram webhook gateway — a long-running pod that
receives webhooks (no more polling) and routes per-bot to handler
implementations. Initial bot: @arcodange_factory_bot, slug=factory,
echo handler.
2026-05-09 12:25:30 +02:00
arcodange a3526e51f8 Merge remote-tracking branch 'origin/main' 2026-05-06 12:58:01 +02:00
arcodangeandClaude Opus 4.7 f114d7e6f0 feat(argocd): allow per-app syncPolicy override in values.yaml
The apps template hardcoded automated{prune,selfHeal} for every app. Some
apps (e.g. tools, where Vault unseal is manual) need a custom syncPolicy
without selfHeal. Read $app_attr.syncPolicy when set, fall back to the
existing automated default otherwise. Use the override on `tools` to keep
the existing behavior explicit.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-06 12:55:49 +02:00
arcodange 0ce004cc6a 🤖 ci(argocd): enroll dance-lessons-coach + per-app org override in apps template (#1)
Co-authored-by: Gabriel Radureau <[email protected]>
Co-committed-by: Gabriel Radureau <[email protected]>
2026-05-06 08:01:50 +02:00
arcodange 5b3c896a25 use self signed cert for internal domain arcodange.lab 2025-12-31 17:38:04 +01:00
arcodange 74b8676244 auto upgrade webapp image 2025-12-23 14:20:56 +01:00
arcodange 83410d9eb1 set cms application argo image updater strategy 2025-10-09 16:12:31 +02:00
arcodange fa5bc7e30e deploy argocd image updater 2025-10-09 15:01:05 +02:00
arcodange c19cf7eced register cms argo application 2025-09-09 09:04:18 +02:00
arcodange 66e9ec5091 ERP: declare argocd app and postgresql database 2024-11-04 12:58:49 +01:00
arcodange 5beaee60ac argocd: add webapp app 2024-09-29 17:55:19 +02:00
arcodange aa127b53ec reference tool repo 2024-08-29 14:42:20 +02:00
arcodange 955006dd5d changed app path from argocd to chart 2024-08-27 10:14:33 +02:00
arcodange 3b4140a0c1 deploy argo cd 2024-08-21 18:46:41 +02:00