apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: require-resource-limits spec: validationFailureAction: Audit # Enforce once the backlog is drained background: true rules: - name: limits-are-set match: any: [{ resources: { kinds: [Pod] } }] validate: message: "CPU and memory limits are required." pattern: spec: containers: - resources: { limits: { memory: "?*", cpu: "?*" } }
Policy-as-code across the EKS estate
The hard part wasn’t writing rules, it was landing them on clusters that already had years of running workloads. Every policy shipped in Audit first, so Policy Reporter could show teams their own violations before anything started failing admission — then flipped to Enforce per namespace as each backlog cleared. What a “safe” deployment means stopped being tribal knowledge and became a rule set in git.
Platform