防止非空命名空间删除

时间:2021-07-18 14:16:39

标签: github azure-devops yaml devops open-policy-agent

我有约束模板 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"]

0 个答案:

没有答案
相关问题