mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #124842 from carlory/honor-pv-reclaim-policy-e2e
Promote HonorPVReclaimPolicy to beta and enable it by default
This commit is contained in:
		@@ -18,12 +18,12 @@ package persistentvolume
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	featuregatetesting "k8s.io/component-base/featuregate/testing"
 | 
			
		||||
	"k8s.io/klog/v2/ktesting"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/features"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	v1 "k8s.io/api/core/v1"
 | 
			
		||||
	storage "k8s.io/api/storage/v1"
 | 
			
		||||
@@ -598,13 +598,16 @@ func TestProvisionSync(t *testing.T) {
 | 
			
		||||
//
 | 
			
		||||
// Some limit of calls in enforced to prevent endless loops.
 | 
			
		||||
func TestProvisionMultiSync(t *testing.T) {
 | 
			
		||||
	// Default enable the HonorPVReclaimPolicy feature gate.
 | 
			
		||||
	featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.HonorPVReclaimPolicy, true)
 | 
			
		||||
 | 
			
		||||
	_, ctx := ktesting.NewTestContext(t)
 | 
			
		||||
	tests := []controllerTest{
 | 
			
		||||
		{
 | 
			
		||||
			// Provision a volume with binding
 | 
			
		||||
			name:            "12-1 - successful provision",
 | 
			
		||||
			initialVolumes:  novolumes,
 | 
			
		||||
			expectedVolumes: newVolumeArray("pvc-uid12-1", "1Gi", "uid12-1", "claim12-1", v1.VolumeBound, v1.PersistentVolumeReclaimDelete, classGold, volume.AnnBoundByController, volume.AnnDynamicallyProvisioned),
 | 
			
		||||
			expectedVolumes: volumesWithFinalizers(newVolumeArray("pvc-uid12-1", "1Gi", "uid12-1", "claim12-1", v1.VolumeBound, v1.PersistentVolumeReclaimDelete, classGold, volume.AnnBoundByController, volume.AnnDynamicallyProvisioned), []string{volume.PVDeletionInTreeProtectionFinalizer}),
 | 
			
		||||
			initialClaims:   newClaimArray("claim12-1", "uid12-1", "1Gi", "", v1.ClaimPending, &classGold),
 | 
			
		||||
			expectedClaims:  newClaimArray("claim12-1", "uid12-1", "1Gi", "pvc-uid12-1", v1.ClaimBound, &classGold, volume.AnnBoundByController, volume.AnnBindCompleted, volume.AnnStorageProvisioner, volume.AnnBetaStorageProvisioner),
 | 
			
		||||
			expectedEvents:  noevents,
 | 
			
		||||
 
 | 
			
		||||
@@ -256,8 +256,9 @@ const (
 | 
			
		||||
	HPAScaleToZero featuregate.Feature = "HPAScaleToZero"
 | 
			
		||||
 | 
			
		||||
	// owner: @deepakkinni @xing-yang
 | 
			
		||||
	// kep: https://kep.k8s.io/2680
 | 
			
		||||
	// kep: https://kep.k8s.io/2644
 | 
			
		||||
	// alpha: v1.23
 | 
			
		||||
	// beta: v1.31
 | 
			
		||||
	//
 | 
			
		||||
	// Honor Persistent Volume Reclaim Policy when it is "Delete" irrespective of PV-PVC
 | 
			
		||||
	// deletion ordering.
 | 
			
		||||
@@ -1018,7 +1019,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
 | 
			
		||||
 | 
			
		||||
	HPAContainerMetrics: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32
 | 
			
		||||
 | 
			
		||||
	HonorPVReclaimPolicy: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
	HonorPVReclaimPolicy: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	ImageMaximumGCAge: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -735,18 +735,6 @@ func (m *mockCSIDriver) PrepareTest(ctx context.Context, f *framework.Framework)
 | 
			
		||||
					Verbs:     []string{"get", "list"},
 | 
			
		||||
				})
 | 
			
		||||
			}
 | 
			
		||||
			if m.enableHonorPVReclaimPolicy && strings.HasPrefix(item.Name, "external-provisioner-runner") {
 | 
			
		||||
				// The update verb is needed for testing the HonorPVReclaimPolicy feature gate.
 | 
			
		||||
				// The feature gate is an alpha stage and is not enabled by default, so the verb
 | 
			
		||||
				// is not added to the default rbac manifest.
 | 
			
		||||
				// TODO: Remove this when the feature gate is promoted to beta or stable, and the
 | 
			
		||||
				// verb is added to the default rbac manifest in the external-provisioner.
 | 
			
		||||
				item.Rules = append(item.Rules, rbacv1.PolicyRule{
 | 
			
		||||
					APIGroups: []string{""},
 | 
			
		||||
					Resources: []string{"persistentvolumes"},
 | 
			
		||||
					Verbs:     []string{"update"},
 | 
			
		||||
				})
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return nil
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-attacher/raw/v4.5.0/deploy/kubernetes//rbac.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.13
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-attacher/raw/v4.6.1/deploy/kubernetes//rbac.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.14
 | 
			
		||||
# by ./update-hostpath.sh
 | 
			
		||||
#
 | 
			
		||||
# This YAML file contains all RBAC objects that are necessary to run external
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-health-monitor/raw/v0.11.0/deploy/kubernetes/external-health-monitor-controller/rbac.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.13
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-health-monitor/raw/v0.12.1/deploy/kubernetes/external-health-monitor-controller/rbac.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.14
 | 
			
		||||
# by ./update-hostpath.sh
 | 
			
		||||
#
 | 
			
		||||
# This YAML file contains all RBAC objects that are necessary to run external
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-provisioner/raw/v4.0.0/deploy/kubernetes//rbac.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.13
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-provisioner/raw/v5.0.1/deploy/kubernetes//rbac.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.14
 | 
			
		||||
# by ./update-hostpath.sh
 | 
			
		||||
#
 | 
			
		||||
# This YAML file contains all RBAC objects that are necessary to run external
 | 
			
		||||
@@ -32,7 +32,7 @@ rules:
 | 
			
		||||
  #   verbs: ["get", "list"]
 | 
			
		||||
  - apiGroups: [""]
 | 
			
		||||
    resources: ["persistentvolumes"]
 | 
			
		||||
    verbs: ["get", "list", "watch", "create", "delete"]
 | 
			
		||||
    verbs: ["get", "list", "watch", "create", "patch", "delete"]
 | 
			
		||||
  - apiGroups: [""]
 | 
			
		||||
    resources: ["persistentvolumeclaims"]
 | 
			
		||||
    verbs: ["get", "list", "watch", "update"]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-resizer/raw/v1.10.0/deploy/kubernetes//rbac.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.13
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-resizer/raw/v1.11.1/deploy/kubernetes//rbac.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.14
 | 
			
		||||
# by ./update-hostpath.sh
 | 
			
		||||
#
 | 
			
		||||
# This YAML file contains all RBAC objects that are necessary to run external
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-snapshotter/raw/v7.0.1/deploy/kubernetes/csi-snapshotter/rbac-csi-snapshotter.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.13
 | 
			
		||||
# Do not edit, downloaded from https://github.com/kubernetes-csi/external-snapshotter/raw/v8.0.1/deploy/kubernetes/csi-snapshotter/rbac-csi-snapshotter.yaml
 | 
			
		||||
# for csi-driver-host-path release-1.14
 | 
			
		||||
# by ./update-hostpath.sh
 | 
			
		||||
#
 | 
			
		||||
# Together with the RBAC file for external-provisioner, this YAML file
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
The files in this directory are exact copies of "kubernetes-latest" in
 | 
			
		||||
https://github.com/kubernetes-csi/csi-driver-host-path/tree/release-1.13/deploy/
 | 
			
		||||
https://github.com/kubernetes-csi/csi-driver-host-path/tree/release-1.14/deploy/
 | 
			
		||||
 | 
			
		||||
Do not edit manually. Run ./update-hostpath.sh to refresh the content.
 | 
			
		||||
 
 | 
			
		||||
@@ -219,7 +219,7 @@ spec:
 | 
			
		||||
      serviceAccountName: csi-hostpathplugin-sa
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: hostpath
 | 
			
		||||
          image: registry.k8s.io/sig-storage/hostpathplugin:v1.13.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/hostpathplugin:v1.14.0
 | 
			
		||||
          args:
 | 
			
		||||
            - "--drivername=hostpath.csi.k8s.io"
 | 
			
		||||
            - "--v=5"
 | 
			
		||||
@@ -262,7 +262,7 @@ spec:
 | 
			
		||||
              name: dev-dir
 | 
			
		||||
 | 
			
		||||
        - name: csi-external-health-monitor-controller
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-external-health-monitor-controller:v0.11.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-external-health-monitor-controller:v0.12.1
 | 
			
		||||
          args:
 | 
			
		||||
            - "--v=5"
 | 
			
		||||
            - "--csi-address=$(ADDRESS)"
 | 
			
		||||
@@ -276,7 +276,7 @@ spec:
 | 
			
		||||
              mountPath: /csi
 | 
			
		||||
 | 
			
		||||
        - name: node-driver-registrar
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.1
 | 
			
		||||
          args:
 | 
			
		||||
            - --v=5
 | 
			
		||||
            - --csi-address=/csi/csi.sock
 | 
			
		||||
@@ -310,7 +310,7 @@ spec:
 | 
			
		||||
          - --health-port=9898
 | 
			
		||||
 | 
			
		||||
        - name: csi-attacher
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-attacher:v4.5.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-attacher:v4.6.1
 | 
			
		||||
          args:
 | 
			
		||||
            - --v=5
 | 
			
		||||
            - --csi-address=/csi/csi.sock
 | 
			
		||||
@@ -324,7 +324,7 @@ spec:
 | 
			
		||||
            name: socket-dir
 | 
			
		||||
 | 
			
		||||
        - name: csi-provisioner
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-provisioner:v4.0.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-provisioner:v5.0.1
 | 
			
		||||
          args:
 | 
			
		||||
            - -v=5
 | 
			
		||||
            - --csi-address=/csi/csi.sock
 | 
			
		||||
@@ -340,7 +340,7 @@ spec:
 | 
			
		||||
              name: socket-dir
 | 
			
		||||
 | 
			
		||||
        - name: csi-resizer
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-resizer:v1.10.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-resizer:v1.11.1
 | 
			
		||||
          args:
 | 
			
		||||
            - -v=5
 | 
			
		||||
            - -csi-address=/csi/csi.sock
 | 
			
		||||
@@ -354,7 +354,7 @@ spec:
 | 
			
		||||
              name: socket-dir
 | 
			
		||||
 | 
			
		||||
        - name: csi-snapshotter
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-snapshotter:v7.0.1
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-snapshotter:v8.0.1
 | 
			
		||||
          args:
 | 
			
		||||
            - -v=5
 | 
			
		||||
            - --csi-address=/csi/csi.sock
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,7 @@ spec:
 | 
			
		||||
            topologyKey: kubernetes.io/hostname
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: socat
 | 
			
		||||
          image: registry.k8s.io/sig-storage/hostpathplugin:v1.13.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/hostpathplugin:v1.14.0
 | 
			
		||||
          command:
 | 
			
		||||
          - socat
 | 
			
		||||
          args:
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ spec:
 | 
			
		||||
      serviceAccountName: csi-mock
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: csi-attacher
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-attacher:v4.5.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-attacher:v4.6.1
 | 
			
		||||
          args:
 | 
			
		||||
            - --v=5
 | 
			
		||||
            - --csi-address=$(ADDRESS)
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ spec:
 | 
			
		||||
      serviceAccountName: csi-mock
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: csi-resizer
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-resizer:v1.10.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-resizer:v1.11.1
 | 
			
		||||
          args:
 | 
			
		||||
            - "--v=5"
 | 
			
		||||
            - "--csi-address=$(ADDRESS)"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ spec:
 | 
			
		||||
      serviceAccountName: csi-mock
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: csi-snapshotter
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-snapshotter:v7.0.1
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-snapshotter:v8.0.1
 | 
			
		||||
          args:
 | 
			
		||||
            - "--v=5"
 | 
			
		||||
            - "--csi-address=$(ADDRESS)"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ spec:
 | 
			
		||||
      serviceAccountName: csi-mock
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: csi-provisioner
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-provisioner:v4.0.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-provisioner:v5.0.1
 | 
			
		||||
          args:
 | 
			
		||||
            - "--csi-address=$(ADDRESS)"
 | 
			
		||||
            # Topology support is needed for the pod rescheduling test
 | 
			
		||||
@@ -34,7 +34,7 @@ spec:
 | 
			
		||||
            - mountPath: /csi
 | 
			
		||||
              name: socket-dir
 | 
			
		||||
        - name: driver-registrar
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.1
 | 
			
		||||
          args:
 | 
			
		||||
            - --v=5
 | 
			
		||||
            - --csi-address=/csi/csi.sock
 | 
			
		||||
@@ -53,7 +53,7 @@ spec:
 | 
			
		||||
          - mountPath: /registration
 | 
			
		||||
            name: registration-dir
 | 
			
		||||
        - name: mock
 | 
			
		||||
          image: registry.k8s.io/sig-storage/hostpathplugin:v1.13.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/hostpathplugin:v1.14.0
 | 
			
		||||
          args:
 | 
			
		||||
            - "--drivername=mock.storage.k8s.io"
 | 
			
		||||
            - "--nodeid=$(KUBE_NODE_NAME)"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ spec:
 | 
			
		||||
      serviceAccountName: csi-mock
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: csi-provisioner
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-provisioner:v4.0.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-provisioner:v5.0.1
 | 
			
		||||
          args:
 | 
			
		||||
            - "--csi-address=$(ADDRESS)"
 | 
			
		||||
            # Topology support is needed for the pod rescheduling test
 | 
			
		||||
@@ -35,7 +35,7 @@ spec:
 | 
			
		||||
            - mountPath: /csi
 | 
			
		||||
              name: socket-dir
 | 
			
		||||
        - name: driver-registrar
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.1
 | 
			
		||||
          args:
 | 
			
		||||
            - --v=5
 | 
			
		||||
            - --csi-address=/csi/csi.sock
 | 
			
		||||
@@ -53,7 +53,7 @@ spec:
 | 
			
		||||
          - mountPath: /registration
 | 
			
		||||
            name: registration-dir
 | 
			
		||||
        - name: mock
 | 
			
		||||
          image: registry.k8s.io/sig-storage/hostpathplugin:v1.13.0
 | 
			
		||||
          image: registry.k8s.io/sig-storage/hostpathplugin:v1.14.0
 | 
			
		||||
          args:
 | 
			
		||||
            - -v=5
 | 
			
		||||
            - -nodeid=$(KUBE_NODE_NAME)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user