Aide-mémoire CKAD
exemple YAML NetworkPolicy k8s
Une NetworkPolicy est deny-by-default pour les pods qu’elle sélectionne, pour les policyTypes listés.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-ingress
namespace: app
spec:
podSelector: {}
policyTypes:
- Ingress
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend
namespace: app
spec:
podSelector:
matchLabels:
app: api
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-dns
namespace: app
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- protocol: UDP
port: 53
Champs
- podSelector
- {} = tous les Pods de ce namespace. C’est à qui s’applique la policy.
- policyTypes
- Ne lister que ce que vous visez. Egress ici + seulement DNS = le reste de l’egress est coupé.
- from
- Les pairs sont en OU. podSelector + namespaceSelector sur le même pair sont en ET.
- ingress
- Pas d’ingress: + policyTypes Ingress = tout l’entrant est refusé pour les Pods ciblés.
Pièges
- podSelector: {} = tous les Pods de ce namespace. ingress: [] vide refuse tout l’ingress.
- Les pairs dans from: sont en OU. podSelector et namespaceSelector sur le même pair sont en ET.
- Lister Egress et n’autoriser que le DNS coupe tout le reste. Ne mettre dans policyTypes que ce que vous visez.
Doc officielle Network Policies