No description
  • Go Template 100%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-30 16:10:26 +02:00
apps shutdown temporaneo di memos 2026-07-30 16:10:26 +02:00
charts init 2026-07-28 17:47:45 +02:00
flux-sync aggiunta di un po di componenti 2026-07-29 15:41:21 +02:00
infrastructure aggiunta di un po di componenti 2026-07-29 15:41:21 +02:00
.gitignore update keys 2026-07-28 21:25:25 +02:00
.sops.yaml update keys 2026-07-28 21:25:25 +02:00
0-flux-capacitor.yaml update test 2026-07-28 18:08:53 +02:00
0-flux-system.yaml init 2026-07-28 17:47:45 +02:00
1-source-git.yaml init 2026-07-28 17:47:45 +02:00
2-root-kustomization.yaml update test 2026-07-28 18:08:53 +02:00
README.md aggiornato immich db 2026-07-29 17:17:50 +02:00

void-cloud-v4 — infrastruttura GitOps con Flux

Migrazione del vecchio ambiente (helmfile, apply manuale) a Flux CD. Ogni release helmfile e' diventata una HelmRelease; i values sono inlinati nel manifest (stesso pattern del vaultwarden-release.yaml originale).

Layout

0-flux-system.yaml           # bootstrap dei controller Flux
0-flux-capacitor.yaml        # UI Capacitor
1-source-git.yaml            # GitRepository: questo repo
2-root-kustomization.yaml    # punta a ./flux-sync

flux-sync/                   # una Kustomization Flux per layer, con dependsOn
infrastructure/
  controllers/               # HelmRepository + HelmRelease: openebs-zfs-localpv,
                             #   cert-manager, k8tz, csi-driver-smb
  configs/                   # StorageClass, middleware traefik, DaemonSet
                             #   vm.max_map_count
apps/
  core/ core-db/ private/ private-db/ hlcs/
charts/generic/              # ex default-deploy, identico byte per byte
scripts/encrypt-secrets.sh
secrets-plain/               # segreti IN CHIARO, gitignored

Ordine di riconciliazione:

infra-controllers -> infra-configs -> apps-core-db    -> apps-core                                    -> apps-private-db -> apps-private
                                   -> apps-hlcs

Segreti

Nulla di sensibile e' committato in chiaro. La migrazione ha estratto ogni segreto in secrets-plain/ (in .gitignore), da revisionare e cifrare:

$EDITOR secrets-plain/...        # rileggi i valori
./scripts/encrypt-secrets.sh     # sops -e secrets-plain/<ns>/x.yaml -> apps/<ns>/x.yaml
git add apps/ && git diff --cached   # verifica che ci sia solo ENC[...]

Finche' non lo fai, apps/*/kustomization.yaml referenzia Secret non ancora presenti e le Kustomization Flux restano in errore. E' voluto: meglio rompere che committare password.

Il cluster ha bisogno della chiave privata age (fuori da git):

kubectl -n flux-system create secret generic sops-age --from-file=age.agekey=<chiave>

Cosa e' stato spostato fuori dai values

Origine Segreto Destinazione
env/*.env variabili d'ambiente Secret per app, envFrom: secretRef
dex-values.yml password postgres, clientSecret, staticClients Secret dex-config, montato via additionalVolumes
gatus-config.jsonnet token telegram e matrix Secret gatus-config, montato via additionalVolumes
immich-app.yaml DB_PASSWORD in envConfigMap Secret immich
matrix-tuwunel-values.yaml TUWUNEL_REGISTRATION_TOKEN Secret tuwunel
wg-access-server.yaml clientSecret OIDC, adminPassword, privateKey Secret wg-access-server-values, via HelmRelease.spec.valuesFrom