Skip to content

Commit 254ba8a

Browse files
committed
IMPORTANT: admission wiring changes
1 parent 6d470a8 commit 254ba8a

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

pkg/cmd/server/origin/admission/chain_builder.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1212
"k8s.io/apimachinery/pkg/util/sets"
1313
"k8s.io/apiserver/pkg/admission"
14+
admissionmetrics "k8s.io/apiserver/pkg/admission/metrics"
1415
"k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle"
1516
noderestriction "k8s.io/kubernetes/plugin/pkg/admission/noderestriction"
1617
saadmit "k8s.io/kubernetes/plugin/pkg/admission/serviceaccount"
@@ -245,11 +246,12 @@ func newAdmissionChain(pluginNames []string, admissionConfigFilename string, opt
245246
admissionInitializer.Initialize(plugin)
246247

247248
default:
248-
pluginsConfigProvider, err := admission.ReadAdmissionConfiguration([]string{pluginName}, admissionConfigFilename)
249+
// TODO this needs to be refactored to use the admission scheme we created upstream. I think this holds us for the rebase.
250+
pluginsConfigProvider, err := admission.ReadAdmissionConfiguration([]string{pluginName}, admissionConfigFilename, configapi.Scheme)
249251
if err != nil {
250252
return nil, err
251253
}
252-
plugin, err = OriginAdmissionPlugins.NewFromPlugins([]string{pluginName}, pluginsConfigProvider, admissionInitializer)
254+
plugin, err = OriginAdmissionPlugins.NewFromPlugins([]string{pluginName}, pluginsConfigProvider, admissionInitializer, admissionmetrics.WithControllerMetrics)
253255
if err != nil {
254256
// should have been caught with validation
255257
return nil, err

pkg/cmd/server/origin/admission/plugin_initializer.go

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)