All Policies

Mutate termination Grace Periods Seconds

Pods with large terminationGracePeriodSeconds (tGPS) might prevent cluster nodes from getting drained, ultimately making the whole cluster unstable. This policy mutates all incoming Pods to set their tGPS under 50s. If the user creates a pod without specifying tGPS, then the Kubernetes default of 30s is maintained.

Policy Definition

/other/mutate-large-termination-gps/mutate-large-termination-gps.yaml

 1apiVersion: kyverno.io/v1
 2kind: ClusterPolicy
 3metadata:
 4  name: mutate-termination-grace-period-seconds
 5  annotations:
 6    policies.kyverno.io/title: Mutate termination Grace Periods Seconds
 7    policies.kyverno.io/category: Sample
 8    policies.kyverno.io/severity: medium
 9    kyverno.io/kyverno-version: 1.6.2
10    policies.kyverno.io/minversion: 1.6.0
11    kyverno.io/kubernetes-version: "1.23"
12    policies.kyverno.io/subject: Pod
13    policies.kyverno.io/description: >-
14      Pods with large terminationGracePeriodSeconds (tGPS) might prevent cluster nodes
15      from getting drained, ultimately making the whole cluster unstable. This policy
16      mutates all incoming Pods to set their tGPS under 50s. If the user creates a pod
17      without specifying tGPS, then the Kubernetes default of 30s is maintained.      
18spec:
19  background: false
20  rules:
21    - name: mutate-termination-grace-period-seconds
22      match:
23        any:
24        - resources:
25            kinds:
26              - Pod
27      preconditions:
28        all:
29        - key: "{{request.object.spec.terminationGracePeriodSeconds || `0` }}"
30          operator: GreaterThan
31          value: 50   # maximum tGPS allowed by cluster admin
32      mutate:
33        patchStrategicMerge:
34          spec:
35            terminationGracePeriodSeconds: 50