Skip to main content

☑️ Prevent use of deprecated APIs in Kubernetes v1.21

Kubernetes version 1.21 stopped serving several APIs for different resource types. When deploying a resource with a deprecated API version, the Kubernetes engine will reject it.

The following resources are deprecated in version 1.21:

API versionResource kind
policy/v1beta1PodSecurityPolicy
PodDisruptionBudget
PodDisruptionBudgetList
batch/v1beta1CronJob
CronJobList
discovery.k8s.io/v1beta1EndpointSlice
audit.k8s.io/v1beta1Event
EventList
Policy
PolicyList
audit.k8s.io/v1alpha1Event
EventList
Policy
PolicyList

Targeted objects by this rule (types of kind): (See table above)

Complexity: easy (What does this mean?)

Policy as code identifier: K8S_DEPRECATED_APIVERSION_1.21


This rule will fail

If one of the deprecated API versions is used for a resource:

apiVersion: batch/v1beta1
kind: CronJob

Rule output in the CLI

$ datree test *.yaml

>> File: failExample.yaml
❌ Prevent use of deprecated APIs in Kubernetes v1.21 [1 occurrence]
💡 Incorrect value for key `apiVersion` - the version of the resource you are trying to use is deprecated in k8s v1.21

How to fix this failure

Use a supported API version instead of the deprecated one:

Deprecated API versionSupported API version
policy/v1beta1policy/v1
batch/v1beta1batch/v1
discovery.k8s.io/v1beta1discovery.k8s.io/v1

Example:

apiVersion: batch/v1
kind: CronJob

Read more