K8s OPA Gatekeeper未拦截DELETE操作问题求助
问题原因与解决方案
核心原因
你的K8sDenyAll Constraint未指定需要匹配的操作类型,Gatekeeper默认仅对CREATE和UPDATE类型的Admission请求应用策略,DELETE请求不在默认匹配范围内,因此删除Namespace、Pod等资源的操作不会被拦截。
修复方案
修改Constraint的spec.match字段,添加operations列表,明确包含CREATE、UPDATE、DELETE三种操作类型:
apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sDenyAll metadata: name: deny-all-namespaces spec: match: kinds: - apiGroups: [""] kinds: ["Namespace"] # 添加以下操作匹配规则 operations: ["CREATE", "UPDATE", "DELETE"]
验证方法
- 应用修改后的Constraint:
kubectl apply -f <your-constraint-file.yaml>
- 尝试删除Namespace:
kubectl delete ns test2
此时删除操作会被Gatekeeper拦截,符合预期。
对于Pod等其他资源的同名Constraint,只需同样添加operations字段即可实现全操作拦截。
内容的提问来源于stack exchange,提问作者Phil Chae
相关产品推荐
相关产品推荐

