No description
- Go Template 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| apps | ||
| charts | ||
| flux-sync | ||
| infrastructure | ||
| .gitignore | ||
| .sops.yaml | ||
| 0-flux-capacitor.yaml | ||
| 0-flux-system.yaml | ||
| 1-source-git.yaml | ||
| 2-root-kustomization.yaml | ||
| README.md | ||
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 |