【发布时间】:2021-07-18 14:16:39
【问题描述】:
我有约束模板 yaml 代码策略来防止所有命名空间被删除。
现在我想创建一个策略来防止只删除非空命名空间,即包含 pod、ingress、pv、pvc、secret、service 等资源。
因此,空的命名空间应该可以被删除,但包含内容的命名空间不应该被删除。
对此有何建议?
模板:
apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8snamespacecannotbedeleted
spec:
crd:
spec:
names:
kind: K8sNamespaceCannotBeDeleted
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package kubernetes.admission
violation[{"msg": msg}] {
input.review.kind.kind == "Namespace"
input.review.operation == "DELETE"
msg := "[OPA] Namespace deletions are not permitted"
}
约束:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sNamespaceCannotBeDeleted
metadata:
name: namespace-cannot-be-deleted
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Namespace"]
【问题讨论】:
标签: github azure-devops yaml devops open-policy-agent