add kyverno policies

Signed-off-by: gwg313 <gwg313@pm.me>
This commit is contained in:
gwg313 2026-05-27 19:23:54 -04:00
parent 4be877e419
commit baa0216960
Signed by: gwg313
GPG key ID: 60FF63B4826B7400
35 changed files with 843 additions and 39 deletions

View file

@ -0,0 +1,42 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: default-container-resources
spec:
background: true
rules:
- name: default-container-resources
match:
any:
- resources:
kinds:
- Pod
mutate:
foreach:
- list: "request.object.spec.containers"
patchStrategicMerge:
spec:
containers:
- (name): "{{ element.name }}"
resources:
requests:
+(cpu): "100m"
+(memory): "128Mi"
limits:
+(cpu): "200m"
+(memory): "512Mi"
- list: "request.object.spec.initContainers || []"
patchStrategicMerge:
spec:
initContainers:
- (name): "{{ element.name }}"
resources:
requests:
+(cpu): "100m"
+(memory): "128Mi"
limits:
+(cpu): "200m"
+(memory): "512Mi"

View file

@ -0,0 +1,18 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: default-cronjob-history
spec:
rules:
- name: set-cronjob-history
match:
any:
- resources:
kinds:
- CronJob
mutate:
patchStrategicMerge:
spec:
+(successfulJobsHistoryLimit): 1
+(failedJobsHistoryLimit): 2

View file

@ -0,0 +1,17 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: default-deployment-revision-history
spec:
rules:
- name: set-revision-history-limit
match:
any:
- resources:
kinds:
- Deployment
mutate:
patchStrategicMerge:
spec:
+(revisionHistoryLimit): 3

View file

@ -0,0 +1,36 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: default-drop-all-capabilities
spec:
background: true
rules:
- name: default-drop-all-capabilities
match:
any:
- resources:
kinds:
- Pod
mutate:
foreach:
- list: "request.object.spec.containers"
patchStrategicMerge:
spec:
containers:
- (name): "{{ element.name }}"
securityContext:
+(capabilities):
drop:
- ALL
- list: "request.object.spec.initContainers || []"
patchStrategicMerge:
spec:
initContainers:
- (name): "{{ element.name }}"
securityContext:
+(capabilities):
drop:
- ALL

View file

@ -0,0 +1,17 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: default-job-ttl
spec:
rules:
- name: set-job-ttl
match:
any:
- resources:
kinds:
- Job
mutate:
patchStrategicMerge:
spec:
+(ttlSecondsAfterFinished): 86400

View file

@ -0,0 +1,46 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: default-run-as-non-root
spec:
background: true
rules:
- name: default-pod-run-as-non-root
match:
any:
- resources:
kinds:
- Pod
mutate:
patchStrategicMerge:
spec:
securityContext:
+(runAsNonRoot): true
- name: default-container-run-as-non-root
match:
any:
- resources:
kinds:
- Pod
mutate:
foreach:
- list: "request.object.spec.containers"
patchStrategicMerge:
spec:
containers:
- (name): "{{ element.name }}"
securityContext:
+(runAsNonRoot): true
- list: "request.object.spec.initContainers || []"
patchStrategicMerge:
spec:
initContainers:
- (name): "{{ element.name }}"
securityContext:
+(runAsNonRoot): true

View file

@ -0,0 +1,49 @@
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: default-seccomp-runtime-default
spec:
background: true
rules:
- name: default-pod-seccomp-runtime-default
match:
any:
- resources:
kinds:
- Pod
mutate:
patchStrategicMerge:
spec:
securityContext:
seccompProfile:
type: RuntimeDefault
- name: default-container-seccomp-runtime-default
match:
any:
- resources:
kinds:
- Pod
mutate:
foreach:
- list: "request.object.spec.containers"
patchStrategicMerge:
spec:
containers:
- (name): "{{ element.name }}"
securityContext:
seccompProfile:
type: RuntimeDefault
- list: "request.object.spec.initContainers || []"
patchStrategicMerge:
spec:
initContainers:
- (name): "{{ element.name }}"
securityContext:
seccompProfile:
type: RuntimeDefault

View file

@ -0,0 +1,18 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- default-container-resources.yaml
- default-cronjob-history.yaml
- default-deployment-revision-history.yaml
- default-drop-all-capabilities.yaml
- default-job-ttl.yaml
- default-run-as-non-root.yaml
- default-seccomp-runtime-default.yaml
commonLabels:
app.kubernetes.io/part-of: kyverno-policies
policy-tier: defaults
commonAnnotations:
argocd.argoproj.io/sync-wave: "0"