diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index c48d464b4db..c0939e570be 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -109,6 +109,7 @@ const ( // owner: @gnufied // alpha: v1.14 + // beta: v1.16 // Ability to expand CSI volumes ExpandCSIVolumes featuregate.Feature = "ExpandCSIVolumes" @@ -495,7 +496,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS QOSReserved: {Default: false, PreRelease: featuregate.Alpha}, ExpandPersistentVolumes: {Default: true, PreRelease: featuregate.Beta}, ExpandInUsePersistentVolumes: {Default: true, PreRelease: featuregate.Beta}, - ExpandCSIVolumes: {Default: false, PreRelease: featuregate.Alpha}, + ExpandCSIVolumes: {Default: true, PreRelease: featuregate.Beta}, AttachVolumeLimit: {Default: true, PreRelease: featuregate.Beta}, CPUManager: {Default: true, PreRelease: featuregate.Beta}, CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha}, diff --git a/test/e2e/storage/csi_mock_volume.go b/test/e2e/storage/csi_mock_volume.go index 1184adacc44..4de7fa1f1ba 100644 --- a/test/e2e/storage/csi_mock_volume.go +++ b/test/e2e/storage/csi_mock_volume.go @@ -414,7 +414,7 @@ var _ = utils.SIGDescribe("CSI mock volume", func() { }) }) - ginkgo.Context("CSI Volume expansion [Feature:ExpandCSIVolumes]", func() { + ginkgo.Context("CSI Volume expansion", func() { tests := []struct { name string nodeExpansionRequired bool @@ -525,7 +525,7 @@ var _ = utils.SIGDescribe("CSI mock volume", func() { }) } }) - ginkgo.Context("CSI online volume expansion [Feature:ExpandCSIVolumes][Feature:ExpandInUseVolumes]", func() { + ginkgo.Context("CSI online volume expansion", func() { tests := []struct { name string disableAttach bool diff --git a/test/e2e/storage/csi_volumes.go b/test/e2e/storage/csi_volumes.go index 47e40d04887..5d1d01c2028 100644 --- a/test/e2e/storage/csi_volumes.go +++ b/test/e2e/storage/csi_volumes.go @@ -50,6 +50,7 @@ var csiTestSuites = []func() testsuites.TestSuite{ testsuites.InitSnapshottableTestSuite, testsuites.InitMultiVolumeTestSuite, testsuites.InitDisruptiveTestSuite, + testsuites.InitVolumeExpandTestSuite, } // This executes testSuites for csi volumes. diff --git a/test/e2e/storage/drivers/csi.go b/test/e2e/storage/drivers/csi.go index 8adc6de158a..b7f9ae7933d 100644 --- a/test/e2e/storage/drivers/csi.go +++ b/test/e2e/storage/drivers/csi.go @@ -41,7 +41,7 @@ import ( "strconv" "github.com/onsi/ginkgo" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" storagev1beta1 "k8s.io/api/storage/v1beta1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -87,17 +87,25 @@ var _ testsuites.SnapshottableTestDriver = &hostpathCSIDriver{} // InitHostPathCSIDriver returns hostpathCSIDriver that implements TestDriver interface func InitHostPathCSIDriver() testsuites.TestDriver { + capabilities := map[testsuites.Capability]bool{ + testsuites.CapPersistence: true, + testsuites.CapSnapshotDataSource: true, + testsuites.CapMultiPODs: true, + testsuites.CapBlock: true, + testsuites.CapPVCDataSource: true, + testsuites.CapControllerExpansion: true, + } return initHostPathCSIDriver("csi-hostpath", - map[testsuites.Capability]bool{testsuites.CapPersistence: true, testsuites.CapSnapshotDataSource: true, - testsuites.CapMultiPODs: true, testsuites.CapBlock: true, - testsuites.CapPVCDataSource: true}, + capabilities, "test/e2e/testing-manifests/storage-csi/driver-registrar/rbac.yaml", "test/e2e/testing-manifests/storage-csi/external-attacher/rbac.yaml", "test/e2e/testing-manifests/storage-csi/external-provisioner/rbac.yaml", "test/e2e/testing-manifests/storage-csi/external-snapshotter/rbac.yaml", + "test/e2e/testing-manifests/storage-csi/external-resizer/rbac.yaml", "test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpath-attacher.yaml", "test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpath-provisioner.yaml", "test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpath-snapshotter.yaml", + "test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpath-resizer.yaml", "test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpathplugin.yaml", "test/e2e/testing-manifests/storage-csi/hostpath/hostpath/e2e-test-rbac.yaml", ) diff --git a/test/e2e/storage/testpatterns/testpattern.go b/test/e2e/storage/testpatterns/testpattern.go index 5aaa872c829..e90f416a91c 100644 --- a/test/e2e/storage/testpatterns/testpattern.go +++ b/test/e2e/storage/testpatterns/testpattern.go @@ -221,7 +221,6 @@ var ( DefaultFsDynamicPVAllowExpansion = TestPattern{ Name: "Dynamic PV (default fs)(allowExpansion)", VolType: DynamicPV, - BindingMode: storagev1.VolumeBindingWaitForFirstConsumer, AllowExpansion: true, } // BlockVolModeDynamicPVAllowExpansion is TestPattern for "Dynamic PV (block volmode)(allowExpansion)" @@ -229,7 +228,6 @@ var ( Name: "Dynamic PV (block volmode)(allowExpansion)", VolType: DynamicPV, VolMode: v1.PersistentVolumeBlock, - BindingMode: storagev1.VolumeBindingWaitForFirstConsumer, AllowExpansion: true, } ) diff --git a/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpath-resizer.yaml b/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpath-resizer.yaml new file mode 100644 index 00000000000..8e7c30711f8 --- /dev/null +++ b/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpath-resizer.yaml @@ -0,0 +1,48 @@ +kind: Service +apiVersion: v1 +metadata: + name: csi-hostpath-resizer + labels: + app: csi-hostpath-resizer +spec: + selector: + app: csi-hostpath-resizer + ports: + - name: dummy + port: 12345 + +--- +kind: StatefulSet +apiVersion: apps/v1 +metadata: + name: csi-hostpath-resizer +spec: + serviceName: "csi-hostpath-resizer" + replicas: 1 + selector: + matchLabels: + app: csi-hostpath-resizer + template: + metadata: + labels: + app: csi-hostpath-resizer + spec: + serviceAccountName: csi-resizer + containers: + - name: csi-resizer + image: quay.io/k8scsi/csi-resizer:v0.2.0 + args: + - "--v=5" + - "--csi-address=$(ADDRESS)" + env: + - name: ADDRESS + value: /csi/csi.sock + imagePullPolicy: Always + volumeMounts: + - mountPath: /csi + name: socket-dir + volumes: + - hostPath: + path: /var/lib/kubelet/plugins/csi-hostpath + type: DirectoryOrCreate + name: socket-dir diff --git a/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpathplugin.yaml b/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpathplugin.yaml index 7c2f9a2dc2a..913a3b42875 100644 --- a/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpathplugin.yaml +++ b/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpathplugin.yaml @@ -33,7 +33,7 @@ spec: - mountPath: /registration name: registration-dir - name: hostpath - image: quay.io/k8scsi/hostpathplugin:v1.2.0-rc4 + image: quay.io/k8scsi/hostpathplugin:v1.2.0-rc5 args: - "--v=5" - "--endpoint=$(CSI_ENDPOINT)" diff --git a/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/e2e-test-rbac.yaml b/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/e2e-test-rbac.yaml index c0ec6c0378d..f93b8de13cd 100644 --- a/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/e2e-test-rbac.yaml +++ b/test/e2e/testing-manifests/storage-csi/hostpath/hostpath/e2e-test-rbac.yaml @@ -16,6 +16,9 @@ subjects: - kind: ServiceAccount name: csi-snapshotter namespace: default + - kind: ServiceAccount + name: csi-resizer + namespace: default roleRef: kind: ClusterRole name: e2e-test-privileged-psp