Back to Policies

Require StorageClass

PersistentVolumeClaims (PVCs) and StatefulSets may optionally define a StorageClass to dynamically provision storage. In a multi-tenancy environment where StorageClasses are far more common, it is often better to require storage only be provisioned from these StorageClasses. This policy requires that PVCs and StatefulSets containing volumeClaimTemplates define the storageClassName field with some value.

View on GitHub

Policy Definition

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-storageclass
annotations:
policies.kyverno.io/title: Require StorageClass
policies.kyverno.io/category: Other, Multi-Tenancy
policies.kyverno.io/severity: medium
policies.kyverno.io/subject: PersistentVolumeClaim, StatefulSet
policies.kyverno.io/description: PersistentVolumeClaims (PVCs) and StatefulSets may optionally define a StorageClass to dynamically provision storage. In a multi-tenancy environment where StorageClasses are far more common, it is often better to require storage only be provisioned from these StorageClasses. This policy requires that PVCs and StatefulSets containing volumeClaimTemplates define the storageClassName field with some value.
spec:
validationFailureAction: Audit
background: true
rules:
- name: pvc-storageclass
match:
any:
- resources:
kinds:
- PersistentVolumeClaim
validate:
message: PersistentVolumeClaims must define a storageClassName.
pattern:
spec:
storageClassName: "?*"
- name: ss-storageclass
match:
any:
- resources:
kinds:
- StatefulSet
validate:
message: StatefulSets must define a storageClassName.
pattern:
spec:
"=(volumeClaimTemplates)":
- spec:
storageClassName: "?*"

Related Policies