@@ -26,19 +26,22 @@ import (
26
26
templateclient "github.com/openshift/origin/pkg/template/generated/internalclientset"
27
27
"k8s.io/apimachinery/pkg/api/meta"
28
28
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
29
+ "k8s.io/apimachinery/pkg/runtime/schema"
29
30
"k8s.io/apimachinery/pkg/util/wait"
30
31
"k8s.io/apiserver/pkg/admission"
31
32
"k8s.io/apiserver/pkg/admission/initializer"
33
+ webhookconfig "k8s.io/apiserver/pkg/admission/plugin/webhook/config"
34
+ webhookinitializer "k8s.io/apiserver/pkg/admission/plugin/webhook/initializer"
32
35
"k8s.io/apiserver/pkg/authorization/authorizer"
33
36
genericapiserver "k8s.io/apiserver/pkg/server"
34
37
"k8s.io/client-go/discovery"
35
38
cacheddiscovery "k8s.io/client-go/discovery/cached"
36
39
kexternalinformers "k8s.io/client-go/informers"
37
40
kubeclientgoinformers "k8s.io/client-go/informers"
38
- kclientsetexternal "k8s.io/client-go/kubernetes"
39
41
kubeclientgoclient "k8s.io/client-go/kubernetes"
40
42
"k8s.io/client-go/rest"
41
43
aggregatorapiserver "k8s.io/kube-aggregator/pkg/apiserver"
44
+ "k8s.io/kubernetes/pkg/api/legacyscheme"
42
45
kclientsetinternal "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
43
46
kinternalinformers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
44
47
kadmission "k8s.io/kubernetes/pkg/kubeapiserver/admission"
@@ -68,10 +71,6 @@ func NewPluginInitializer(
68
71
if err != nil {
69
72
return nil , nil , err
70
73
}
71
- kubeExternalClient , err := kclientsetexternal .NewForConfig (privilegedLoopbackConfig )
72
- if err != nil {
73
- return nil , nil , err
74
- }
75
74
kubeClientGoClientSet , err := kubeclientgoclient .NewForConfig (privilegedLoopbackConfig )
76
75
if err != nil {
77
76
return nil , nil , err
@@ -138,25 +137,30 @@ func NewPluginInitializer(
138
137
}
139
138
}
140
139
// note: we are passing a combined quota registry here...
141
- genericInitializer , err := initializer .New (kubeClientGoClientSet , informers .GetClientGoKubeInformers (), authorizer )
142
- if err != nil {
143
- return nil , nil , err
144
- }
140
+ genericInitializer := initializer .New (
141
+ kubeClientGoClientSet ,
142
+ informers .GetClientGoKubeInformers (),
143
+ authorizer ,
144
+ legacyscheme .Scheme ,
145
+ )
145
146
kubePluginInitializer := kadmission .NewPluginInitializer (
146
147
kubeInternalClient ,
147
- kubeExternalClient ,
148
148
informers .GetInternalKubeInformers (),
149
- authorizer ,
150
149
cloudConfig ,
151
150
restMapper ,
152
- quotaRegistry )
153
- // upstream broke this, so we can't use their mechanism. We need to get an actual client cert and practically speaking privileged loopback will always have one
154
- kubePluginInitializer .SetClientCert (privilegedLoopbackConfig .TLSClientConfig .CertData , privilegedLoopbackConfig .TLSClientConfig .KeyData )
155
- // this is a really problematic thing, because it breaks DNS resolution and IP routing, but its for an alpha feature that
156
- // I need to work cluster-up
157
- kubePluginInitializer .SetServiceResolver (aggregatorapiserver .NewClusterIPServiceResolver (
158
- informers .GetClientGoKubeInformers ().Core ().V1 ().Services ().Lister (),
159
- ))
151
+ generic .NewConfiguration (quotaRegistry .List (), map [schema.GroupResource ]struct {}{}))
152
+
153
+ webhookInitializer := webhookinitializer .NewPluginInitializer (
154
+ func (delegate webhookconfig.AuthenticationInfoResolver ) webhookconfig.AuthenticationInfoResolver {
155
+ return webhookconfig .AuthenticationInfoResolverFunc (func (server string ) (* rest.Config , error ) {
156
+ if server == "kubernetes.default.svc" {
157
+ return rest .CopyConfig (privilegedLoopbackConfig ), nil
158
+ }
159
+ return delegate .ClientConfigFor (server )
160
+ })
161
+ },
162
+ aggregatorapiserver .NewClusterIPServiceResolver (informers .GetClientGoKubeInformers ().Core ().V1 ().Services ().Lister ()),
163
+ )
160
164
161
165
openshiftPluginInitializer := & oadmission.PluginInitializer {
162
166
OpenshiftInternalAuthorizationClient : authorizationClient ,
@@ -178,7 +182,7 @@ func NewPluginInitializer(
178
182
UserInformers : informers .GetUserInformers (),
179
183
}
180
184
181
- return admission.PluginInitializers {genericInitializer , kubePluginInitializer , openshiftPluginInitializer },
185
+ return admission.PluginInitializers {genericInitializer , webhookInitializer , kubePluginInitializer , openshiftPluginInitializer },
182
186
func (context genericapiserver.PostStartHookContext ) error {
183
187
restMapper .Reset ()
184
188
go func () {
0 commit comments