Slide 13
Slide 13 text
あとは Rego でポリシーを実装するだけ
• ServiceMonitor の Selector に⼀致する Service の存在確認(実際には Namespace を考慮すること)
# ServiceMonitor にマッチする Service が1つ以上存在することの確認
has_valid_svc(sm, items){
svc = items[i]
svc.kind == "Service"
match_svc(sm, svc)
}
# 「1つのServiceMonitorのSelector」と「1つのServiceのラベル」がマッチするか否かの確認
match_svc(sm, svc) {
s := {sprintf("%s=%s", [i, sm.spec.selector.matchLabels[i]]) | sm.spec.selector.matchLabels[i]}
l := {sprintf("%s=%s", [i, svc.metadata.labels[i]]) | svc.metadata.labels[i]}
sub := s - l
count(sub) = 0
}
ポリシーは下記の通り数⾏で表現可能