chore: update

This commit is contained in:
Xor290
2026-08-16 20:01:14 +02:00
parent d8794358c5
commit d23d2cbe37
17 changed files with 530 additions and 126 deletions
+86
View File
@@ -0,0 +1,86 @@
# Isolation réseau du namespace velero — deny-by-default + allowlist, adaptée
# aux flux réels de Velero :
# - Ingress : AUCUN. Personne n'a besoin d'ouvrir une connexion vers les
# pods Velero (le CLI "velero backup/restore" parle à l'API server, pas
# directement aux pods) ; le node-agent (File System Backup) lit les
# données des volumes via hostPath sur le nœud, pas par le réseau.
# - Egress : API server (CRD Backup/Restore/Schedule + lecture des Secrets
# à sauvegarder), DNS, et le endpoint S3/RustFS/MinIO configuré dans
# values.yaml.
#
# ⚠️ AVANT D'APPLIQUER : remplacer CHANGE_ME_apiserver_ip et
# CHANGE_ME_s3_endpoint_ip par les IP réelles (API server : voir
# deploy/cert-manager/networkpolicy.yml ; endpoint S3 : IP de votre instance
# RustFS/MinIO, celle configurée dans s3Url de values.yaml). Une mauvaise
# valeur ne casse rien d'immédiat (les démos continuent de tourner) mais fait
# silencieusement échouer TOUTES les sauvegardes — vérifiez après application
# avec `velero backup create test-netpol --wait` puis `velero backup describe
# test-netpol` (statut Completed attendu).
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: velero
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-egress-dns
namespace: velero
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
ports:
- protocol: UDP
port: 53
- protocol: TCP
port: 53
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-egress-apiserver
namespace: velero
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: CHANGE_ME_apiserver_ip/32
ports:
- protocol: TCP
port: 6443
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-egress-s3-storage
namespace: velero
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: CHANGE_ME_s3_endpoint_ip/32
ports:
- protocol: TCP
port: 443
+21 -13
View File
@@ -27,6 +27,19 @@
# -f deploy/velero/values.yaml
# kubectl apply -f deploy/velero/schedule.yml
#
# 5. Sécurité du bucket — à vérifier CÔTÉ RustFS/MinIO (rien de tout ça ne
# se configure depuis ce repo) : chaque sauvegarde contient les Secrets
# K8s en clair (mots de passe postgres/redis, JWT, tokens Telegram...)
# de toutes les démos.
# - Chiffrement at-rest activé sur le bucket/disque côté RustFS/MinIO
# (indépendant du header SSE ci-dessous, qui ne fait que le demander
# au serveur).
# - Clé d'accès dédiée à ce bucket UNIQUEMENT (voir étape 1) — jamais la
# clé d'admin du cluster de stockage.
# - Versioning ou object-lock (WORM) activé si le fournisseur le
# supporte : sans ça, une clé compromise peut aussi supprimer/écraser
# l'historique des sauvegardes, pas seulement les données live.
#
# Pourquoi File System Backup (kopia) plutôt que des snapshots CSI Longhorn :
# ça fonctionne indépendamment du provisioner de stockage (pas de
# VolumeSnapshotClass/CRD supplémentaire à maintenir), et couvre aussi bien
@@ -61,23 +74,18 @@ configuration:
name: cloud-credentials
key: cloud
config:
# Région du bucket (AWS) ou région arbitraire acceptée par votre
# fournisseur S3-compatible (souvent "us-east-1" par défaut).
region: "CHANGE_ME_region"
# URL du endpoint S3-compatible — uniquement si ce n'est PAS AWS S3
# (ex: "https://s3.fr-par.scw.cloud", "https://s3.eu-de.io.cloud.ovh.net").
# Laisser vide pour AWS S3.
s3Url: ""
# La plupart des fournisseurs S3-compatibles (hors AWS) exigent le
# style "path" plutôt que "virtual-hosted" pour adresser un bucket.
region: "us-east-1"
s3Url: "CHANGE_ME_https://votre-endpoint-rustfs-ou-minio"
s3ForcePathStyle: "true"
insecureSkipTLSVerify: "false"
# Chiffrement côté serveur du contenu des sauvegardes (SSE-S3,
# AES256 géré par le bucket) — RustFS et MinIO le supportent tous
# les deux. Ne dispense pas de vérifier le chiffrement at-rest réel
# du stockage sous-jacent (voir étape 5 ci-dessus).
serverSideEncryption: "AES256"
# Pas de VolumeSnapshotLocation : sauvegarde des volumes via File System
# Backup (node-agent + kopia) plutôt que des snapshots CSI natifs.
volumeSnapshotLocation: []
snapshotsEnabled: false
# Node-agent (DaemonSet) : nécessaire pour sauvegarder le contenu réel des
# PVC (postgres, redis, uploads) via File System Backup.
deployNodeAgent: true