kubernetes - Kubernetes Open Policy Agent (OPA) If Else
问题描述
我正在尝试在这样的变异规则中实现 if else 子句...
a := {
"alb.ingress.kubernetes.io/healthcheck-path": "/healthz",
"alb.ingress.kubernetes.io/listen-ports": `[{"HTTPS": 443}]`
}
b := {
"alb.ingress.kubernetes.io/target-type": "ip",
"alb.ingress.kubernetes.io/ssl-policy": "ELBSecurityPolicy-TLS-1-2-2017-01"
}
annotations := merge_objects(a,b) {
kinds[input.request.object.kind] == "Ingress"
}
什么是正确的语法?
解决方案
如果您希望注释为空,除非类型匹配Ingress
,您可以执行以下操作,使用else
:
a := {
"alb.ingress.kubernetes.io/healthcheck-path": "/healthz",
"alb.ingress.kubernetes.io/listen-ports": `[{"HTTPS": 443}]`
}
b := {
"alb.ingress.kubernetes.io/target-type": "ip",
"alb.ingress.kubernetes.io/ssl-policy": "ELBSecurityPolicy-TLS-1-2-2017-01"
}
annotations = object.union(a, b) {
kinds[input.request.object.kind] == "Ingress"
} else = {}
更惯用的 Rego 可能会使用默认值annotations
:
default annotations = {}
annotations = object.union(a, b) {
kinds[input.request.object.kind] == "Ingress"
}
推荐阅读
- python - 在 python unittest 中模拟选择性文件写入
- python - 在 Django 中保存调整后的表单请求数据
- python - 根据字典的值造句
- laravel - Laravel 上重载的间接修改 - 关系
- python - 如何获得熊猫数据框或系列图中使用的标准颜色?
- java - Hibernate 从缓存中返回错误的列表,即使预期的列表与缓存的列表不同
- python - 编码奇怪的波斯 csv 文件
- excel - OFFSET() + ROW() 不会给出想要的结果
- python - 上传图像以在 Python 中从文件中发布帖子
- javascript - 我正在尝试在 html 中嵌入一些 python 代码以提供一个 gui,它显示何时在倾斜传感器上触发倾斜