【问题标题】:how to retrieve namespace value from the resoucequota object from data.inventory如何从 data.inventory 的 resoucequota 对象中检索命名空间值
【发布时间】:2021-07-05 11:38:55
【问题描述】:

在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"

无法从资源配额缓存对象中检索命名空间。

【问题讨论】:

    标签: open-policy-agent rego


    【解决方案1】:

    ResourceQuotas 是namespaced,因此您需要使用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”的对象生成一个迭代器。

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

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多