From 63ddfc1db918440d8d8aa8665fc0fe2111ea72ec Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Fri, 3 May 2019 14:21:34 -0400 Subject: [PATCH] Lock GCERegionalPersistentDisk feature on --- pkg/cloudprovider/providers/gce/BUILD | 2 - pkg/cloudprovider/providers/gce/gce_disks.go | 62 +++++--------------- pkg/features/kube_features.go | 2 +- pkg/volume/gcepd/BUILD | 1 - pkg/volume/gcepd/gce_util.go | 7 --- 5 files changed, 15 insertions(+), 59 deletions(-) diff --git a/pkg/cloudprovider/providers/gce/BUILD b/pkg/cloudprovider/providers/gce/BUILD index 8875dd9b93e..322255092c2 100644 --- a/pkg/cloudprovider/providers/gce/BUILD +++ b/pkg/cloudprovider/providers/gce/BUILD @@ -52,7 +52,6 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/client-go/informers:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", @@ -62,7 +61,6 @@ go_library( "//staging/src/k8s.io/client-go/tools/record:go_default_library", "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library", "//staging/src/k8s.io/cloud-provider:go_default_library", - "//staging/src/k8s.io/cloud-provider/features:go_default_library", "//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library", "//staging/src/k8s.io/cloud-provider/volume:go_default_library", "//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library", diff --git a/pkg/cloudprovider/providers/gce/gce_disks.go b/pkg/cloudprovider/providers/gce/gce_disks.go index 1503409044e..9cc2918464b 100644 --- a/pkg/cloudprovider/providers/gce/gce_disks.go +++ b/pkg/cloudprovider/providers/gce/gce_disks.go @@ -37,8 +37,6 @@ import ( "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta" compute "google.golang.org/api/compute/v1" "google.golang.org/api/googleapi" - utilfeature "k8s.io/apiserver/pkg/util/feature" - cloudfeatures "k8s.io/cloud-provider/features" "k8s.io/klog" ) @@ -146,10 +144,6 @@ func (manager *gceServiceManager) CreateRegionalDiskOnCloudProvider( diskType string, replicaZones sets.String) error { - if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk) - } - diskTypeURI, err := manager.getDiskTypeURI( manager.gce.region /* diskRegion */, multiZone{replicaZones}, diskType) if err != nil { @@ -247,10 +241,6 @@ func (manager *gceServiceManager) GetDiskFromCloudProvider( func (manager *gceServiceManager) GetRegionalDiskFromCloudProvider( diskName string) (*Disk, error) { - if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - return nil, fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk) - } - ctx, cancel := cloud.ContextWithCallTimeout() defer cancel() diskBeta, err := manager.gce.c.RegionDisks().Get(ctx, meta.RegionalKey(diskName, manager.gce.region)) @@ -284,10 +274,6 @@ func (manager *gceServiceManager) DeleteDiskOnCloudProvider( func (manager *gceServiceManager) DeleteRegionalDiskOnCloudProvider( diskName string) error { - if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk) - } - ctx, cancel := cloud.ContextWithCallTimeout() defer cancel() return manager.gce.c.RegionDisks().Delete(ctx, meta.RegionalKey(diskName, manager.gce.region)) @@ -411,9 +397,6 @@ func (manager *gceServiceManager) ResizeDiskOnCloudProvider(disk *Disk, sizeGb i } func (manager *gceServiceManager) RegionalResizeDiskOnCloudProvider(disk *Disk, sizeGb int64) error { - if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk) - } resizeServiceRequest := &compute.RegionDisksResizeRequest{ SizeGb: sizeGb, @@ -532,7 +515,7 @@ func (g *Cloud) AttachDisk(diskName string, nodeName types.NodeName, readOnly bo // Try fetching as regional PD var disk *Disk var mc *metricContext - if regional && utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { + if regional { disk, err = g.getRegionalDiskByName(diskName) if err != nil { return err @@ -768,10 +751,6 @@ func (g *Cloud) ResizeDisk(diskToResize string, oldSize resource.Quantity, newSi } return newSizeQuant, mc.Observe(err) case multiZone: - if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - return oldSize, fmt.Errorf("disk.ZoneInfo has unexpected type %T", zoneInfo) - } - mc = newDiskMetricContextRegional("resize", disk.Region) err := g.manager.RegionalResizeDiskOnCloudProvider(disk, requestGIB) @@ -811,26 +790,19 @@ func (g *Cloud) GetAutoLabelsForPD(name string, zone string) (map[string]string, // We could assume the disks exists; we have all the information we need // However it is more consistent to ensure the disk exists, // and in future we may gather addition information (e.g. disk type, IOPS etc) - if utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - zoneSet, err := volumehelpers.LabelZonesToSet(zone) - if err != nil { - klog.Warningf("Failed to parse zone field: %q. Will use raw field.", zone) - } + zoneSet, err := volumehelpers.LabelZonesToSet(zone) + if err != nil { + klog.Warningf("Failed to parse zone field: %q. Will use raw field.", zone) + } - if len(zoneSet) > 1 { - // Regional PD - disk, err = g.getRegionalDiskByName(name) - if err != nil { - return nil, err - } - } else { - // Zonal PD - disk, err = g.getDiskByName(name, zone) - if err != nil { - return nil, err - } + if len(zoneSet) > 1 { + // Regional PD + disk, err = g.getRegionalDiskByName(name) + if err != nil { + return nil, err } } else { + // Zonal PD disk, err = g.getDiskByName(name, zone) if err != nil { return nil, err @@ -916,11 +888,9 @@ func (g *Cloud) getRegionalDiskByName(diskName string) (*Disk, error) { // Prefer getDiskByName, if the zone can be established // Return cloudprovider.DiskNotFound if the given disk cannot be found in any zone func (g *Cloud) GetDiskByNameUnknownZone(diskName string) (*Disk, error) { - if utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - regionalDisk, err := g.getRegionalDiskByName(diskName) - if err == nil { - return regionalDisk, err - } + regionalDisk, err := g.getRegionalDiskByName(diskName) + if err == nil { + return regionalDisk, err } // Note: this is the gotcha right now with GCE PD support: @@ -996,10 +966,6 @@ func (g *Cloud) doDeleteDisk(diskToDelete string) error { mc = newDiskMetricContextZonal("delete", disk.Region, zoneInfo.zone) return mc.Observe(g.manager.DeleteDiskOnCloudProvider(zoneInfo.zone, disk.Name)) case multiZone: - if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - return fmt.Errorf("disk.ZoneInfo has unexpected type %T", zoneInfo) - } - mc = newDiskMetricContextRegional("delete", disk.Region) return mc.Observe(g.manager.DeleteRegionalDiskOnCloudProvider(disk.Name)) case nil: diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 0482a42cc5f..47c2a656d2b 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -486,7 +486,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS TokenRequestProjection: {Default: true, PreRelease: utilfeature.Beta}, BoundServiceAccountTokenVolume: {Default: false, PreRelease: utilfeature.Alpha}, CRIContainerLogRotation: {Default: true, PreRelease: utilfeature.Beta}, - cloudfeatures.GCERegionalPersistentDisk: {Default: true, PreRelease: utilfeature.GA}, + cloudfeatures.GCERegionalPersistentDisk: {Default: true, PreRelease: utilfeature.GA, LockToDefault: true}, // remove in 1.17 CSIMigration: {Default: false, PreRelease: utilfeature.Alpha}, CSIMigrationGCE: {Default: false, PreRelease: utilfeature.Alpha}, CSIMigrationAWS: {Default: false, PreRelease: utilfeature.Alpha}, diff --git a/pkg/volume/gcepd/BUILD b/pkg/volume/gcepd/BUILD index cd4489dc075..892ee6cacaa 100644 --- a/pkg/volume/gcepd/BUILD +++ b/pkg/volume/gcepd/BUILD @@ -30,7 +30,6 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/cloud-provider:go_default_library", - "//staging/src/k8s.io/cloud-provider/features:go_default_library", "//staging/src/k8s.io/cloud-provider/volume:go_default_library", "//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library", "//vendor/k8s.io/klog:go_default_library", diff --git a/pkg/volume/gcepd/gce_util.go b/pkg/volume/gcepd/gce_util.go index d7f9249508f..dd3b129aeb6 100644 --- a/pkg/volume/gcepd/gce_util.go +++ b/pkg/volume/gcepd/gce_util.go @@ -25,9 +25,7 @@ import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/sets" - utilfeature "k8s.io/apiserver/pkg/util/feature" cloudprovider "k8s.io/cloud-provider" - cloudfeatures "k8s.io/cloud-provider/features" cloudvolume "k8s.io/cloud-provider/volume" volumehelpers "k8s.io/cloud-provider/volume/helpers" "k8s.io/klog" @@ -127,11 +125,6 @@ func (util *GCEDiskUtil) CreateVolume(c *gcePersistentDiskProvisioner, node *v1. return "", 0, nil, "", err } case "replication-type": - if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) { - return "", 0, nil, "", - fmt.Errorf("the %q option for volume plugin %v is only supported with the %q Kubernetes feature gate enabled", - k, c.plugin.GetPluginName(), cloudfeatures.GCERegionalPersistentDisk) - } replicationType = strings.ToLower(v) case volume.VolumeParameterFSType: fstype = v