Files
omnex/deploy/chart-gestion/network-policy/templates/networkpolicy.yaml
T
Nuxgrid dce80908e3
ci-api / test (push) Successful in 24m53s
chore: update
2026-07-31 13:25:03 +02:00

107 lines
3.3 KiB
YAML

# -------------------------------------------------------------------
# 1. Deny-by-default : sans règle explicite plus bas, AUCUN trafic entrant
# ni sortant n'est autorisé pour les pods de ce namespace. C'est ce qui
# empêche par défaut toute communication vers un autre namespace de démo
# et vers l'API Kubernetes.
# -------------------------------------------------------------------
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
---
# -------------------------------------------------------------------
# 2. Trafic intra-démo : frontend <-> backend <-> postgresql/redis, dans
# CE namespace uniquement (le podSelector du namespaceSelector par défaut
# de Kubernetes limite déjà à ce namespace : pas de namespaceSelector ici
# équivaut à "même namespace").
# -------------------------------------------------------------------
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-intra-namespace
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector: {}
egress:
- to:
- podSelector: {}
---
# -------------------------------------------------------------------
# 3. Ingress externe autorisé : uniquement depuis le Traefik partagé
# (aucune autre démo, aucun autre client, ne peut ouvrir de connexion
# directe vers les pods de cette démo).
# -------------------------------------------------------------------
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-ingress-from-traefik
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: {{ .Values.traefikNamespace }}
---
# -------------------------------------------------------------------
# 4. DNS uniquement vers kube-system, port 53. C'est la SEULE ouverture vers
# kube-system : aucun accès à autre chose dans ce namespace, et l'API
# server (kubernetes.default.svc, namespace "default") n'est jamais
# autorisé nulle part dans ce chart -> bloqué par le deny-by-default.
# -------------------------------------------------------------------
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-egress-dns
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: {{ .Values.kubeSystemNamespace }}
ports:
- protocol: UDP
port: 53
- protocol: TCP
port: 53
---
# -------------------------------------------------------------------
# 5. Internet public sortant (webhooks Telegram/NowPayments, GPS TomTom...),
# en excluant les plages privées : ça couvre par construction l'IP de
# l'API server et celles des autres namespaces, sans avoir besoin de la
# connaître explicitement.
# -------------------------------------------------------------------
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-egress-internet
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
{{- toYaml .Values.blockedEgressCIDRs | nindent 14 }}