All Policies
Check deprecated APIs
Kubernetes APIs are sometimes deprecated and removed after a few releases. As a best practice, older API versions should be replaced with newer versions. This policy validates for APIs that are deprecated or scheduled for removal. Note that checking for some of these resources may require modifying the Kyverno ConfigMap to remove filters.
Policy Definition
/best-practices/check_deprecated_apis.yaml
1apiVersion: kyverno.io/v1
2kind: ClusterPolicy
3metadata:
4 name: check-deprecated-apis
5 annotations:
6 policies.kyverno.io/title: Check deprecated APIs
7 policies.kyverno.io/category: Best Practices
8 policies.kyverno.io/subject: Kubernetes APIs
9 policies.kyverno.io/description: >-
10 Kubernetes APIs are sometimes deprecated and removed after a few releases.
11 As a best practice, older API versions should be replaced with newer versions.
12 This policy validates for APIs that are deprecated or scheduled for removal.
13 Note that checking for some of these resources may require modifying the Kyverno
14 ConfigMap to remove filters.
15spec:
16 validationFailureAction: audit
17 background: true
18 rules:
19 - name: validate-v1-22-removals
20 match:
21 resources:
22 kinds:
23 - admissionregistration.k8s.io/v1beta1/ValidatingWebhookConfiguration
24 - admissionregistration.k8s.io/v1beta1/MutatingWebhookConfiguration
25 - apiextensions.k8s.io/v1beta1/CustomResourceDefinition
26 - apiregistration.k8s.io/v1beta1/APIService
27 - authentication.k8s.io/v1beta1/TokenReview
28 - authorization.k8s.io/v1beta1/SubjectAccessReview
29 - authorization.k8s.io/v1beta1/LocalSubjectAccessReview
30 - authorization.k8s.io/v1beta1/SelfSubjectAccessReview
31 - certificates.k8s.io/v1beta1/CertificateSigningRequest
32 - coordination.k8s.io/v1beta1/Lease
33 - extensions/v1beta1/Ingress
34 - networking.k8s.io/v1beta1/Ingress
35 - networking.k8s.io/v1beta1/IngressClass
36 - rbac.authorization.k8s.io/v1beta1/ClusterRole
37 - rbac.authorization.k8s.io/v1beta1/ClusterRoleBinding
38 - rbac.authorization.k8s.io/v1beta1/Role
39 - rbac.authorization.k8s.io/v1beta1/RoleBinding
40 - scheduling.k8s.io/v1beta1/PriorityClass
41 - storage.k8s.io/v1beta1/CSIDriver
42 - storage.k8s.io/v1beta1/CSINode
43 - storage.k8s.io/v1beta1/StorageClass
44 - storage.k8s.io/v1beta1/VolumeAttachment
45 validate:
46 message: >-
47 {{ request.object.apiVersion }}/{{ request.object.kind }} is deprecated and will be removed in v1.22.
48 See: https://kubernetes.io/docs/reference/using-api/deprecation-guide/
49 deny: {}
50 - name: validate-v1-25-removals
51 match:
52 resources:
53 kinds:
54 - batch/v1beta1/CronJob
55 - discovery.k8s.io/v1beta1/EndpointSlice
56 - events.k8s.io/v1beta1/Event
57 - policy/v1beta1/PodDisruptionBudget
58 - policy/v1beta1/PodSecurityPolicy
59 - node.k8s.io/v1beta1/RuntimeClass
60 validate:
61 message: >-
62 {{ request.object.apiVersion }}/{{ request.object.kind }} is deprecated and will be removed in v1.25.
63 See: https://kubernetes.io/docs/reference/using-api/deprecation-guide/
64 deny: {}
65