簡體   English   中英

防止非空命名空間刪除

[英]Prevents unempty namespace deletion

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

這可能有點太晚了,但這就是我解決這個問題的方式:

第一步:用你喜歡的語言創建一個調用 API 服務器的 cronjob,每 x 分鍾運行一次以檢查非空命名空間,向這些命名空間添加注釋,如“can_delete”:“no”

第二步:

編輯您的 rego 代碼並檢查是否有任何名為“can_delete”的注釋,如果有,並將其設置為“no”,防止刪除

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM