@@ -36,6 +36,7 @@ import (
36
36
corev1 "k8s.io/api/core/v1"
37
37
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
38
38
policyv1beta1 "k8s.io/api/policy/v1beta1"
39
+ apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
39
40
"k8s.io/apimachinery/pkg/api/errors"
40
41
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
41
42
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -46,9 +47,11 @@ import (
46
47
"k8s.io/apimachinery/pkg/util/wait"
47
48
dynamic "k8s.io/client-go/dynamic"
48
49
clientset "k8s.io/client-go/kubernetes"
50
+ "k8s.io/client-go/rest"
49
51
"k8s.io/client-go/util/retry"
50
- "k8s.io/kubernetes/cmd/kube-apiserver/app/options "
52
+ kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing "
51
53
"k8s.io/kubernetes/test/integration/etcd"
54
+ "k8s.io/kubernetes/test/integration/framework"
52
55
)
53
56
54
57
const (
@@ -323,25 +326,23 @@ func TestWebhookV1beta1(t *testing.T) {
323
326
defer webhookServer .Close ()
324
327
325
328
// start API server
326
- master := etcd .StartRealMasterOrDie (t , func (opts * options.ServerRunOptions ) {
327
- // turn off admission plugins that add finalizers
328
- opts .Admission .GenericAdmission .DisablePlugins = []string {"ServiceAccount" , "StorageObjectInUseProtection" }
329
-
330
- // force enable all resources so we can check storage.
331
- // TODO: drop these once we stop allowing them to be served.
332
- opts .APIEnablement .RuntimeConfig ["extensions/v1beta1/deployments" ] = "true"
333
- opts .APIEnablement .RuntimeConfig ["extensions/v1beta1/daemonsets" ] = "true"
334
- opts .APIEnablement .RuntimeConfig ["extensions/v1beta1/replicasets" ] = "true"
335
- opts .APIEnablement .RuntimeConfig ["extensions/v1beta1/podsecuritypolicies" ] = "true"
336
- opts .APIEnablement .RuntimeConfig ["extensions/v1beta1/networkpolicies" ] = "true"
337
- })
338
- defer master .Cleanup ()
329
+ s , err := kubeapiservertesting .StartTestServer (t , kubeapiservertesting .NewDefaultTestServerOptions (), []string {
330
+ "--disable-admission-plugins=ServiceAccount,StorageObjectInUseProtection" ,
331
+ "--runtime-config=extensions/v1beta1/deployments=true,extensions/v1beta1/daemonsets=true,extensions/v1beta1/replicasets=true,extensions/v1beta1/podsecuritypolicies=true,extensions/v1beta1/networkpolicies=true" ,
332
+ }, framework .SharedEtcd ())
333
+ if err != nil {
334
+ t .Fatal (err )
335
+ }
336
+ defer s .TearDownFn ()
337
+
338
+ // create CRDs so we can make sure that custom resources do not get lost
339
+ etcd .CreateTestCRDs (t , apiextensionsclientset .NewForConfigOrDie (s .ClientConfig ), false , etcd .GetCustomResourceDefinitionData ()... )
339
340
340
341
// Configure a client with a distinct user name so that it is easy to distinguish requests
341
342
// made by the client from requests made by controllers. We use this to filter out requests
342
343
// before recording them to ensure we don't accidentally mistake requests from controllers
343
344
// as requests made by the client.
344
- clientConfig := master . Config
345
+ clientConfig := rest . CopyConfig ( s . ClientConfig )
345
346
clientConfig .Impersonate .UserName = testClientUsername
346
347
clientConfig .Impersonate .Groups = []string {"system:masters" , "system:authenticated" }
347
348
client , err := clientset .NewForConfig (clientConfig )
0 commit comments