All Policies
Enforce pod duration in CEL expressions
This validation is valuable when annotations are used to define durations, such as to ensure a Pod lifetime annotation does not exceed some site specific max threshold. Pod lifetime annotation can be no greater than 8 hours.
Policy Definition
/other-cel/enforce-pod-duration/enforce-pod-duration.yaml
1apiVersion: kyverno.io/v1
2kind: ClusterPolicy
3metadata:
4 name: pod-lifetime
5 annotations:
6 policies.kyverno.io/title: Enforce pod duration in CEL expressions
7 policies.kyverno.io/category: Sample in CEL
8 policies.kyverno.io/minversion: 1.11.0
9 kyverno.io/kubernetes-version: "1.26-1.27"
10 policies.kyverno.io/subject: Pod
11 policies.kyverno.io/description: >-
12 This validation is valuable when annotations are used to define durations,
13 such as to ensure a Pod lifetime annotation does not exceed some site specific max threshold.
14 Pod lifetime annotation can be no greater than 8 hours.
15spec:
16 validationFailureAction: Audit
17 background: true
18 rules:
19 - name: pods-lifetime
20 match:
21 any:
22 - resources:
23 kinds:
24 - Pod
25 operations:
26 - CREATE
27 - UPDATE
28 validate:
29 cel:
30 variables:
31 - name: hasLifetimeAnnotation
32 expression: "object.metadata.?annotations[?'pod.kubernetes.io/lifetime'].hasValue()"
33 - name: lifetimeAnnotationValue
34 expression: "variables.hasLifetimeAnnotation ? object.metadata.annotations['pod.kubernetes.io/lifetime'] : '0s'"
35 expressions:
36 - expression: "!(duration(variables.lifetimeAnnotationValue) > duration('8h'))"
37 message: "Pod lifetime exceeds limit of 8h"