Migration — transition from PodSecurityPolicy to Pod Security Standards.
1# Phase 1: Audit mode2apiVersion: v13kind: Namespace4metadata:5 name: production6 labels:7 pod-security.kubernetes.io/audit: restricted8 pod-security.kubernetes.io/audit-version: latest9---10# Phase 2: Warn mode11apiVersion: v112kind: Namespace13metadata:14 name: production15 labels:16 pod-security.kubernetes.io/warn: restricted17 pod-security.kubernetes.io/warn-version: latest18 pod-security.kubernetes.io/audit: restricted19 pod-security.kubernetes.io/audit-version: latest20---21# Phase 3: Enforce mode22apiVersion: v123kind: Namespace24metadata:25 name: production26 labels:27 pod-security.kubernetes.io/enforce: restricted28 pod-security.kubernetes.io/enforce-version: latest29 pod-security.kubernetes.io/warn: restricted30 pod-security.kubernetes.io/warn-version: latest31 pod-security.kubernetes.io/audit: restricted32 pod-security.kubernetes.io/audit-version: latest
1# Step 1: Remove PodSecurityPolicy2kubectl delete podsecuritypolicy privileged3kubectl delete podsecuritypolicy restricted45# Step 2: Add audit labels6kubectl label namespace production pod-security.kubernetes.io/audit=restricted --overwrite7kubectl label namespace production pod-security.kubernetes.io/audit-version=latest --overwrite89# Step 3: Monitor audit events10kubectl get events -n production --sort-by=.lastTimestamp | grep -i audit1112# Step 4: Add warn labels13kubectl label namespace production pod-security.kubernetes.io/warn=restricted --overwrite14kubectl label namespace production pod-security.kubernetes.io/warn-version=latest --overwrite1516# Step 5: Fix violations17kubectl apply -f pod.yaml 2>&1 | grep Warning1819# Step 6: Add enforce labels20kubectl label namespace production pod-security.kubernetes.io/enforce=restricted --overwrite21kubectl label namespace production pod-security.kubernetes.io/enforce-version=latest --overwrite2223# Step 7: Verify enforcement24kubectl apply -f non-compliant.yaml # Should fail
Migration Steps:
Best Practices: