hack/deployer/runner/kyverno/install/gke-policies.yaml (52 lines of code) (raw):

--- apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: disallow-gke-storageclasses annotations: policies.kyverno.io/title: Disallow built-in GKE StorageClasses 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. They must not use any of the built-in GKE storage classes or otherwise they might escape our volume garbage collection in CI spec: validationFailureAction: enforce background: true rules: - name: pvc-storageclass match: any: - resources: kinds: - PersistentVolumeClaim validate: message: "PersistentVolumeClaims must not use built-in GKE storage classes." deny: conditions: any: - key: "{{request.object.spec.storageClassName}}" operator: AnyIn value: - premium-rwo - standard - standard-rwo - name: ss-storageclass match: any: - resources: kinds: - StatefulSet validate: message: "StatefulSets must not define built-in GKE storage classes." deny: conditions: any: - key: "{{request.object.spec.volumeClaimTemplates[].spec.storageClassName || ''}}" operator: AnyIn value: - premium-rwo - standard - standard-rwo