diff --git a/glide.lock b/glide.lock
index 3788fa83dbc08005d61a8a4a0b3b0af6109cca08..5c27f4f37e05a538768d7ec1a9c50292b90e3b0c 100644
--- a/glide.lock
+++ b/glide.lock
@@ -1,12 +1,12 @@
-hash: ef128b88161cdea558e5ae947d38936e5cd85fad0aea0aac07a8e47465921875
-updated: 2017-09-19T21:17:26.399597032-04:00
+hash: c93b7bb90a59a66ebfa93614b4d3bc73a46d973db4fcc5212ab1b9da8261132c
+updated: 2017-09-20T20:27:26.578282752-04:00
 imports:
 - name: cloud.google.com/go
-  version: 38a7def97ebdc2c74a198a4252b7f273fc216929
+  version: 6914032ea644de194c5f05cc04124f111396531c
   subpackages:
   - compute/metadata
 - name: github.com/aws/aws-sdk-go
-  version: 9924c83c280264fb32f34cc5095204c451bedf0c
+  version: d76e48be81c125ffb3d030020b66d64731d2b9d0
   subpackages:
   - aws
   - aws/awserr
@@ -371,7 +371,7 @@ imports:
   - storage/v1
   - storage/v1beta1
 - name: k8s.io/apiextensions-apiserver
-  version: 2bfb07d318ed549813240d1165fcebad6250c666
+  version: be41f5093e2b05c7a0befe35b04b715eb325ab43
   subpackages:
   - pkg/apis/apiextensions
   - pkg/apis/apiextensions/v1beta1
@@ -436,7 +436,7 @@ imports:
   - third_party/forked/golang/netutil
   - third_party/forked/golang/reflect
 - name: k8s.io/apiserver
-  version: 26ddb013b915693f5d5cf98c7a17b6b5c85a0ad3
+  version: 149fc2228647cea28b0670c240ec582e985e8eda
   subpackages:
   - pkg/authentication/authenticator
   - pkg/authentication/serviceaccount
diff --git a/glide.yaml b/glide.yaml
index f3fabcf2f4123d49c0f49c42d5e889c3d5413cd6..356c66a3455837fcc83066324764887418b7ce12 100644
--- a/glide.yaml
+++ b/glide.yaml
@@ -13,6 +13,10 @@ import:
 - package: github.com/guelfey/go.dbus
 - package: github.com/mitchellh/mapstructure
   version: db1efb5
+- package: k8s.io/apiserver
+  version: 149fc2228647cea28b0670c240ec582e985e8eda
+- package: k8s.io/apiextensions-apiserver
+  version: be41f5093e2b05c7a0befe35b04b715eb325ab43
 - package: k8s.io/apimachinery
   version: 728b986edb9bd4bb8a022a8cc13573a97ecc2239
 - package: k8s.io/client-go
diff --git a/test.sh b/test.sh
index 6a060bae83d62d9520bd77ff232e2b820624d150..8eb74c8f66eb6fe9bbc0f6d0358b2bfdeb6e204e 100755
--- a/test.sh
+++ b/test.sh
@@ -92,6 +92,7 @@ elif [ "$TEST_SUITE" = "everything-else" ]; then
 	make iscsi/targetd
 	make test-iscsi/targetd
 	make nfs-client
+	make snapshot
 elif [ "$TEST_SUITE" = "local-volume" ]; then
 	make local-volume/provisioner
 	make test-local-volume/provisioner
diff --git a/vendor/github.com/aws/aws-sdk-go/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go/CHANGELOG.md
index f5685625188a67c68f09dd64c4fbdd2540dcea18..ef243177f8ab56495b5029771b24f6a93cc71b09 100644
--- a/vendor/github.com/aws/aws-sdk-go/CHANGELOG.md
+++ b/vendor/github.com/aws/aws-sdk-go/CHANGELOG.md
@@ -1,3 +1,15 @@
+Release v1.10.48 (2017-09-19)
+===
+
+### Service Client Updates
+* `service/ec2`: Updates service API
+  * Fixed bug in EC2 clients preventing ElasticGpuSet from being set.
+
+### SDK Enhancements
+* `aws/credentials`: Add EnvProviderName constant. ([#1531](https://github.com/aws/aws-sdk-go/issues/1531))
+  * Adds the "EnvConfigCredentials" string literal as EnvProviderName constant.
+  * Fixes [#1444](https://github.com/aws/aws-sdk-go/issues/1444)
+
 Release v1.10.47 (2017-09-18)
 ===
 
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go b/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
index 4b102f8f2062a4e520d51f6039d83ca53cd8a766..f1adcf4819829316b47eb8278a4b31ae74db686e 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
@@ -7,6 +7,9 @@ import (
 	"github.com/aws/aws-sdk-go/aws/credentials"
 )
 
+// EnvProviderName provides a name of the provider when config is loaded from environment.
+const EnvProviderName = "EnvConfigCredentials"
+
 // envConfig is a collection of environment values the SDK will read
 // setup config from. All environment values are optional. But some values
 // such as credentials require multiple values to be complete or the values
@@ -157,7 +160,7 @@ func envConfigLoad(enableSharedConfig bool) envConfig {
 	if len(cfg.Creds.AccessKeyID) == 0 || len(cfg.Creds.SecretAccessKey) == 0 {
 		cfg.Creds = credentials.Value{}
 	} else {
-		cfg.Creds.ProviderName = "EnvConfigCredentials"
+		cfg.Creds.ProviderName = EnvProviderName
 	}
 
 	regionKeys := regionEnvKeys
diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go
index 0f1f2d583289a5aca83c831291c66c091f8f8ff6..403f55605d8338b378c1f15582ba2629452a4a94 100644
--- a/vendor/github.com/aws/aws-sdk-go/aws/version.go
+++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go
@@ -5,4 +5,4 @@ package aws
 const SDKName = "aws-sdk-go"
 
 // SDKVersion is the version of this SDK
-const SDKVersion = "1.10.47"
+const SDKVersion = "1.10.48"
diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
index 8a7785cdc67c8b7e3ebdc15e639399f039ceee96..ccb14369a909cdc72b0b02ff7119297ff457f3a9 100644
--- a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
+++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go
@@ -29983,7 +29983,7 @@ type DescribeElasticGpusOutput struct {
 	_ struct{} `type:"structure"`
 
 	// Information about the Elastic GPUs.
-	ElasticGpuSet []*ElasticGpus `locationName:"elasticGpuSet" type:"list"`
+	ElasticGpuSet []*ElasticGpus `locationName:"elasticGpuSet" locationNameList:"item" type:"list"`
 
 	// The total number of items to return. If the total number of items available
 	// is more than the value specified in max-items then a Next-Token will be provided
diff --git a/vendor/k8s.io/apiextensions-apiserver/BUILD b/vendor/k8s.io/apiextensions-apiserver/BUILD
index b52477d47a1ff2f9ffebfda04ed832795920f8c8..98351c5348bef707048044add31b85a0a1dd5085 100644
--- a/vendor/k8s.io/apiextensions-apiserver/BUILD
+++ b/vendor/k8s.io/apiextensions-apiserver/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_binary",
@@ -9,45 +11,16 @@ load(
 go_binary(
     name = "apiextensions-apiserver",
     library = ":go_default_library",
+    tags = ["automanaged"],
 )
 
 go_library(
     name = "go_default_library",
     srcs = ["main.go"],
+    tags = ["automanaged"],
     deps = [
-        "//vendor/github.com/golang/glog:go_default_library",
         "//vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server:go_default_library",
-        "//vendor/k8s.io/apiserver/pkg/server:go_default_library",
+        "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
         "//vendor/k8s.io/apiserver/pkg/util/logs:go_default_library",
     ],
 )
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [
-        ":package-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/examples/client-go:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/informers/internalversion:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/internalversion:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/finalizer:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/controller/status:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresource:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/test/integration:all-srcs",
-    ],
-    tags = ["automanaged"],
-)
diff --git a/vendor/k8s.io/apiextensions-apiserver/kubernetes-sha b/vendor/k8s.io/apiextensions-apiserver/kubernetes-sha
new file mode 100644
index 0000000000000000000000000000000000000000..e8400497c58cf19dbb95d04a72143889f074f9d2
--- /dev/null
+++ b/vendor/k8s.io/apiextensions-apiserver/kubernetes-sha
@@ -0,0 +1 @@
+9ee991837c2ba22becee1fb324deb81de3327903
diff --git a/vendor/k8s.io/apiextensions-apiserver/main.go b/vendor/k8s.io/apiextensions-apiserver/main.go
index 7723e651356fd04ee50d2b12916b5fde88cc64d7..5244c496f960eff360ad35897e0ef9a2a314ac8f 100644
--- a/vendor/k8s.io/apiextensions-apiserver/main.go
+++ b/vendor/k8s.io/apiextensions-apiserver/main.go
@@ -21,10 +21,8 @@ import (
 	"os"
 	"runtime"
 
-	"github.com/golang/glog"
-
 	"k8s.io/apiextensions-apiserver/pkg/cmd/server"
-	genericapiserver "k8s.io/apiserver/pkg/server"
+	"k8s.io/apimachinery/pkg/util/wait"
 	"k8s.io/apiserver/pkg/util/logs"
 )
 
@@ -36,10 +34,9 @@ func main() {
 		runtime.GOMAXPROCS(runtime.NumCPU())
 	}
 
-	stopCh := genericapiserver.SetupSignalHandler()
-	cmd := server.NewCommandStartCustomResourceDefinitionsServer(os.Stdout, os.Stderr, stopCh)
+	cmd := server.NewCommandStartCustomResourceDefinitionsServer(os.Stdout, os.Stderr, wait.NeverStop)
 	cmd.Flags().AddGoFlagSet(flag.CommandLine)
 	if err := cmd.Execute(); err != nil {
-		glog.Fatal(err)
+		panic(err)
 	}
 }
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD
index 64088c8a1b02fb82c47a3da01826006766f36471..c424286b114a51f1b673e9e7572c205ff5b91d50 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -15,6 +17,7 @@ go_library(
         "types.go",
         "zz_generated.deepcopy.go",
     ],
+    tags = ["automanaged"],
     deps = [
         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
         "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
@@ -27,24 +30,6 @@ go_test(
     name = "go_default_test",
     srcs = ["helpers_test.go"],
     library = ":go_default_library",
-    deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"],
-)
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [
-        ":package-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation:all-srcs",
-    ],
     tags = ["automanaged"],
+    deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"],
 )
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go
index 59240fbd008e86b855d5d3260f9600cb398b8029..55c3bfad46daad400c2e7f7a9c130f908e3c29b5 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types.go
@@ -113,9 +113,8 @@ type CustomResourceDefinitionStatus struct {
 // a CustomResourceDefinition
 const CustomResourceCleanupFinalizer = "customresourcecleanup.apiextensions.k8s.io"
 
-// +genclient
-// +genclient:nonNamespaced
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+// +genclient=true
+// +nonNamespaced=true
 
 // CustomResourceDefinition represents a resource that should be exposed on the API server.  Its name MUST be in the format
 // <.spec.name>.<.spec.group>.
@@ -129,8 +128,6 @@ type CustomResourceDefinition struct {
 	Status CustomResourceDefinitionStatus
 }
 
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
 // CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
 type CustomResourceDefinitionList struct {
 	metav1.TypeMeta
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/BUILD
index 60b91ad1f23b6dbe7a5a4a6740a3b8a8f4030d47..9a0c5380dee6b528a44242324b51a6e8631d3574 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/BUILD
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -17,6 +19,7 @@ go_library(
         "zz_generated.deepcopy.go",
         "zz_generated.defaults.go",
     ],
+    tags = ["automanaged"],
     deps = [
         "//vendor/github.com/gogo/protobuf/proto:go_default_library",
         "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
@@ -26,22 +29,3 @@ go_library(
         "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
     ],
 )
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [":package-srcs"],
-    tags = ["automanaged"],
-)
-
-filegroup(
-    name = "go_default_library_protos",
-    srcs = ["generated.proto"],
-    visibility = ["//visibility:public"],
-)
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go
index 75b4106507270ba3f8952d35df20da3b152adc80..a9a93c37f9f97f7a169d81ed0350512b85a0644b 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go
@@ -113,9 +113,8 @@ type CustomResourceDefinitionStatus struct {
 // a CustomResourceDefinition
 const CustomResourceCleanupFinalizer = "customresourcecleanup.apiextensions.k8s.io"
 
-// +genclient
-// +genclient:nonNamespaced
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+// +genclient=true
+// +nonNamespaced=true
 
 // CustomResourceDefinition represents a resource that should be exposed on the API server.  Its name MUST be in the format
 // <.spec.name>.<.spec.group>.
@@ -129,8 +128,6 @@ type CustomResourceDefinition struct {
 	Status CustomResourceDefinitionStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
 }
 
-// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
-
 // CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
 type CustomResourceDefinitionList struct {
 	metav1.TypeMeta `json:",inline"`
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go
index cb19f35d7c7a07d6df772e78241ae7a090a89f56..15b1255a3d8a29af57e31d2737006a7a0927f448 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go
@@ -123,7 +123,11 @@ func Convert_v1beta1_CustomResourceDefinitionList_To_apiextensions_CustomResourc
 
 func autoConvert_apiextensions_CustomResourceDefinitionList_To_v1beta1_CustomResourceDefinitionList(in *apiextensions.CustomResourceDefinitionList, out *CustomResourceDefinitionList, s conversion.Scope) error {
 	out.ListMeta = in.ListMeta
-	out.Items = *(*[]CustomResourceDefinition)(unsafe.Pointer(&in.Items))
+	if in.Items == nil {
+		out.Items = make([]CustomResourceDefinition, 0)
+	} else {
+		out.Items = *(*[]CustomResourceDefinition)(unsafe.Pointer(&in.Items))
+	}
 	return nil
 }
 
@@ -204,7 +208,11 @@ func Convert_v1beta1_CustomResourceDefinitionStatus_To_apiextensions_CustomResou
 }
 
 func autoConvert_apiextensions_CustomResourceDefinitionStatus_To_v1beta1_CustomResourceDefinitionStatus(in *apiextensions.CustomResourceDefinitionStatus, out *CustomResourceDefinitionStatus, s conversion.Scope) error {
-	out.Conditions = *(*[]CustomResourceDefinitionCondition)(unsafe.Pointer(&in.Conditions))
+	if in.Conditions == nil {
+		out.Conditions = make([]CustomResourceDefinitionCondition, 0)
+	} else {
+		out.Conditions = *(*[]CustomResourceDefinitionCondition)(unsafe.Pointer(&in.Conditions))
+	}
 	if err := Convert_apiextensions_CustomResourceDefinitionNames_To_v1beta1_CustomResourceDefinitionNames(&in.AcceptedNames, &out.AcceptedNames, s); err != nil {
 		return err
 	}
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
index 31feff62d660b1e3bbee9a4533572bc5f10e188e..5291372c3406af5355344b92d5b21deff72ff3a9 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go
@@ -21,6 +21,7 @@ limitations under the License.
 package v1beta1
 
 import (
+	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	conversion "k8s.io/apimachinery/pkg/conversion"
 	runtime "k8s.io/apimachinery/pkg/runtime"
 	reflect "reflect"
@@ -32,175 +33,126 @@ func init() {
 
 // RegisterDeepCopies adds deep-copy functions to the given scheme. Public
 // to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
 func RegisterDeepCopies(scheme *runtime.Scheme) error {
 	return scheme.AddGeneratedDeepCopyFuncs(
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinition).DeepCopyInto(out.(*CustomResourceDefinition))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinition{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionCondition).DeepCopyInto(out.(*CustomResourceDefinitionCondition))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionList).DeepCopyInto(out.(*CustomResourceDefinitionList))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionList{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionNames).DeepCopyInto(out.(*CustomResourceDefinitionNames))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionSpec).DeepCopyInto(out.(*CustomResourceDefinitionSpec))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionStatus).DeepCopyInto(out.(*CustomResourceDefinitionStatus))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinition, InType: reflect.TypeOf(&CustomResourceDefinition{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionCondition, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionList, InType: reflect.TypeOf(&CustomResourceDefinitionList{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionNames, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionSpec, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomResourceDefinitionStatus, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})},
 	)
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinition) DeepCopyInto(out *CustomResourceDefinition) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	in.Status.DeepCopyInto(&out.Status)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinition.
-func (in *CustomResourceDefinition) DeepCopy() *CustomResourceDefinition {
-	if in == nil {
-		return nil
-	}
-	out := new(CustomResourceDefinition)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *CustomResourceDefinition) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	} else {
+// DeepCopy_v1beta1_CustomResourceDefinition is an autogenerated deepcopy function.
+func DeepCopy_v1beta1_CustomResourceDefinition(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinition)
+		out := out.(*CustomResourceDefinition)
+		*out = *in
+		if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil {
+			return err
+		} else {
+			out.ObjectMeta = *newVal.(*v1.ObjectMeta)
+		}
+		if newVal, err := c.DeepCopy(&in.Spec); err != nil {
+			return err
+		} else {
+			out.Spec = *newVal.(*CustomResourceDefinitionSpec)
+		}
+		if newVal, err := c.DeepCopy(&in.Status); err != nil {
+			return err
+		} else {
+			out.Status = *newVal.(*CustomResourceDefinitionStatus)
+		}
 		return nil
 	}
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionCondition) DeepCopyInto(out *CustomResourceDefinitionCondition) {
-	*out = *in
-	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionCondition.
-func (in *CustomResourceDefinitionCondition) DeepCopy() *CustomResourceDefinitionCondition {
-	if in == nil {
+// DeepCopy_v1beta1_CustomResourceDefinitionCondition is an autogenerated deepcopy function.
+func DeepCopy_v1beta1_CustomResourceDefinitionCondition(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionCondition)
+		out := out.(*CustomResourceDefinitionCondition)
+		*out = *in
+		out.LastTransitionTime = in.LastTransitionTime.DeepCopy()
 		return nil
 	}
-	out := new(CustomResourceDefinitionCondition)
-	in.DeepCopyInto(out)
-	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionList) DeepCopyInto(out *CustomResourceDefinitionList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	out.ListMeta = in.ListMeta
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]CustomResourceDefinition, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
+// DeepCopy_v1beta1_CustomResourceDefinitionList is an autogenerated deepcopy function.
+func DeepCopy_v1beta1_CustomResourceDefinitionList(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionList)
+		out := out.(*CustomResourceDefinitionList)
+		*out = *in
+		if in.Items != nil {
+			in, out := &in.Items, &out.Items
+			*out = make([]CustomResourceDefinition, len(*in))
+			for i := range *in {
+				if newVal, err := c.DeepCopy(&(*in)[i]); err != nil {
+					return err
+				} else {
+					(*out)[i] = *newVal.(*CustomResourceDefinition)
+				}
+			}
 		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionList.
-func (in *CustomResourceDefinitionList) DeepCopy() *CustomResourceDefinitionList {
-	if in == nil {
 		return nil
 	}
-	out := new(CustomResourceDefinitionList)
-	in.DeepCopyInto(out)
-	return out
 }
 
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *CustomResourceDefinitionList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	} else {
-		return nil
-	}
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionNames) DeepCopyInto(out *CustomResourceDefinitionNames) {
-	*out = *in
-	if in.ShortNames != nil {
-		in, out := &in.ShortNames, &out.ShortNames
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionNames.
-func (in *CustomResourceDefinitionNames) DeepCopy() *CustomResourceDefinitionNames {
-	if in == nil {
+// DeepCopy_v1beta1_CustomResourceDefinitionNames is an autogenerated deepcopy function.
+func DeepCopy_v1beta1_CustomResourceDefinitionNames(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionNames)
+		out := out.(*CustomResourceDefinitionNames)
+		*out = *in
+		if in.ShortNames != nil {
+			in, out := &in.ShortNames, &out.ShortNames
+			*out = make([]string, len(*in))
+			copy(*out, *in)
+		}
 		return nil
 	}
-	out := new(CustomResourceDefinitionNames)
-	in.DeepCopyInto(out)
-	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionSpec) DeepCopyInto(out *CustomResourceDefinitionSpec) {
-	*out = *in
-	in.Names.DeepCopyInto(&out.Names)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionSpec.
-func (in *CustomResourceDefinitionSpec) DeepCopy() *CustomResourceDefinitionSpec {
-	if in == nil {
+// DeepCopy_v1beta1_CustomResourceDefinitionSpec is an autogenerated deepcopy function.
+func DeepCopy_v1beta1_CustomResourceDefinitionSpec(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionSpec)
+		out := out.(*CustomResourceDefinitionSpec)
+		*out = *in
+		if newVal, err := c.DeepCopy(&in.Names); err != nil {
+			return err
+		} else {
+			out.Names = *newVal.(*CustomResourceDefinitionNames)
+		}
 		return nil
 	}
-	out := new(CustomResourceDefinitionSpec)
-	in.DeepCopyInto(out)
-	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionStatus) DeepCopyInto(out *CustomResourceDefinitionStatus) {
-	*out = *in
-	if in.Conditions != nil {
-		in, out := &in.Conditions, &out.Conditions
-		*out = make([]CustomResourceDefinitionCondition, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
+// DeepCopy_v1beta1_CustomResourceDefinitionStatus is an autogenerated deepcopy function.
+func DeepCopy_v1beta1_CustomResourceDefinitionStatus(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionStatus)
+		out := out.(*CustomResourceDefinitionStatus)
+		*out = *in
+		if in.Conditions != nil {
+			in, out := &in.Conditions, &out.Conditions
+			*out = make([]CustomResourceDefinitionCondition, len(*in))
+			for i := range *in {
+				if newVal, err := c.DeepCopy(&(*in)[i]); err != nil {
+					return err
+				} else {
+					(*out)[i] = *newVal.(*CustomResourceDefinitionCondition)
+				}
+			}
+		}
+		if newVal, err := c.DeepCopy(&in.AcceptedNames); err != nil {
+			return err
+		} else {
+			out.AcceptedNames = *newVal.(*CustomResourceDefinitionNames)
 		}
-	}
-	in.AcceptedNames.DeepCopyInto(&out.AcceptedNames)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionStatus.
-func (in *CustomResourceDefinitionStatus) DeepCopy() *CustomResourceDefinitionStatus {
-	if in == nil {
 		return nil
 	}
-	out := new(CustomResourceDefinitionStatus)
-	in.DeepCopyInto(out)
-	return out
 }
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
index a6e55d4084dd6662c876eba901f0a51d7bad3bc6..5d8b38d1881d17b282a5695ba678c9196821bede 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go
@@ -21,6 +21,7 @@ limitations under the License.
 package apiextensions
 
 import (
+	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	conversion "k8s.io/apimachinery/pkg/conversion"
 	runtime "k8s.io/apimachinery/pkg/runtime"
 	reflect "reflect"
@@ -32,175 +33,126 @@ func init() {
 
 // RegisterDeepCopies adds deep-copy functions to the given scheme. Public
 // to allow building arbitrary schemes.
-//
-// Deprecated: deepcopy registration will go away when static deepcopy is fully implemented.
 func RegisterDeepCopies(scheme *runtime.Scheme) error {
 	return scheme.AddGeneratedDeepCopyFuncs(
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinition).DeepCopyInto(out.(*CustomResourceDefinition))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinition{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionCondition).DeepCopyInto(out.(*CustomResourceDefinitionCondition))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionList).DeepCopyInto(out.(*CustomResourceDefinitionList))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionList{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionNames).DeepCopyInto(out.(*CustomResourceDefinitionNames))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionSpec).DeepCopyInto(out.(*CustomResourceDefinitionSpec))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})},
-		conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error {
-			in.(*CustomResourceDefinitionStatus).DeepCopyInto(out.(*CustomResourceDefinitionStatus))
-			return nil
-		}, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinition, InType: reflect.TypeOf(&CustomResourceDefinition{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionCondition, InType: reflect.TypeOf(&CustomResourceDefinitionCondition{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionList, InType: reflect.TypeOf(&CustomResourceDefinitionList{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionNames, InType: reflect.TypeOf(&CustomResourceDefinitionNames{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionSpec, InType: reflect.TypeOf(&CustomResourceDefinitionSpec{})},
+		conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apiextensions_CustomResourceDefinitionStatus, InType: reflect.TypeOf(&CustomResourceDefinitionStatus{})},
 	)
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinition) DeepCopyInto(out *CustomResourceDefinition) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
-	in.Spec.DeepCopyInto(&out.Spec)
-	in.Status.DeepCopyInto(&out.Status)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinition.
-func (in *CustomResourceDefinition) DeepCopy() *CustomResourceDefinition {
-	if in == nil {
-		return nil
-	}
-	out := new(CustomResourceDefinition)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *CustomResourceDefinition) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	} else {
+// DeepCopy_apiextensions_CustomResourceDefinition is an autogenerated deepcopy function.
+func DeepCopy_apiextensions_CustomResourceDefinition(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinition)
+		out := out.(*CustomResourceDefinition)
+		*out = *in
+		if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil {
+			return err
+		} else {
+			out.ObjectMeta = *newVal.(*v1.ObjectMeta)
+		}
+		if newVal, err := c.DeepCopy(&in.Spec); err != nil {
+			return err
+		} else {
+			out.Spec = *newVal.(*CustomResourceDefinitionSpec)
+		}
+		if newVal, err := c.DeepCopy(&in.Status); err != nil {
+			return err
+		} else {
+			out.Status = *newVal.(*CustomResourceDefinitionStatus)
+		}
 		return nil
 	}
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionCondition) DeepCopyInto(out *CustomResourceDefinitionCondition) {
-	*out = *in
-	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionCondition.
-func (in *CustomResourceDefinitionCondition) DeepCopy() *CustomResourceDefinitionCondition {
-	if in == nil {
+// DeepCopy_apiextensions_CustomResourceDefinitionCondition is an autogenerated deepcopy function.
+func DeepCopy_apiextensions_CustomResourceDefinitionCondition(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionCondition)
+		out := out.(*CustomResourceDefinitionCondition)
+		*out = *in
+		out.LastTransitionTime = in.LastTransitionTime.DeepCopy()
 		return nil
 	}
-	out := new(CustomResourceDefinitionCondition)
-	in.DeepCopyInto(out)
-	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionList) DeepCopyInto(out *CustomResourceDefinitionList) {
-	*out = *in
-	out.TypeMeta = in.TypeMeta
-	out.ListMeta = in.ListMeta
-	if in.Items != nil {
-		in, out := &in.Items, &out.Items
-		*out = make([]CustomResourceDefinition, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
+// DeepCopy_apiextensions_CustomResourceDefinitionList is an autogenerated deepcopy function.
+func DeepCopy_apiextensions_CustomResourceDefinitionList(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionList)
+		out := out.(*CustomResourceDefinitionList)
+		*out = *in
+		if in.Items != nil {
+			in, out := &in.Items, &out.Items
+			*out = make([]CustomResourceDefinition, len(*in))
+			for i := range *in {
+				if newVal, err := c.DeepCopy(&(*in)[i]); err != nil {
+					return err
+				} else {
+					(*out)[i] = *newVal.(*CustomResourceDefinition)
+				}
+			}
 		}
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionList.
-func (in *CustomResourceDefinitionList) DeepCopy() *CustomResourceDefinitionList {
-	if in == nil {
 		return nil
 	}
-	out := new(CustomResourceDefinitionList)
-	in.DeepCopyInto(out)
-	return out
 }
 
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *CustomResourceDefinitionList) DeepCopyObject() runtime.Object {
-	if c := in.DeepCopy(); c != nil {
-		return c
-	} else {
-		return nil
-	}
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionNames) DeepCopyInto(out *CustomResourceDefinitionNames) {
-	*out = *in
-	if in.ShortNames != nil {
-		in, out := &in.ShortNames, &out.ShortNames
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionNames.
-func (in *CustomResourceDefinitionNames) DeepCopy() *CustomResourceDefinitionNames {
-	if in == nil {
+// DeepCopy_apiextensions_CustomResourceDefinitionNames is an autogenerated deepcopy function.
+func DeepCopy_apiextensions_CustomResourceDefinitionNames(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionNames)
+		out := out.(*CustomResourceDefinitionNames)
+		*out = *in
+		if in.ShortNames != nil {
+			in, out := &in.ShortNames, &out.ShortNames
+			*out = make([]string, len(*in))
+			copy(*out, *in)
+		}
 		return nil
 	}
-	out := new(CustomResourceDefinitionNames)
-	in.DeepCopyInto(out)
-	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionSpec) DeepCopyInto(out *CustomResourceDefinitionSpec) {
-	*out = *in
-	in.Names.DeepCopyInto(&out.Names)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionSpec.
-func (in *CustomResourceDefinitionSpec) DeepCopy() *CustomResourceDefinitionSpec {
-	if in == nil {
+// DeepCopy_apiextensions_CustomResourceDefinitionSpec is an autogenerated deepcopy function.
+func DeepCopy_apiextensions_CustomResourceDefinitionSpec(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionSpec)
+		out := out.(*CustomResourceDefinitionSpec)
+		*out = *in
+		if newVal, err := c.DeepCopy(&in.Names); err != nil {
+			return err
+		} else {
+			out.Names = *newVal.(*CustomResourceDefinitionNames)
+		}
 		return nil
 	}
-	out := new(CustomResourceDefinitionSpec)
-	in.DeepCopyInto(out)
-	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *CustomResourceDefinitionStatus) DeepCopyInto(out *CustomResourceDefinitionStatus) {
-	*out = *in
-	if in.Conditions != nil {
-		in, out := &in.Conditions, &out.Conditions
-		*out = make([]CustomResourceDefinitionCondition, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
+// DeepCopy_apiextensions_CustomResourceDefinitionStatus is an autogenerated deepcopy function.
+func DeepCopy_apiextensions_CustomResourceDefinitionStatus(in interface{}, out interface{}, c *conversion.Cloner) error {
+	{
+		in := in.(*CustomResourceDefinitionStatus)
+		out := out.(*CustomResourceDefinitionStatus)
+		*out = *in
+		if in.Conditions != nil {
+			in, out := &in.Conditions, &out.Conditions
+			*out = make([]CustomResourceDefinitionCondition, len(*in))
+			for i := range *in {
+				if newVal, err := c.DeepCopy(&(*in)[i]); err != nil {
+					return err
+				} else {
+					(*out)[i] = *newVal.(*CustomResourceDefinitionCondition)
+				}
+			}
+		}
+		if newVal, err := c.DeepCopy(&in.AcceptedNames); err != nil {
+			return err
+		} else {
+			out.AcceptedNames = *newVal.(*CustomResourceDefinitionNames)
 		}
-	}
-	in.AcceptedNames.DeepCopyInto(&out.AcceptedNames)
-	return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomResourceDefinitionStatus.
-func (in *CustomResourceDefinitionStatus) DeepCopy() *CustomResourceDefinitionStatus {
-	if in == nil {
 		return nil
 	}
-	out := new(CustomResourceDefinitionStatus)
-	in.DeepCopyInto(out)
-	return out
 }
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/BUILD
index 494522755ca3869dd7d1d3d1117457d5f23a08a8..506e1f80d4f2898f338366198589198b1571ae65 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/BUILD
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -11,6 +13,7 @@ go_library(
         "clientset.go",
         "doc.go",
     ],
+    tags = ["automanaged"],
     deps = [
         "//vendor/github.com/golang/glog:go_default_library",
         "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1:go_default_library",
@@ -19,21 +22,3 @@ go_library(
         "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
     ],
 )
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [
-        ":package-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme:all-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1:all-srcs",
-    ],
-    tags = ["automanaged"],
-)
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go
index bae98c78bf354ab4c9f44a4928659c962f21229c..634e79a71117bee4e19d02315c4d697ebe8415c3 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/clientset.go
@@ -35,18 +35,24 @@ type Interface interface {
 // version included in a Clientset.
 type Clientset struct {
 	*discovery.DiscoveryClient
-	apiextensionsV1beta1 *apiextensionsv1beta1.ApiextensionsV1beta1Client
+	*apiextensionsv1beta1.ApiextensionsV1beta1Client
 }
 
 // ApiextensionsV1beta1 retrieves the ApiextensionsV1beta1Client
 func (c *Clientset) ApiextensionsV1beta1() apiextensionsv1beta1.ApiextensionsV1beta1Interface {
-	return c.apiextensionsV1beta1
+	if c == nil {
+		return nil
+	}
+	return c.ApiextensionsV1beta1Client
 }
 
 // Deprecated: Apiextensions retrieves the default version of ApiextensionsClient.
 // Please explicitly pick a version.
 func (c *Clientset) Apiextensions() apiextensionsv1beta1.ApiextensionsV1beta1Interface {
-	return c.apiextensionsV1beta1
+	if c == nil {
+		return nil
+	}
+	return c.ApiextensionsV1beta1Client
 }
 
 // Discovery retrieves the DiscoveryClient
@@ -65,7 +71,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
 	}
 	var cs Clientset
 	var err error
-	cs.apiextensionsV1beta1, err = apiextensionsv1beta1.NewForConfig(&configShallowCopy)
+	cs.ApiextensionsV1beta1Client, err = apiextensionsv1beta1.NewForConfig(&configShallowCopy)
 	if err != nil {
 		return nil, err
 	}
@@ -82,7 +88,7 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
 // panics if there is an error in the config.
 func NewForConfigOrDie(c *rest.Config) *Clientset {
 	var cs Clientset
-	cs.apiextensionsV1beta1 = apiextensionsv1beta1.NewForConfigOrDie(c)
+	cs.ApiextensionsV1beta1Client = apiextensionsv1beta1.NewForConfigOrDie(c)
 
 	cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c)
 	return &cs
@@ -91,7 +97,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset {
 // New creates a new Clientset for the given RESTClient.
 func New(c rest.Interface) *Clientset {
 	var cs Clientset
-	cs.apiextensionsV1beta1 = apiextensionsv1beta1.New(c)
+	cs.ApiextensionsV1beta1Client = apiextensionsv1beta1.New(c)
 
 	cs.DiscoveryClient = discovery.NewDiscoveryClient(c)
 	return &cs
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/BUILD
index c37ee3f5c0a27ed9216c9e02cbbc6f0b1b190b8f..bac733cbc97d70400fdb02bcd9a3d641e94d5a14 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/BUILD
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -11,6 +13,7 @@ go_library(
         "doc.go",
         "register.go",
     ],
+    tags = ["automanaged"],
     deps = [
         "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
         "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@@ -19,16 +22,3 @@ go_library(
         "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
     ],
 )
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [":package-srcs"],
-    tags = ["automanaged"],
-)
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/BUILD b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/BUILD
index 3cb4e1f6219bac563301099cfa267aacab3a7bc5..074d54e3abdca49c7dfe192fd0bca7c53b54fa7a 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/BUILD
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -13,6 +15,7 @@ go_library(
         "doc.go",
         "generated_expansion.go",
     ],
+    tags = ["automanaged"],
     deps = [
         "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
         "//vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme:go_default_library",
@@ -23,19 +26,3 @@ go_library(
         "//vendor/k8s.io/client-go/rest:go_default_library",
     ],
 )
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [
-        ":package-srcs",
-        "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/fake:all-srcs",
-    ],
-    tags = ["automanaged"],
-)
diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go
index 73238715b48ffd7a05212d01987dd56cb23cc10b..bfc11155d6d691924ba8f37b9c4e46901b3bff91 100644
--- a/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go
+++ b/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1/customresourcedefinition.go
@@ -57,38 +57,6 @@ func newCustomResourceDefinitions(c *ApiextensionsV1beta1Client) *customResource
 	}
 }
 
-// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any.
-func (c *customResourceDefinitions) Get(name string, options v1.GetOptions) (result *v1beta1.CustomResourceDefinition, err error) {
-	result = &v1beta1.CustomResourceDefinition{}
-	err = c.client.Get().
-		Resource("customresourcedefinitions").
-		Name(name).
-		VersionedParams(&options, scheme.ParameterCodec).
-		Do().
-		Into(result)
-	return
-}
-
-// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors.
-func (c *customResourceDefinitions) List(opts v1.ListOptions) (result *v1beta1.CustomResourceDefinitionList, err error) {
-	result = &v1beta1.CustomResourceDefinitionList{}
-	err = c.client.Get().
-		Resource("customresourcedefinitions").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Do().
-		Into(result)
-	return
-}
-
-// Watch returns a watch.Interface that watches the requested customResourceDefinitions.
-func (c *customResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) {
-	opts.Watch = true
-	return c.client.Get().
-		Resource("customresourcedefinitions").
-		VersionedParams(&opts, scheme.ParameterCodec).
-		Watch()
-}
-
 // Create takes the representation of a customResourceDefinition and creates it.  Returns the server's representation of the customResourceDefinition, and an error, if there is any.
 func (c *customResourceDefinitions) Create(customResourceDefinition *v1beta1.CustomResourceDefinition) (result *v1beta1.CustomResourceDefinition, err error) {
 	result = &v1beta1.CustomResourceDefinition{}
@@ -113,7 +81,7 @@ func (c *customResourceDefinitions) Update(customResourceDefinition *v1beta1.Cus
 }
 
 // UpdateStatus was generated because the type contains a Status member.
-// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
+// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus().
 
 func (c *customResourceDefinitions) UpdateStatus(customResourceDefinition *v1beta1.CustomResourceDefinition) (result *v1beta1.CustomResourceDefinition, err error) {
 	result = &v1beta1.CustomResourceDefinition{}
@@ -147,6 +115,38 @@ func (c *customResourceDefinitions) DeleteCollection(options *v1.DeleteOptions,
 		Error()
 }
 
+// Get takes name of the customResourceDefinition, and returns the corresponding customResourceDefinition object, and an error if there is any.
+func (c *customResourceDefinitions) Get(name string, options v1.GetOptions) (result *v1beta1.CustomResourceDefinition, err error) {
+	result = &v1beta1.CustomResourceDefinition{}
+	err = c.client.Get().
+		Resource("customresourcedefinitions").
+		Name(name).
+		VersionedParams(&options, scheme.ParameterCodec).
+		Do().
+		Into(result)
+	return
+}
+
+// List takes label and field selectors, and returns the list of CustomResourceDefinitions that match those selectors.
+func (c *customResourceDefinitions) List(opts v1.ListOptions) (result *v1beta1.CustomResourceDefinitionList, err error) {
+	result = &v1beta1.CustomResourceDefinitionList{}
+	err = c.client.Get().
+		Resource("customresourcedefinitions").
+		VersionedParams(&opts, scheme.ParameterCodec).
+		Do().
+		Into(result)
+	return
+}
+
+// Watch returns a watch.Interface that watches the requested customResourceDefinitions.
+func (c *customResourceDefinitions) Watch(opts v1.ListOptions) (watch.Interface, error) {
+	opts.Watch = true
+	return c.client.Get().
+		Resource("customresourcedefinitions").
+		VersionedParams(&opts, scheme.ParameterCodec).
+		Watch()
+}
+
 // Patch applies the patch and returns the patched customResourceDefinition.
 func (c *customResourceDefinitions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CustomResourceDefinition, err error) {
 	result = &v1beta1.CustomResourceDefinition{}
diff --git a/vendor/k8s.io/apiserver/OWNERS b/vendor/k8s.io/apiserver/OWNERS
index 52f250446a3b725fc6dd967477a0a05ab028c03a..e4525fc6b7f961c0c099e2acb2bf3553c9f9118a 100644
--- a/vendor/k8s.io/apiserver/OWNERS
+++ b/vendor/k8s.io/apiserver/OWNERS
@@ -15,4 +15,3 @@ reviewers:
 - ncdc
 - tallclair
 - timothysc
-- enj
diff --git a/vendor/k8s.io/apiserver/kubernetes-sha b/vendor/k8s.io/apiserver/kubernetes-sha
new file mode 100644
index 0000000000000000000000000000000000000000..189bb060837a3fa0e5377402fc9a3dfc8f92d05e
--- /dev/null
+++ b/vendor/k8s.io/apiserver/kubernetes-sha
@@ -0,0 +1 @@
+68a32c06b4d69970ac2489ff5177d5703ca604cd
diff --git a/vendor/k8s.io/apiserver/pkg/authentication/authenticator/BUILD b/vendor/k8s.io/apiserver/pkg/authentication/authenticator/BUILD
index e49523f29989c457a0bff6b8a24e055595031b8e..8992032af664870e651d51361011cecc22bb9e2b 100644
--- a/vendor/k8s.io/apiserver/pkg/authentication/authenticator/BUILD
+++ b/vendor/k8s.io/apiserver/pkg/authentication/authenticator/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -8,18 +10,6 @@ load(
 go_library(
     name = "go_default_library",
     srcs = ["interfaces.go"],
-    deps = ["//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library"],
-)
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [":package-srcs"],
     tags = ["automanaged"],
+    deps = ["//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library"],
 )
diff --git a/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/BUILD b/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/BUILD
index 9f63af9e36ac4ba12613562387df54da20806fb3..16b3099d9513cea3fbe24478781006dfa29fc5af 100644
--- a/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/BUILD
+++ b/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -10,23 +12,12 @@ go_test(
     name = "go_default_test",
     srcs = ["util_test.go"],
     library = ":go_default_library",
+    tags = ["automanaged"],
 )
 
 go_library(
     name = "go_default_library",
     srcs = ["util.go"],
-    deps = ["//vendor/k8s.io/apimachinery/pkg/api/validation:go_default_library"],
-)
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [":package-srcs"],
     tags = ["automanaged"],
+    deps = ["//vendor/k8s.io/apimachinery/pkg/api/validation:go_default_library"],
 )
diff --git a/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/util.go b/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/util.go
index 1b7bbc1390d0f34b77edf1e1679968daec6767aa..ac3c252b7515d08579a740fedd204d55a72a7964 100644
--- a/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/util.go
+++ b/vendor/k8s.io/apiserver/pkg/authentication/serviceaccount/util.go
@@ -59,8 +59,8 @@ func SplitUsername(username string) (string, string, error) {
 	return namespace, name, nil
 }
 
-// MakeGroupNames generates service account group names for the given namespace
-func MakeGroupNames(namespace string) []string {
+// MakeGroupNames generates service account group names for the given namespace and ServiceAccount name
+func MakeGroupNames(namespace, name string) []string {
 	return []string{
 		AllServiceAccountsGroup,
 		MakeNamespaceGroupName(namespace),
diff --git a/vendor/k8s.io/apiserver/pkg/authentication/user/BUILD b/vendor/k8s.io/apiserver/pkg/authentication/user/BUILD
index 8f8d940ea824845df9d9ccba85b7b81be44c82de..37a3bbe2f8b476915b1ec7030c27f5b161043521 100644
--- a/vendor/k8s.io/apiserver/pkg/authentication/user/BUILD
+++ b/vendor/k8s.io/apiserver/pkg/authentication/user/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -11,17 +13,5 @@ go_library(
         "doc.go",
         "user.go",
     ],
-)
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [":package-srcs"],
     tags = ["automanaged"],
 )
diff --git a/vendor/k8s.io/apiserver/pkg/features/BUILD b/vendor/k8s.io/apiserver/pkg/features/BUILD
index 3b415effc454d87d66b1c3dc714f7bf3758697af..f097bff2d479604c10692af7537071f3dbe6c8c1 100644
--- a/vendor/k8s.io/apiserver/pkg/features/BUILD
+++ b/vendor/k8s.io/apiserver/pkg/features/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -8,18 +10,6 @@ load(
 go_library(
     name = "go_default_library",
     srcs = ["kube_features.go"],
-    deps = ["//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library"],
-)
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [":package-srcs"],
     tags = ["automanaged"],
+    deps = ["//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library"],
 )
diff --git a/vendor/k8s.io/apiserver/pkg/util/feature/BUILD b/vendor/k8s.io/apiserver/pkg/util/feature/BUILD
index 582bf86bd58b4a0d4ca332b15458ee76cea0736b..9df71ad1fdbb69bf0abd7e9b3ffefa05ce0a1b95 100644
--- a/vendor/k8s.io/apiserver/pkg/util/feature/BUILD
+++ b/vendor/k8s.io/apiserver/pkg/util/feature/BUILD
@@ -1,5 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
+licenses(["notice"])
+
 load(
     "@io_bazel_rules_go//go:def.bzl",
     "go_library",
@@ -10,27 +12,16 @@ go_test(
     name = "go_default_test",
     srcs = ["feature_gate_test.go"],
     library = ":go_default_library",
+    tags = ["automanaged"],
     deps = ["//vendor/github.com/spf13/pflag:go_default_library"],
 )
 
 go_library(
     name = "go_default_library",
     srcs = ["feature_gate.go"],
+    tags = ["automanaged"],
     deps = [
         "//vendor/github.com/golang/glog:go_default_library",
         "//vendor/github.com/spf13/pflag:go_default_library",
     ],
 )
-
-filegroup(
-    name = "package-srcs",
-    srcs = glob(["**"]),
-    tags = ["automanaged"],
-    visibility = ["//visibility:private"],
-)
-
-filegroup(
-    name = "all-srcs",
-    srcs = [":package-srcs"],
-    tags = ["automanaged"],
-)
diff --git a/vendor/k8s.io/apiserver/pkg/util/feature/feature_gate.go b/vendor/k8s.io/apiserver/pkg/util/feature/feature_gate.go
index 9cfde35909b3d8e3729d3ac0eacd5232b867cd81..e7226688c9b25aa2668dcb2f04e490ecc1f6a43c 100644
--- a/vendor/k8s.io/apiserver/pkg/util/feature/feature_gate.go
+++ b/vendor/k8s.io/apiserver/pkg/util/feature/feature_gate.go
@@ -70,16 +70,10 @@ const (
 // FeatureGate parses and stores flag gates for known features from
 // a string like feature1=true,feature2=false,...
 type FeatureGate interface {
-	// AddFlag adds a flag for setting global feature gates to the specified FlagSet.
 	AddFlag(fs *pflag.FlagSet)
-	// Set parses and stores flag gates for known features
-	// from a string like feature1=true,feature2=false,...
 	Set(value string) error
-	// Enabled returns true if the key is enabled.
 	Enabled(key Feature) bool
-	// Add adds features to the featureGate.
 	Add(features map[Feature]FeatureSpec) error
-	// KnownFeatures returns a slice of strings describing the FeatureGate's known features.
 	KnownFeatures() []string
 }
 
@@ -118,7 +112,7 @@ func NewFeatureGate() *featureGate {
 	return f
 }
 
-// Set Parses a string of the form "key1=value1,key2=value2,..." into a
+// Set Parses a string of the form // "key1=value1,key2=value2,..." into a
 // map[string]bool of known keys or returns an error.
 func (f *featureGate) Set(value string) error {
 	for _, s := range strings.Split(value, ",") {
@@ -151,7 +145,6 @@ func (f *featureGate) Set(value string) error {
 	return nil
 }
 
-// String returns a string containing all enabled feature gates, formatted as "key1=value1,key2=value2,...".
 func (f *featureGate) String() string {
 	pairs := []string{}
 	for k, v := range f.enabled {
@@ -165,7 +158,6 @@ func (f *featureGate) Type() string {
 	return "mapStringBool"
 }
 
-// Add adds features to the featureGate.
 func (f *featureGate) Add(features map[Feature]FeatureSpec) error {
 	if f.closed {
 		return fmt.Errorf("cannot add a feature gate after adding it to the flag set")
@@ -184,7 +176,6 @@ func (f *featureGate) Add(features map[Feature]FeatureSpec) error {
 	return nil
 }
 
-// Enabled returns true if the key is enabled.
 func (f *featureGate) Enabled(key Feature) bool {
 	defaultValue := f.known[key].Default
 	if f.enabled != nil {
@@ -205,7 +196,7 @@ func (f *featureGate) AddFlag(fs *pflag.FlagSet) {
 		"Options are:\n"+strings.Join(known, "\n"))
 }
 
-// KnownFeatures returns a slice of strings describing the FeatureGate's known features.
+// Returns a string describing the FeatureGate's known features.
 func (f *featureGate) KnownFeatures() []string {
 	var known []string
 	for k, v := range f.known {