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 rules:
18 - name: validate-v1-22-removals
19 match:
20 resources:
21 kinds:
22 - admissionregistration.k8s.io/v1beta1/ValidatingWebhookConfiguration
23 - admissionregistration.k8s.io/v1beta1/MutatingWebhookConfiguration
24 - apiextensions.k8s.io/v1beta1/CustomResourceDefinition
25 - apiregistration.k8s.io/v1beta1/APIService
26 - authentication.k8s.io/v1beta1/TokenReview
27 - authorization.k8s.io/v1beta1/SubjectAccessReview
28 - authorization.k8s.io/v1beta1/LocalSubjectAccessReview
29 - authorization.k8s.io/v1beta1/SelfSubjectAccessReview
30 - certificates.k8s.io/v1beta1/CertificateSigningRequest
31 - coordination.k8s.io/v1beta1/Lease
32 - extensions/v1beta1/Ingress
33 - networking.k8s.io/v1beta1/Ingress
34 - networking.k8s.io/v1beta1/IngressClass
35 - rbac.authorization.k8s.io/v1beta1/ClusterRole
36 - rbac.authorization.k8s.io/v1beta1/ClusterRoleBinding
37 - rbac.authorization.k8s.io/v1beta1/Role
38 - rbac.authorization.k8s.io/v1beta1/RoleBinding
39 - scheduling.k8s.io/v1beta1/PriorityClass
40 - storage.k8s.io/v1beta1/CSIDriver
41 - storage.k8s.io/v1beta1/CSINode
42 - storage.k8s.io/v1beta1/StorageClass
43 - storage.k8s.io/v1beta1/VolumeAttachment
44 validate:
45 message: >-
46 {{ request.object.apiVersion }}/{{ request.object.kind }} is deprecated and will be removed in v1.22.
47 See: https://kubernetes.io/docs/reference/using-api/deprecation-guide/
48 deny: {}
49 - name: validate-v1-25-removals
50 match:
51 resources:
52 kinds:
53 - batch/v1beta1/CronJob
54 - discovery.k8s.io/v1beta1/EndpointSlice
55 - events.k8s.io/v1beta1/Event
56 - policy/v1beta1/PodDisruptionBudget
57 - policy/v1beta1/PodSecurityPolicy
58 - node.k8s.io/v1beta1/RuntimeClass
59 validate:
60 message: >-
61 {{ request.object.apiVersion }}/{{ request.object.kind }} is deprecated and will be removed in v1.25.
62 See: https://kubernetes.io/docs/reference/using-api/deprecation-guide/
63 deny: {}
64