deploy/k8s
Manifests Kubernetes pour le k3s perso d'Arthur.
Stack
postgres.yaml— StatefulSet Postgres 16 + PVC 5 Gi (single-user, faible volume).api.deployment.yaml/pwa.deployment.yaml— services applicatifs.ingress.yaml— routage Traefik TLS versos.arthurbarre.fretapi.os.arthurbarre.fr.migrate.job.yaml— job one-shotdrizzle-ormpour appliquer les migrations.backup.cronjob.yaml—pg_dumpquotidien vers un bucket S3-compatible viarclone.
Ordre d'application initial
kubectl apply -f namespace.yaml
# Copier secrets.template.yaml -> secrets.yaml, remplir, puis :
kubectl apply -f secrets.yaml
kubectl apply -f postgres.yaml
# Attendre que le pod postgres soit Ready.
kubectl apply -f migrate.job.yaml # crée le schéma ordinarthur_os + tables
kubectl apply -f api.deployment.yaml
kubectl apply -f pwa.deployment.yaml
kubectl apply -f ingress.yaml
# Une fois le bucket S3 choisi :
kubectl apply -f backup.cronjob.yaml
Points à confirmer avec Arthur avant déploiement réel
- Cluster issuer cert-manager (
letsencrypt-prod?) - Entrée Traefik (
websecure?) - DNS :
os.arthurbarre.fretapi.os.arthurbarre.frdoivent pointer sur l'IP du load-balancer k3s - StorageClass du PVC postgres (k3s fournit
local-pathpar défaut — OK pour single-node) - Bucket S3-compatible pour les backups (B2 / Scaleway / autre)
- Image registry : Gitea CR (défaut) — credentials pull peuvent nécessiter un
imagePullSecrets - Image pour le
migrate.job: soit re-utiliser l'image API etnode ./node_modules/.../migrate.tsvia tsx, soit builder une image dédiéeordinarthur-os-migratequi embarquepackages/dbcompilé.