1

我正在制定一项政策,该政策规定kaniko图像必须始终在 nodePool 上运行kaniko-nodepool

如果将 kaniko 图像部署在其他任何地方,则将违反。我使用容器图像和 nodeSelector 的组合来执行策略

我的政策运作良好https://play.openpolicyagent.org/p/GOJNyAF5TW

更改input.review.object.spec.nodeSelector.pool导致违规

剩下的唯一问题是,如果 pod 没有 nodeSelector 并且正在部署的图像是 kaniko,那么也会发生违规。

所以我加了

not input.review.object.spec.nodeSelector

意思是如果没有nodeSelector,那么违规应该是正确的。一旦我删除了整个 nodeSelector 部分,它就不会导致违规。

https://play.openpolicyagent.org/p/AuhepivPHN

单击覆盖显示没有任何行正在处理。

我在这里缺少什么吗?

4

1 回答 1

0

我自己尝试了一些组合。根据此处的文档, not obj.foo.bar.baz检查路径是否存在或foo.bar.baz不存在。在您的情况下,将始终存在..因此,这可能不是最佳选择。我尝试的是在这里, 即如果foo.barfooinput.review.object.specnot input.review.object.spec.nodeSelector

  1. 池错误或
  2. 节点选择器丢失..

让我知道这是否有帮助。

于 2021-04-07T05:52:10.293 回答