@@ -26,19 +26,22 @@ import (
2626 templateclient "github.com/openshift/origin/pkg/template/generated/internalclientset"
2727 "k8s.io/apimachinery/pkg/api/meta"
2828 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
29+ "k8s.io/apimachinery/pkg/runtime/schema"
2930 "k8s.io/apimachinery/pkg/util/wait"
3031 "k8s.io/apiserver/pkg/admission"
3132 "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"
3235 "k8s.io/apiserver/pkg/authorization/authorizer"
3336 genericapiserver "k8s.io/apiserver/pkg/server"
3437 "k8s.io/client-go/discovery"
3538 cacheddiscovery "k8s.io/client-go/discovery/cached"
3639 kexternalinformers "k8s.io/client-go/informers"
3740 kubeclientgoinformers "k8s.io/client-go/informers"
38- kclientsetexternal "k8s.io/client-go/kubernetes"
3941 kubeclientgoclient "k8s.io/client-go/kubernetes"
4042 "k8s.io/client-go/rest"
4143 aggregatorapiserver "k8s.io/kube-aggregator/pkg/apiserver"
44+ "k8s.io/kubernetes/pkg/api/legacyscheme"
4245 kclientsetinternal "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
4346 kinternalinformers "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion"
4447 kadmission "k8s.io/kubernetes/pkg/kubeapiserver/admission"
@@ -68,10 +71,6 @@ func NewPluginInitializer(
6871 if err != nil {
6972 return nil , nil , err
7073 }
71- kubeExternalClient , err := kclientsetexternal .NewForConfig (privilegedLoopbackConfig )
72- if err != nil {
73- return nil , nil , err
74- }
7574 kubeClientGoClientSet , err := kubeclientgoclient .NewForConfig (privilegedLoopbackConfig )
7675 if err != nil {
7776 return nil , nil , err
@@ -138,25 +137,30 @@ func NewPluginInitializer(
138137 }
139138 }
140139 // 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+ )
145146 kubePluginInitializer := kadmission .NewPluginInitializer (
146147 kubeInternalClient ,
147- kubeExternalClient ,
148148 informers .GetInternalKubeInformers (),
149- authorizer ,
150149 cloudConfig ,
151150 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+ )
160164
161165 openshiftPluginInitializer := & oadmission.PluginInitializer {
162166 OpenshiftInternalAuthorizationClient : authorizationClient ,
@@ -178,7 +182,7 @@ func NewPluginInitializer(
178182 UserInformers : informers .GetUserInformers (),
179183 }
180184
181- return admission.PluginInitializers {genericInitializer , kubePluginInitializer , openshiftPluginInitializer },
185+ return admission.PluginInitializers {genericInitializer , webhookInitializer , kubePluginInitializer , openshiftPluginInitializer },
182186 func (context genericapiserver.PostStartHookContext ) error {
183187 restMapper .Reset ()
184188 go func () {
0 commit comments