chore: update
This commit is contained in:
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user