Slide 50
Slide 50 text
Kubernetes Fest Tokyo 2020
Presented by @makocchi
50
Rego を読んでみよう!
package k8srequiredlabels
violation[{"msg": msg, "details": {"missing_labels": missing}}] {
provided := {label | input.review.object.metadata.labels[label]}
required := {label | label := input.parameters.labels[_]}
missing := required - provided
count(missing) > 0
msg := sprintf("you must provide labels: %v", [missing])
}
ͭ·Γ͜͏͍͏͜ͱʁ
["A", "B"] - ["A", "B", "C"] = []
["A", "B"] - ["B", "C"] = ["A"]
先程までに定義してきた "required" と "provieded" を比較し、"missing" という変数に格納
required 内の label から provided の label を引いている
2つを比較し、provided 内に無い required の要素の数を返している
言い方を変えると required の中で、provided 内と一致しなかった要素を返す