All Policies
Require Kubecost Labels in CEL expressions
Kubecost can use labels assigned to Pods in order to track and display cost allocation in a granular way. These labels, which can be customized, can be used to organize and group workloads in different ways. This policy requires that the labels `owner`, `team`, `department`, `app`, and `env` are all defined on Pods. With Kyverno autogen enabled (absence of the annotation `pod-policies.kyverno.io/autogen-controllers=none`), these labels will also be required for all Pod controllers.
Policy Definition
/kubecost-cel/require-kubecost-labels/require-kubecost-labels.yaml
1apiVersion: kyverno.io/v1
2kind: ClusterPolicy
3metadata:
4 name: require-kubecost-labels
5 annotations:
6 policies.kyverno.io/title: Require Kubecost Labels in CEL expressions
7 policies.kyverno.io/category: Kubecost in CEL
8 policies.kyverno.io/severity: medium
9 policies.kyverno.io/subject: Pod, Label
10 kyverno.io/kyverno-version: 1.11.0
11 kyverno.io/kubernetes-version: "1.26-1.27"
12 policies.kyverno.io/description: >-
13 Kubecost can use labels assigned to Pods in order to track and display
14 cost allocation in a granular way. These labels, which can be customized, can be used
15 to organize and group workloads in different ways. This policy requires that the labels
16 `owner`, `team`, `department`, `app`, and `env` are all defined on Pods. With Kyverno
17 autogen enabled (absence of the annotation `pod-policies.kyverno.io/autogen-controllers=none`),
18 these labels will also be required for all Pod controllers.
19spec:
20 validationFailureAction: Audit
21 background: true
22 rules:
23 - name: require-labels
24 match:
25 any:
26 - resources:
27 kinds:
28 - Pod
29 operations:
30 - CREATE
31 - UPDATE
32 validate:
33 cel:
34 expressions:
35 - expression: >-
36 object.metadata.?labels.?owner.orValue('') != '' &&
37 object.metadata.?labels.?team.orValue('') != '' &&
38 object.metadata.?labels.?department.orValue('') != '' &&
39 object.metadata.?labels.?app.orValue('') != '' &&
40 object.metadata.?labels.?env.orValue('') != ''
41 message: "The Kubecost labels `owner`, `team`, `department`, `app`, and `env` are all required for Pods."
yaml