|
|
@@ -0,0 +1,41 @@
|
|
|
+package node.porter_run_taints
|
|
|
+
|
|
|
+import future.keywords
|
|
|
+
|
|
|
+POLICY_ID := "porter_run_taints"
|
|
|
+
|
|
|
+POLICY_VERSION := "v0.0.1"
|
|
|
+
|
|
|
+POLICY_SEVERITY := "high"
|
|
|
+
|
|
|
+POLICY_TITLE := sprintf("The only taints on node %s should be porter.run/workload-kind=system", [input.metadata.name])
|
|
|
+
|
|
|
+POLICY_SUCCESS_MESSAGE := sprintf("Success: this node either has no taints, or has a taint with key porter.run/workload-kind", [])
|
|
|
+
|
|
|
+# if there are no taints, allow the condition
|
|
|
+allow if {
|
|
|
+ not input.spec.taints[0]
|
|
|
+}
|
|
|
+
|
|
|
+# if there is a taint with the key porter.run/workload-kind, allow the condition
|
|
|
+allow if {
|
|
|
+ input.spec.taints[0].key == "porter.run/workload-kind"
|
|
|
+ input.spec.taints[0].effect == "NoSchedule"
|
|
|
+}
|
|
|
+
|
|
|
+FAILURE_MESSAGE contains msg1 if {
|
|
|
+ not allow
|
|
|
+ msg1 := sprintf("Failed: the only permitted taints must contain the key porter.run/workload-kind", [])
|
|
|
+}
|
|
|
+
|
|
|
+FAILURE_MESSAGE contains msg2 if {
|
|
|
+ not allow
|
|
|
+ not input.spec.taints[0].key == "porter.run/workload-kind"
|
|
|
+ msg2 := sprintf("Taint has key %s", [input.spec.taints[0].key])
|
|
|
+}
|
|
|
+
|
|
|
+FAILURE_MESSAGE contains msg3 if {
|
|
|
+ not allow
|
|
|
+ not input.spec.taints[0].effect == "NoSchedule"
|
|
|
+ msg3 := sprintf("Taint has effect %s", [input.spec.taints[0].effect])
|
|
|
+}
|