1

在gatekeeper 模板中,尝试从resoucequota 对象(使用sync.yaml 复制)中获取命名空间。

目前尝试使用以下方式获取:

existingrqs := {e | e := data.inventory.cluster["v1beta1"]["ResourceQuota"].metadata.namespace}

sync.yaml使用:

apiVersion: config.gatekeeper.sh/v1alpha1
kind: Config
metadata:
  name: config
  namespace: "gatekeeper-system"
spec:
  sync:
    syncOnly:
      - group: ""
        version: "v1beta1"
        kind: "Pod"
      - group: ""
        version: "v1beta1"
        kind: "Namespace"
      - group: ""
        version: "v1beta1"
        kind: "ResourceQuota"

无法从 resoucequota 缓存对象中检索命名空间。

4

1 回答 1

0

ResourceQuotas 是命名空间的,所以你需要使用data.inventory.namespace而不是data.inventory.cluster. 我找不到关于引用约束的官方文档,所以我最好的猜测是你需要类似的东西:

existingrqs := {e | e := data.inventory.namespace[_]["v1"]["ResourceQuota"][_].metadata.namespace}

的格式data.inventory.namespace为:

data.inventory.namespace[$NAMESPACE][$APIVERSION][$KIND][$NAME]

通过使用_而不是提供显式字符串,这应该为每个命名空间、API 版本“v1”的对象、种类“ResourceQuota”的对象生成一个迭代器。

我没有一个很好的设置来测试这个,但它应该让你更接近你想要的。

于 2021-05-12T18:39:19.913 回答