Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions job-timeout-enforcer/.chainsaw-test/resources/invalid-job.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: batch/v1
kind: Job
metadata:
name: invalid-job-no-timeout
namespace: default
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
---
apiVersion: batch/v1
kind: Job
metadata:
name: invalid-job-too-short
namespace: default
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
activeDeadlineSeconds: 1800
14 changes: 14 additions & 0 deletions job-timeout-enforcer/.chainsaw-test/resources/valid-job.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: batch/v1
kind: Job
metadata:
name: valid-job
namespace: default
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
activeDeadlineSeconds: 3600
24 changes: 24 additions & 0 deletions job-timeout-enforcer/.chainsaw-test/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
name: test-job-timeout-enforcer
spec:
steps:
- name: 01-apply-policy
try:
- apiVersion: kyverno.io/v1
kind: ClusterPolicy
file: job-timeout-enforcer.yaml

- name: 02-test-valid-job
try:
- file: resources/valid-job.yaml

- name: 03-test-invalid-job
try:
- file: resources/invalid-job.yaml
expect:
violation:
count: 2
match:
- message: "Jobs must specify activeDeadlineSeconds between 3600 (1 hour) and 86400 (24 hours)"
28 changes: 28 additions & 0 deletions job-timeout-enforcer/artifacthub-pkg.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: job-timeout-enforcer
version: 1.0.0
displayName: Enforce Job Timeouts
createdAt: "2024-03-20T00:00:00.000Z"
description: >-
Jobs without timeouts can run indefinitely, consuming cluster resources and potentially
indicating stuck workloads. This policy ensures all Jobs have an activeDeadlineSeconds
set with a reasonable timeout value between 1 hour and 24 hours.
install: |-
```sh
kubectl apply -f https://raw.githubusercontent.com/kyverno/policies/main/job-timeout-enforcer/job-timeout-enforcer.yaml
```
keywords:
- job
- timeout
- resource management
readme: |
# Enforce Job Timeouts

Jobs without timeouts can run indefinitely, consuming cluster resources and potentially
indicating stuck workloads. This policy ensures all Jobs have an activeDeadlineSeconds
set with a reasonable timeout value between 1 hour and 24 hours.
annotations:
kyverno/category: Resource Management
kyverno/severity: medium
kyverno/subject: Job
kyverno/kubernetesVersion: "1.23-1.28"
28 changes: 28 additions & 0 deletions job-timeout-enforcer/job-timeout-enforcer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: batch/v1
kind: Job
metadata:
name: invalid-job-no-timeout
namespace: default
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
---
apiVersion: batch/v1
kind: Job
metadata:
name: invalid-job-too-short
namespace: default
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
activeDeadlineSeconds: 1800
Loading