k8s-labs-developer

🧪 Übung: Kubernetes NetworkPolicies verstehen & anwenden


🎯 Ziel der Übung


🧱 Vorbereitung

🔧 1. Namespace anlegen

kubectl create namespace netpol-demo

📦 2. Drei Test-Pods starten

# netpol-pods.yaml
apiVersion: v1
kind: Pod
metadata:
  name: frontend
  namespace: netpol-demo
  labels:
    role: frontend
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sh", "-c", "while true; do sleep 3600; done"]

---
apiVersion: v1
kind: Pod
metadata:
  name: backend
  namespace: netpol-demo
  labels:
    role: backend
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sh", "-c", "while true; do sleep 3600; done"]

---
apiVersion: v1
kind: Pod
metadata:
  name: attacker
  namespace: netpol-demo
  labels:
    role: attacker
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sh", "-c", "while true; do sleep 3600; done"]
kubectl apply -f netpol-pods.yaml

🌐 3. Einfachen Webserver im Backend starten

kubectl exec -n netpol-demo backend -- sh -c "nohup httpd -f -p 80 &"

🧪 Test 1: Kommunikation ist frei

kubectl exec -n netpol-demo frontend -- wget -qO- http://backend
kubectl exec -n netpol-demo attacker -- wget -qO- http://backend

✅ Beide Pods können den backend erreichen.


🛡️ 4. NetworkPolicy: Nur frontend darf backend erreichen

# netpol-allow-frontend.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend
  namespace: netpol-demo
spec:
  podSelector:
    matchLabels:
      role: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 80
  policyTypes:
  - Ingress
kubectl apply -f netpol-allow-frontend.yaml

🧪 Test 2: Zugriff prüfen

# Darf durch (erlaubt in der Policy)
kubectl exec -n netpol-demo frontend -- wget -qO- http://backend

# Darf NICHT durch (nicht erlaubt)
kubectl exec -n netpol-demo attacker -- wget -qO- http://backend

✅ Der frontend kann weiterhin auf backend zugreifen ❌ Der attacker erhält einen Timeout


🧹 Aufräumen

kubectl delete ns netpol-demo