Skip to content

Commit

Permalink
Merge pull request #679 from deepakkinni/hon_pv_pol_extprov_v1
Browse files Browse the repository at this point in the history
external-provisioner changes to support PV Deletion protection finalizer
  • Loading branch information
k8s-ci-robot committed Nov 18, 2021
2 parents 06f0bf5 + fdf9e07 commit 61e5b2d
Show file tree
Hide file tree
Showing 19 changed files with 131 additions and 33 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Following table reflects the head of this branch.
| CSIMigration | Beta | On | [Migrating in-tree volume plugins to CSI](https://kubernetes.io/docs/concepts/storage/volumes/#csi-migration). | No |
| CSIStorageCapacity | Beta | On | Publish [capacity information](https://kubernetes.io/docs/concepts/storage/volumes/#storage-capacity) for the Kubernetes scheduler. | No |
| ReadWriteOncePod | Alpha | Off | [Single pod access mode for PersistentVolumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes). | No |
| HonorPVReclaimPolicy| Alpha |Off | [Honor the PV reclaim policy](https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/2644-honor-pv-reclaim-policy) | No

All other external-provisioner features and the external-provisioner itself is considered GA and fully supported.

Expand Down
7 changes: 6 additions & 1 deletion cmd/csi-provisioner/csi-provisioner.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
goflag "flag"
"fmt"
"github.com/kubernetes-csi/external-provisioner/pkg/features"
"math/rand"
"net/http"
"os"
Expand Down Expand Up @@ -50,7 +51,7 @@ import (
_ "k8s.io/component-base/metrics/prometheus/workqueue" // register work queues in the default legacy registry
csitrans "k8s.io/csi-translation-lib"
"k8s.io/klog/v2"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v7/controller"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v8/controller"

"github.com/kubernetes-csi/csi-lib-utils/leaderelection"
"github.com/kubernetes-csi/csi-lib-utils/metrics"
Expand Down Expand Up @@ -359,6 +360,10 @@ func main() {
controller.NodesLister(nodeLister),
}

if utilfeature.DefaultFeatureGate.Enabled(features.HonorPVReclaimPolicy) {
provisionerOptions = append(provisionerOptions, controller.AddFinalizer(true))
}

if supportsMigrationFromInTreePluginName != "" {
provisionerOptions = append(provisionerOptions, controller.AdditionalProvisionerNames([]string{supportsMigrationFromInTreePluginName}))
}
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,5 @@ require (
k8s.io/csi-translation-lib v0.22.0
k8s.io/klog/v2 v2.9.0
sigs.k8s.io/controller-runtime v0.8.3
sigs.k8s.io/sig-storage-lib-external-provisioner/v7 v7.0.1
sigs.k8s.io/sig-storage-lib-external-provisioner/v8 v8.0.0
)
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -982,8 +982,8 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyz
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg=
sigs.k8s.io/controller-runtime v0.8.3 h1:GMHvzjTmaWHQB8HadW+dIvBoJuLvZObYJ5YoZruPRao=
sigs.k8s.io/controller-runtime v0.8.3/go.mod h1:U/l+DUopBc1ecfRZ5aviA9JDmGFQKvLf5YkZNx2e0sU=
sigs.k8s.io/sig-storage-lib-external-provisioner/v7 v7.0.1 h1:V7VpIENtPECffT1exDwS4IvxnsaZGpXByzJwIwA6wRM=
sigs.k8s.io/sig-storage-lib-external-provisioner/v7 v7.0.1/go.mod h1:kWYdKvf1O/T6AunX35p5KulJQd3tLpCXpBGevfNpoV8=
sigs.k8s.io/sig-storage-lib-external-provisioner/v8 v8.0.0 h1:vQUoaDxbberC3UwvE+zauyOMkpWlleaVgc75LoDOyy4=
sigs.k8s.io/sig-storage-lib-external-provisioner/v8 v8.0.0/go.mod h1:ejoxC3K6lnUtjUanKStWadRVnwIuyRPNJGQ4dkExDao=
sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno=
Expand Down
2 changes: 1 addition & 1 deletion pkg/capacity/provision.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import (
"context"

v1 "k8s.io/api/core/v1"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v7/controller"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v8/controller"
)

type provisionWrapper struct {
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/clone_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
"k8s.io/klog/v2"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v7/controller"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v8/controller"
)

//
Expand Down
4 changes: 2 additions & 2 deletions pkg/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ import (
"k8s.io/client-go/tools/record"
"k8s.io/client-go/util/workqueue"
"k8s.io/klog/v2"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v7/controller"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v7/util"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v8/controller"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v8/util"

"github.com/kubernetes-csi/csi-lib-utils/connection"
"github.com/kubernetes-csi/csi-lib-utils/metrics"
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ import (
utilfeaturetesting "k8s.io/component-base/featuregate/testing"
csitrans "k8s.io/csi-translation-lib"
"k8s.io/klog/v2"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v7/controller"
"sigs.k8s.io/sig-storage-lib-external-provisioner/v8/controller"

"github.com/kubernetes-csi/csi-lib-utils/connection"
"github.com/kubernetes-csi/csi-lib-utils/metrics"
Expand Down
11 changes: 10 additions & 1 deletion pkg/features/features.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,14 @@ const (
// alpha: v0.4
// beta: v1.2
Topology featuregate.Feature = "Topology"

// owner: @deepakkinni @xing-yang
// kep: http://kep.k8s.io/2680
// alpha: v1.23
//
// Honor Persistent Volume Reclaim Policy when it is "Delete" irrespective of PV-PVC
// deletion ordering.
HonorPVReclaimPolicy featuregate.Feature = "HonorPVReclaimPolicy"
)

func init() {
Expand All @@ -35,5 +43,6 @@ func init() {
// defaultKubernetesFeatureGates consists of all known feature keys specific to external-provisioner.
// To add a new feature, define a key for it above and add it here.
var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
Topology: {Default: false, PreRelease: featuregate.GA},
Topology: {Default: false, PreRelease: featuregate.GA},
HonorPVReclaimPolicy: {Default: false, PreRelease: featuregate.Alpha},
}
8 changes: 4 additions & 4 deletions vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -650,11 +650,11 @@ sigs.k8s.io/controller-runtime/pkg/client
sigs.k8s.io/controller-runtime/pkg/client/apiutil
sigs.k8s.io/controller-runtime/pkg/client/fake
sigs.k8s.io/controller-runtime/pkg/internal/objectutil
# sigs.k8s.io/sig-storage-lib-external-provisioner/v7 v7.0.1
# sigs.k8s.io/sig-storage-lib-external-provisioner/v8 v8.0.0
## explicit
sigs.k8s.io/sig-storage-lib-external-provisioner/v7/controller
sigs.k8s.io/sig-storage-lib-external-provisioner/v7/controller/metrics
sigs.k8s.io/sig-storage-lib-external-provisioner/v7/util
sigs.k8s.io/sig-storage-lib-external-provisioner/v8/controller
sigs.k8s.io/sig-storage-lib-external-provisioner/v8/controller/metrics
sigs.k8s.io/sig-storage-lib-external-provisioner/v8/util
# sigs.k8s.io/structured-merge-diff/v4 v4.1.2
sigs.k8s.io/structured-merge-diff/v4/fieldpath
sigs.k8s.io/structured-merge-diff/v4/schema
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 61e5b2d

Please sign in to comment.