From 471fd1ae8a1d167102f1d6d27fbde1020d320c59 Mon Sep 17 00:00:00 2001 From: Humble Chirammal Date: Fri, 16 Jun 2023 19:45:36 +0530 Subject: [PATCH] deprecate RBD plugin from available in-tree drivers Based on https://groups.google.com/g/kubernetes-sig-storage/c/h5751_B5LQM, the consensus was to start the deprecation in v1.28. This commit start the deprecation process of RBD plugin from in-tree drivers. ACTION REQUIRED: RBD volume plugin ( `kubernetes.io/rbd`) has been deprecated in this release and will be removed in a subsequent release. Alternative is to use RBD CSI driver (https://github.com/ceph/ceph-csi/) in your Kubernetes Cluster. Signed-off-by: Humble Chirammal --- pkg/api/persistentvolume/util.go | 6 ++++-- pkg/api/persistentvolume/util_test.go | 21 +++++++++++++++++++++ pkg/api/pod/warnings.go | 3 +++ pkg/api/pod/warnings_test.go | 9 +++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/pkg/api/persistentvolume/util.go b/pkg/api/persistentvolume/util.go index d065ccc6df5..64f60ac48c2 100644 --- a/pkg/api/persistentvolume/util.go +++ b/pkg/api/persistentvolume/util.go @@ -93,8 +93,10 @@ func warningsForPersistentVolumeSpecAndMeta(fieldPath *field.Path, pvSpec *api.P warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.22, non-functional in v1.25+", fieldPath.Child("spec", "persistentVolumeSource").Child("storageOS"))) } if pvSpec.Glusterfs != nil { - warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.25, non-functional in v1.26+", fieldPath.Child("spec", "persistentVolumeSource").Child("glusterfs"))) + warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.25, non-functional in v1.26+", fieldPath.Child("spec", "glusterfs"))) + } + if pvSpec.RBD != nil { + warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.28, non-functional in v1.31+", fieldPath.Child("spec", "rbd"))) } - return warnings } diff --git a/pkg/api/persistentvolume/util_test.go b/pkg/api/persistentvolume/util_test.go index 4557cf49479..6565080223a 100644 --- a/pkg/api/persistentvolume/util_test.go +++ b/pkg/api/persistentvolume/util_test.go @@ -212,6 +212,27 @@ func TestWarnings(t *testing.T) { `spec.persistentVolumeSource.photonPersistentDisk: deprecated in v1.11, non-functional in v1.16+`, }, }, + { + name: "PV RBD deprecation warning", + template: &api.PersistentVolume{ + Spec: api.PersistentVolumeSpec{ + PersistentVolumeSource: api.PersistentVolumeSource{ + RBD: &api.RBDPersistentVolumeSource{ + CephMonitors: nil, + RBDImage: "", + FSType: "", + RBDPool: "", + RadosUser: "", + Keyring: "", + SecretRef: nil, + ReadOnly: false, + }, + }, + }, + }, + expected: []string{ + `spec.rbd: deprecated in v1.28, non-functional in v1.31+`}, + }, { name: "PV ScaleIO deprecation warning", template: &api.PersistentVolume{ diff --git a/pkg/api/pod/warnings.go b/pkg/api/pod/warnings.go index a7c67921899..c3360538035 100644 --- a/pkg/api/pod/warnings.go +++ b/pkg/api/pod/warnings.go @@ -163,6 +163,9 @@ func warningsForPodSpecAndMeta(fieldPath *field.Path, podSpec *api.PodSpec, meta if v.CephFS != nil { warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.28, non-functional in v1.31+", fieldPath.Child("spec", "volumes").Index(i).Child("cephfs"))) } + if v.RBD != nil { + warnings = append(warnings, fmt.Sprintf("%s: deprecated in v1.28, non-functional in v1.31+", fieldPath.Child("spec", "volumes").Index(i).Child("rbd"))) + } } // duplicate hostAliases (#91670, #58477) diff --git a/pkg/api/pod/warnings_test.go b/pkg/api/pod/warnings_test.go index 138e249cbf3..8a2ba9e5482 100644 --- a/pkg/api/pod/warnings_test.go +++ b/pkg/api/pod/warnings_test.go @@ -224,6 +224,15 @@ func TestWarnings(t *testing.T) { expected: []string{`spec.volumes[0].cephfs: deprecated in v1.28, non-functional in v1.31+`}, }, + { + name: "rbd", + template: &api.PodTemplateSpec{Spec: api.PodSpec{ + Volumes: []api.Volume{ + {Name: "s", VolumeSource: api.VolumeSource{RBD: &api.RBDVolumeSource{}}}, + }}, + }, + expected: []string{`spec.volumes[0].rbd: deprecated in v1.28, non-functional in v1.31+`}, + }, { name: "duplicate hostAlias", template: &api.PodTemplateSpec{Spec: api.PodSpec{