Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
63f547e1
Commit
63f547e1
authored
Mar 27, 2017
by
Dr. Stefan Schimanski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pkg/admission: make plugin registry non-global
parent
750d5c3b
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
124 additions
and
59 deletions
+124
-59
BUILD
cmd/kube-apiserver/app/options/BUILD
+1
-0
options.go
cmd/kube-apiserver/app/options/options.go
+2
-1
server.go
cmd/kube-apiserver/app/server.go
+10
-5
BUILD
federation/cmd/federation-apiserver/app/options/BUILD
+1
-0
options.go
federation/cmd/federation-apiserver/app/options/options.go
+2
-1
server.go
federation/cmd/federation-apiserver/app/server.go
+1
-1
BUILD
pkg/kubeapiserver/admission/BUILD
+4
-1
registry.go
pkg/kubeapiserver/admission/registry.go
+24
-0
BUILD
plugin/pkg/admission/admit/BUILD
+4
-1
admission.go
plugin/pkg/admission/admit/admission.go
+2
-1
BUILD
plugin/pkg/admission/alwayspullimages/BUILD
+1
-0
admission.go
plugin/pkg/admission/alwayspullimages/admission.go
+2
-1
BUILD
plugin/pkg/admission/antiaffinity/BUILD
+1
-0
admission.go
plugin/pkg/admission/antiaffinity/admission.go
+2
-1
BUILD
plugin/pkg/admission/defaulttolerationseconds/BUILD
+1
-0
admission.go
plugin/pkg/admission/defaulttolerationseconds/admission.go
+2
-1
BUILD
plugin/pkg/admission/deny/BUILD
+4
-1
admission.go
plugin/pkg/admission/deny/admission.go
+2
-1
admission.go
plugin/pkg/admission/exec/admission.go
+2
-2
BUILD
plugin/pkg/admission/gc/BUILD
+1
-0
gc_admission.go
plugin/pkg/admission/gc/gc_admission.go
+2
-1
BUILD
plugin/pkg/admission/imagepolicy/BUILD
+1
-0
admission.go
plugin/pkg/admission/imagepolicy/admission.go
+2
-1
BUILD
plugin/pkg/admission/initialresources/BUILD
+1
-0
admission.go
plugin/pkg/admission/initialresources/admission.go
+2
-1
admission.go
plugin/pkg/admission/limitranger/admission.go
+1
-1
admission.go
plugin/pkg/admission/namespace/autoprovision/admission.go
+1
-1
admission.go
plugin/pkg/admission/namespace/exists/admission.go
+1
-1
admission.go
plugin/pkg/admission/namespace/lifecycle/admission.go
+1
-1
admission.go
plugin/pkg/admission/persistentvolume/label/admission.go
+1
-1
admission.go
plugin/pkg/admission/podnodeselector/admission.go
+1
-1
admission.go
plugin/pkg/admission/podpreset/admission.go
+1
-1
admission.go
plugin/pkg/admission/podtolerationrestriction/admission.go
+1
-1
admission.go
plugin/pkg/admission/resourcequota/admission.go
+1
-1
admission.go
plugin/pkg/admission/security/podsecuritypolicy/admission.go
+1
-1
BUILD
plugin/pkg/admission/securitycontext/scdeny/BUILD
+1
-0
admission.go
plugin/pkg/admission/securitycontext/scdeny/admission.go
+2
-1
admission.go
plugin/pkg/admission/serviceaccount/admission.go
+1
-1
admission.go
plugin/pkg/admission/storageclass/default/admission.go
+1
-1
plugins.go
staging/src/k8s.io/apiserver/pkg/admission/plugins.go
+27
-22
server_run_options.go
...k8s.io/apiserver/pkg/server/options/server_run_options.go
+5
-3
No files found.
cmd/kube-apiserver/app/options/BUILD
View file @
63f547e1
...
...
@@ -19,6 +19,7 @@ go_library(
"//pkg/api:go_default_library",
"//pkg/api/validation:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//pkg/kubeapiserver/options:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/master/ports:go_default_library",
...
...
cmd/kube-apiserver/app/options/options.go
View file @
63f547e1
...
...
@@ -26,6 +26,7 @@ import (
"k8s.io/apiserver/pkg/storage/storagebackend"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/validation"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
kubeoptions
"k8s.io/kubernetes/pkg/kubeapiserver/options"
kubeletclient
"k8s.io/kubernetes/pkg/kubelet/client"
"k8s.io/kubernetes/pkg/master/ports"
...
...
@@ -71,7 +72,7 @@ type ServerRunOptions struct {
// NewServerRunOptions creates a new ServerRunOptions object with default parameters
func
NewServerRunOptions
()
*
ServerRunOptions
{
s
:=
ServerRunOptions
{
GenericServerRunOptions
:
genericoptions
.
NewServerRunOptions
(),
GenericServerRunOptions
:
genericoptions
.
NewServerRunOptions
(
&
kubeapiserveradmission
.
Plugins
),
Etcd
:
genericoptions
.
NewEtcdOptions
(
storagebackend
.
NewDefaultConfig
(
kubeoptions
.
DefaultEtcdPathPrefix
,
api
.
Scheme
,
nil
)),
SecureServing
:
kubeoptions
.
NewSecureServingOptions
(),
InsecureServing
:
kubeoptions
.
NewInsecureServingOptions
(),
...
...
cmd/kube-apiserver/app/server.go
View file @
63f547e1
...
...
@@ -64,7 +64,7 @@ import (
serviceaccountcontroller
"k8s.io/kubernetes/pkg/controller/serviceaccount"
generatedopenapi
"k8s.io/kubernetes/pkg/generated/openapi"
"k8s.io/kubernetes/pkg/kubeapiserver"
kubeadmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
kubea
piservera
dmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
kubeauthenticator
"k8s.io/kubernetes/pkg/kubeapiserver/authenticator"
"k8s.io/kubernetes/pkg/kubeapiserver/authorizer/modes"
kubeoptions
"k8s.io/kubernetes/pkg/kubeapiserver/options"
...
...
@@ -359,7 +359,12 @@ func BuildGenericConfig(s *options.ServerRunOptions) (*genericapiserver.Config,
genericConfig
.
DisabledPostStartHooks
.
Insert
(
rbacrest
.
PostStartHookName
)
}
genericConfig
.
AdmissionControl
,
err
=
BuildAdmission
(
s
,
client
,
sharedInformers
,
genericConfig
.
Authorizer
)
genericConfig
.
AdmissionControl
,
err
=
BuildAdmission
(
s
,
s
.
GenericServerRunOptions
.
AdmissionPlugins
,
client
,
sharedInformers
,
genericConfig
.
Authorizer
,
)
if
err
!=
nil
{
return
nil
,
nil
,
nil
,
fmt
.
Errorf
(
"failed to initialize admission: %v"
,
err
)
}
...
...
@@ -368,7 +373,7 @@ func BuildGenericConfig(s *options.ServerRunOptions) (*genericapiserver.Config,
}
// BuildAdmission constructs the admission chain
func
BuildAdmission
(
s
*
options
.
ServerRunOptions
,
client
internalclientset
.
Interface
,
sharedInformers
informers
.
SharedInformerFactory
,
apiAuthorizer
authorizer
.
Authorizer
)
(
admission
.
Interface
,
error
)
{
func
BuildAdmission
(
s
*
options
.
ServerRunOptions
,
plugins
*
admission
.
Plugins
,
client
internalclientset
.
Interface
,
sharedInformers
informers
.
SharedInformerFactory
,
apiAuthorizer
authorizer
.
Authorizer
)
(
admission
.
Interface
,
error
)
{
admissionControlPluginNames
:=
strings
.
Split
(
s
.
GenericServerRunOptions
.
AdmissionControl
,
","
)
var
cloudConfig
[]
byte
var
err
error
...
...
@@ -379,12 +384,12 @@ func BuildAdmission(s *options.ServerRunOptions, client internalclientset.Interf
glog
.
Fatalf
(
"Error reading from cloud configuration file %s: %#v"
,
s
.
CloudProvider
.
CloudConfigFile
,
err
)
}
}
pluginInitializer
:=
kubeadmission
.
NewPluginInitializer
(
client
,
sharedInformers
,
apiAuthorizer
,
cloudConfig
)
pluginInitializer
:=
kubea
piservera
dmission
.
NewPluginInitializer
(
client
,
sharedInformers
,
apiAuthorizer
,
cloudConfig
)
admissionConfigProvider
,
err
:=
admission
.
ReadAdmissionConfiguration
(
admissionControlPluginNames
,
s
.
GenericServerRunOptions
.
AdmissionControlConfigFile
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to read plugin config: %v"
,
err
)
}
return
admission
.
NewFromPlugins
(
admissionControlPluginNames
,
admissionConfigProvider
,
pluginInitializer
)
return
plugins
.
NewFromPlugins
(
admissionControlPluginNames
,
admissionConfigProvider
,
pluginInitializer
)
}
// BuildAuthenticator constructs the authenticator
...
...
federation/cmd/federation-apiserver/app/options/BUILD
View file @
63f547e1
...
...
@@ -17,6 +17,7 @@ go_library(
deps = [
"//pkg/api:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//pkg/kubeapiserver/options:go_default_library",
"//vendor:github.com/spf13/pflag",
"//vendor:k8s.io/apiserver/pkg/server/options",
...
...
federation/cmd/federation-apiserver/app/options/options.go
View file @
63f547e1
...
...
@@ -23,6 +23,7 @@ import (
genericoptions
"k8s.io/apiserver/pkg/server/options"
"k8s.io/apiserver/pkg/storage/storagebackend"
"k8s.io/kubernetes/pkg/api"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
kubeoptions
"k8s.io/kubernetes/pkg/kubeapiserver/options"
// add the kubernetes feature gates
...
...
@@ -51,7 +52,7 @@ type ServerRunOptions struct {
// NewServerRunOptions creates a new ServerRunOptions object with default values.
func
NewServerRunOptions
()
*
ServerRunOptions
{
s
:=
ServerRunOptions
{
GenericServerRunOptions
:
genericoptions
.
NewServerRunOptions
(),
GenericServerRunOptions
:
genericoptions
.
NewServerRunOptions
(
&
kubeapiserveradmission
.
Plugins
),
Etcd
:
genericoptions
.
NewEtcdOptions
(
storagebackend
.
NewDefaultConfig
(
kubeoptions
.
DefaultEtcdPathPrefix
,
api
.
Scheme
,
nil
)),
SecureServing
:
kubeoptions
.
NewSecureServingOptions
(),
InsecureServing
:
kubeoptions
.
NewInsecureServingOptions
(),
...
...
federation/cmd/federation-apiserver/app/server.go
View file @
63f547e1
...
...
@@ -199,7 +199,7 @@ func NonBlockingRun(s *options.ServerRunOptions, stopCh <-chan struct{}) error {
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to read plugin config: %v"
,
err
)
}
admissionController
,
err
:=
admission
.
NewFromPlugins
(
admissionControlPluginNames
,
admissionConfigProvider
,
pluginInitializer
)
admissionController
,
err
:=
kubeapiserveradmission
.
Plugins
.
NewFromPlugins
(
admissionControlPluginNames
,
admissionConfigProvider
,
pluginInitializer
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to initialize plugins: %v"
,
err
)
}
...
...
pkg/kubeapiserver/admission/BUILD
View file @
63f547e1
...
...
@@ -21,7 +21,10 @@ go_test(
go_library(
name = "go_default_library",
srcs = ["initializer.go"],
srcs = [
"initializer.go",
"registry.go",
],
tags = ["automanaged"],
deps = [
"//pkg/client/clientset_generated/internalclientset:go_default_library",
...
...
pkg/kubeapiserver/admission/registry.go
0 → 100644
View file @
63f547e1
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
admission
import
(
"k8s.io/apiserver/pkg/admission"
)
// Plugins is a global registry for admission plugins.
var
Plugins
=
admission
.
Plugins
{}
plugin/pkg/admission/admit/BUILD
View file @
63f547e1
...
...
@@ -12,7 +12,10 @@ go_library(
name = "go_default_library",
srcs = ["admission.go"],
tags = ["automanaged"],
deps = ["//vendor:k8s.io/apiserver/pkg/admission"],
deps = [
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:k8s.io/apiserver/pkg/admission",
],
)
go_test(
...
...
plugin/pkg/admission/admit/admission.go
View file @
63f547e1
...
...
@@ -20,10 +20,11 @@ import (
"io"
"k8s.io/apiserver/pkg/admission"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
func
init
()
{
admission
.
RegisterPlugin
(
"AlwaysAdmit"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"AlwaysAdmit"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewAlwaysAdmit
(),
nil
})
}
...
...
plugin/pkg/admission/alwayspullimages/BUILD
View file @
63f547e1
...
...
@@ -14,6 +14,7 @@ go_library(
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apiserver/pkg/admission",
],
...
...
plugin/pkg/admission/alwayspullimages/admission.go
View file @
63f547e1
...
...
@@ -30,10 +30,11 @@ import (
apierrors
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apiserver/pkg/admission"
"k8s.io/kubernetes/pkg/api"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
func
init
()
{
admission
.
RegisterPlugin
(
"AlwaysPullImages"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"AlwaysPullImages"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewAlwaysPullImages
(),
nil
})
}
...
...
plugin/pkg/admission/antiaffinity/BUILD
View file @
63f547e1
...
...
@@ -17,6 +17,7 @@ go_library(
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apiserver/pkg/admission",
...
...
plugin/pkg/admission/antiaffinity/admission.go
View file @
63f547e1
...
...
@@ -24,10 +24,11 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/admission"
"k8s.io/kubernetes/pkg/api"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
func
init
()
{
admission
.
RegisterPlugin
(
"LimitPodHardAntiAffinityTopology"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"LimitPodHardAntiAffinityTopology"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewInterPodAntiAffinity
(),
nil
})
}
...
...
plugin/pkg/admission/defaulttolerationseconds/BUILD
View file @
63f547e1
...
...
@@ -28,6 +28,7 @@ go_library(
deps = [
"//pkg/api:go_default_library",
"//pkg/api/helper:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
"//vendor:k8s.io/apiserver/pkg/admission",
...
...
plugin/pkg/admission/defaulttolerationseconds/admission.go
View file @
63f547e1
...
...
@@ -26,6 +26,7 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/helper"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
var
(
...
...
@@ -39,7 +40,7 @@ var (
)
func
init
()
{
admission
.
RegisterPlugin
(
"DefaultTolerationSeconds"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"DefaultTolerationSeconds"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewDefaultTolerationSeconds
(),
nil
})
}
...
...
plugin/pkg/admission/deny/BUILD
View file @
63f547e1
...
...
@@ -12,7 +12,10 @@ go_library(
name = "go_default_library",
srcs = ["admission.go"],
tags = ["automanaged"],
deps = ["//vendor:k8s.io/apiserver/pkg/admission"],
deps = [
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:k8s.io/apiserver/pkg/admission",
],
)
go_test(
...
...
plugin/pkg/admission/deny/admission.go
View file @
63f547e1
...
...
@@ -21,10 +21,11 @@ import (
"io"
"k8s.io/apiserver/pkg/admission"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
func
init
()
{
admission
.
RegisterPlugin
(
"AlwaysDeny"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"AlwaysDeny"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewAlwaysDeny
(),
nil
})
}
...
...
plugin/pkg/admission/exec/admission.go
View file @
63f547e1
...
...
@@ -30,13 +30,13 @@ import (
)
func
init
()
{
admission
.
RegisterPlugin
(
"DenyEscalatingExec"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"DenyEscalatingExec"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewDenyEscalatingExec
(),
nil
})
// This is for legacy support of the DenyExecOnPrivileged admission controller. Most
// of the time DenyEscalatingExec should be preferred.
admission
.
RegisterPlugin
(
"DenyExecOnPrivileged"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"DenyExecOnPrivileged"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewDenyExecOnPrivileged
(),
nil
})
}
...
...
plugin/pkg/admission/gc/BUILD
View file @
63f547e1
...
...
@@ -13,6 +13,7 @@ go_library(
srcs = ["gc_admission.go"],
tags = ["automanaged"],
deps = [
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/equality",
"//vendor:k8s.io/apimachinery/pkg/api/meta",
"//vendor:k8s.io/apimachinery/pkg/runtime",
...
...
plugin/pkg/admission/gc/gc_admission.go
View file @
63f547e1
...
...
@@ -25,10 +25,11 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/authorization/authorizer"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
func
init
()
{
admission
.
RegisterPlugin
(
"OwnerReferencesPermissionEnforcement"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"OwnerReferencesPermissionEnforcement"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
&
gcPermissionsEnforcement
{
Handler
:
admission
.
NewHandler
(
admission
.
Create
,
admission
.
Update
),
},
nil
...
...
plugin/pkg/admission/imagepolicy/BUILD
View file @
63f547e1
...
...
@@ -20,6 +20,7 @@ go_library(
"//pkg/api:go_default_library",
"//pkg/apis/imagepolicy/install:go_default_library",
"//pkg/apis/imagepolicy/v1alpha1:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:github.com/golang/glog",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
...
...
plugin/pkg/admission/imagepolicy/admission.go
View file @
63f547e1
...
...
@@ -39,6 +39,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
// install the clientgo image policy API for use with api registry
_
"k8s.io/kubernetes/pkg/apis/imagepolicy/install"
...
...
@@ -49,7 +50,7 @@ var (
)
func
init
()
{
admission
.
RegisterPlugin
(
"ImagePolicyWebhook"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"ImagePolicyWebhook"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
newImagePolicyWebhook
,
err
:=
NewImagePolicyWebhook
(
config
)
if
err
!=
nil
{
return
nil
,
err
...
...
plugin/pkg/admission/initialresources/BUILD
View file @
63f547e1
...
...
@@ -20,6 +20,7 @@ go_library(
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:cloud.google.com/go/compute/metadata",
"//vendor:github.com/golang/glog",
"//vendor:github.com/hawkular/hawkular-client-go/metrics",
...
...
plugin/pkg/admission/initialresources/admission.go
View file @
63f547e1
...
...
@@ -29,6 +29,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apiserver/pkg/admission"
"k8s.io/kubernetes/pkg/api"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
var
(
...
...
@@ -46,7 +47,7 @@ const (
// WARNING: this feature is experimental and will definitely change.
func
init
()
{
admission
.
RegisterPlugin
(
"InitialResources"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"InitialResources"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
// TODO: remove the usage of flags in favor of reading versioned configuration
s
,
err
:=
newDataSource
(
*
source
)
if
err
!=
nil
{
...
...
plugin/pkg/admission/limitranger/admission.go
View file @
63f547e1
...
...
@@ -44,7 +44,7 @@ const (
)
func
init
()
{
admission
.
RegisterPlugin
(
"LimitRanger"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"LimitRanger"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewLimitRanger
(
&
DefaultLimitRangerActions
{})
})
}
...
...
plugin/pkg/admission/namespace/autoprovision/admission.go
View file @
63f547e1
...
...
@@ -31,7 +31,7 @@ import (
)
func
init
()
{
admission
.
RegisterPlugin
(
"NamespaceAutoProvision"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"NamespaceAutoProvision"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewProvision
(),
nil
})
}
...
...
plugin/pkg/admission/namespace/exists/admission.go
View file @
63f547e1
...
...
@@ -31,7 +31,7 @@ import (
)
func
init
()
{
admission
.
RegisterPlugin
(
"NamespaceExists"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"NamespaceExists"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewExists
(),
nil
})
}
...
...
plugin/pkg/admission/namespace/lifecycle/admission.go
View file @
63f547e1
...
...
@@ -51,7 +51,7 @@ const (
)
func
init
()
{
admission
.
RegisterPlugin
(
PluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
PluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewLifecycle
(
sets
.
NewString
(
metav1
.
NamespaceDefault
,
metav1
.
NamespaceSystem
,
metav1
.
NamespacePublic
))
})
}
...
...
plugin/pkg/admission/persistentvolume/label/admission.go
View file @
63f547e1
...
...
@@ -33,7 +33,7 @@ import (
)
func
init
()
{
admission
.
RegisterPlugin
(
"PersistentVolumeLabel"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"PersistentVolumeLabel"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
persistentVolumeLabelAdmission
:=
NewPersistentVolumeLabel
()
return
persistentVolumeLabelAdmission
,
nil
})
...
...
plugin/pkg/admission/podnodeselector/admission.go
View file @
63f547e1
...
...
@@ -40,7 +40,7 @@ import (
var
NamespaceNodeSelectors
=
[]
string
{
"scheduler.alpha.kubernetes.io/node-selector"
}
func
init
()
{
admission
.
RegisterPlugin
(
"PodNodeSelector"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"PodNodeSelector"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
// TODO move this to a versioned configuration file format.
pluginConfig
:=
readConfig
(
config
)
plugin
:=
NewPodNodeSelector
(
pluginConfig
.
PodNodeSelectorPluginConfig
)
...
...
plugin/pkg/admission/podpreset/admission.go
View file @
63f547e1
...
...
@@ -41,7 +41,7 @@ const (
)
func
init
()
{
admission
.
RegisterPlugin
(
pluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
pluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewPlugin
(),
nil
})
}
...
...
plugin/pkg/admission/podtolerationrestriction/admission.go
View file @
63f547e1
...
...
@@ -37,7 +37,7 @@ import (
)
func
init
()
{
admission
.
RegisterPlugin
(
"PodTolerationRestriction"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"PodTolerationRestriction"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
pluginConfig
,
err
:=
loadConfiguration
(
config
)
if
err
!=
nil
{
return
nil
,
err
...
...
plugin/pkg/admission/resourcequota/admission.go
View file @
63f547e1
...
...
@@ -33,7 +33,7 @@ import (
)
func
init
()
{
admission
.
RegisterPlugin
(
"ResourceQuota"
,
kubeapiserveradmission
.
Plugins
.
Register
(
"ResourceQuota"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
// load the configuration provided (if any)
configuration
,
err
:=
LoadConfiguration
(
config
)
...
...
plugin/pkg/admission/security/podsecuritypolicy/admission.go
View file @
63f547e1
...
...
@@ -45,7 +45,7 @@ const (
)
func
init
()
{
admission
.
RegisterPlugin
(
PluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
PluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
plugin
:=
NewPlugin
(
psp
.
NewSimpleStrategyFactory
(),
getMatchingPolicies
,
true
)
return
plugin
,
nil
})
...
...
plugin/pkg/admission/securitycontext/scdeny/BUILD
View file @
63f547e1
...
...
@@ -14,6 +14,7 @@ go_library(
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/kubeapiserver/admission:go_default_library",
"//vendor:k8s.io/apimachinery/pkg/api/errors",
"//vendor:k8s.io/apiserver/pkg/admission",
],
...
...
plugin/pkg/admission/securitycontext/scdeny/admission.go
View file @
63f547e1
...
...
@@ -23,10 +23,11 @@ import (
apierrors
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apiserver/pkg/admission"
"k8s.io/kubernetes/pkg/api"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
)
func
init
()
{
admission
.
RegisterPlugin
(
"SecurityContextDeny"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
"SecurityContextDeny"
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
return
NewSecurityContextDeny
(),
nil
})
}
...
...
plugin/pkg/admission/serviceaccount/admission.go
View file @
63f547e1
...
...
@@ -55,7 +55,7 @@ const DefaultAPITokenMountPath = "/var/run/secrets/kubernetes.io/serviceaccount"
const
PluginName
=
"ServiceAccount"
func
init
()
{
admission
.
RegisterPlugin
(
PluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
PluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
serviceAccountAdmission
:=
NewServiceAccount
()
return
serviceAccountAdmission
,
nil
})
...
...
plugin/pkg/admission/storageclass/default/admission.go
View file @
63f547e1
...
...
@@ -39,7 +39,7 @@ const (
)
func
init
()
{
admission
.
RegisterPlugin
(
PluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
kubeapiserveradmission
.
Plugins
.
Register
(
PluginName
,
func
(
config
io
.
Reader
)
(
admission
.
Interface
,
error
)
{
plugin
:=
newPlugin
()
return
plugin
,
nil
})
...
...
staging/src/k8s.io/apiserver/pkg/admission/plugins.go
View file @
63f547e1
...
...
@@ -34,11 +34,13 @@ import (
// the parameter is nil.
type
Factory
func
(
config
io
.
Reader
)
(
Interface
,
error
)
type
Plugins
struct
{
lock
sync
.
Mutex
registry
map
[
string
]
Factory
}
// All registered admission options.
var
(
pluginsMutex
sync
.
Mutex
plugins
=
make
(
map
[
string
]
Factory
)
// PluginEnabledFn checks whether a plugin is enabled. By default, if you ask about it, it's enabled.
PluginEnabledFn
=
func
(
name
string
,
config
io
.
Reader
)
bool
{
return
true
...
...
@@ -48,39 +50,42 @@ var (
// PluginEnabledFunc is a function type that can provide an external check on whether an admission plugin may be enabled
type
PluginEnabledFunc
func
(
name
string
,
config
io
.
Reader
)
bool
//
GetPlugins
enumerates the names of all registered plugins.
func
GetPlugins
()
[]
string
{
p
luginsMutex
.
Lock
()
defer
p
luginsMutex
.
Unlock
()
//
Registered
enumerates the names of all registered plugins.
func
(
ps
*
Plugins
)
Registered
()
[]
string
{
p
s
.
lock
.
Lock
()
defer
p
s
.
lock
.
Unlock
()
keys
:=
[]
string
{}
for
k
:=
range
p
lugins
{
for
k
:=
range
p
s
.
registry
{
keys
=
append
(
keys
,
k
)
}
sort
.
Strings
(
keys
)
return
keys
}
// Register
Plugin
registers a plugin Factory by name. This
// Register registers a plugin Factory by name. This
// is expected to happen during app startup.
func
RegisterPlugin
(
name
string
,
plugin
Factory
)
{
p
luginsMutex
.
Lock
()
defer
p
luginsMutex
.
Unlock
()
_
,
found
:=
p
lugins
[
name
]
func
(
ps
*
Plugins
)
Register
(
name
string
,
plugin
Factory
)
{
p
s
.
lock
.
Lock
()
defer
p
s
.
lock
.
Unlock
()
_
,
found
:=
p
s
.
registry
[
name
]
if
found
{
glog
.
Fatalf
(
"Admission plugin %q was registered twice"
,
name
)
}
if
ps
.
registry
==
nil
{
ps
.
registry
=
map
[
string
]
Factory
{}
}
glog
.
V
(
1
)
.
Infof
(
"Registered admission plugin %q"
,
name
)
p
lugins
[
name
]
=
plugin
p
s
.
registry
[
name
]
=
plugin
}
// getPlugin creates an instance of the named plugin. It returns `false` if the
// the name is not known. The error is returned only when the named provider was
// known but failed to initialize. The config parameter specifies the io.Reader
// handler of the configuration file for the cloud provider, or nil for no configuration.
func
getPlugin
(
name
string
,
config
io
.
Reader
)
(
Interface
,
bool
,
error
)
{
p
luginsMutex
.
Lock
()
defer
p
luginsMutex
.
Unlock
()
f
,
found
:=
p
lugins
[
name
]
func
(
ps
*
Plugins
)
getPlugin
(
name
string
,
config
io
.
Reader
)
(
Interface
,
bool
,
error
)
{
p
s
.
lock
.
Lock
()
defer
p
s
.
lock
.
Unlock
()
f
,
found
:=
p
s
.
registry
[
name
]
if
!
found
{
return
nil
,
false
,
nil
}
...
...
@@ -113,7 +118,7 @@ func splitStream(config io.Reader) (io.Reader, io.Reader, error) {
// NewFromPlugins returns an admission.Interface that will enforce admission control decisions of all
// the given plugins.
func
NewFromPlugins
(
pluginNames
[]
string
,
configProvider
ConfigProvider
,
pluginInitializer
PluginInitializer
)
(
Interface
,
error
)
{
func
(
ps
*
Plugins
)
NewFromPlugins
(
pluginNames
[]
string
,
configProvider
ConfigProvider
,
pluginInitializer
PluginInitializer
)
(
Interface
,
error
)
{
plugins
:=
[]
Interface
{}
for
_
,
pluginName
:=
range
pluginNames
{
pluginConfig
,
err
:=
configProvider
.
ConfigFor
(
pluginName
)
...
...
@@ -121,7 +126,7 @@ func NewFromPlugins(pluginNames []string, configProvider ConfigProvider, pluginI
return
nil
,
err
}
plugin
,
err
:=
InitPlugin
(
pluginName
,
pluginConfig
,
pluginInitializer
)
plugin
,
err
:=
ps
.
InitPlugin
(
pluginName
,
pluginConfig
,
pluginInitializer
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -133,13 +138,13 @@ func NewFromPlugins(pluginNames []string, configProvider ConfigProvider, pluginI
}
// InitPlugin creates an instance of the named interface.
func
InitPlugin
(
name
string
,
config
io
.
Reader
,
pluginInitializer
PluginInitializer
)
(
Interface
,
error
)
{
func
(
ps
*
Plugins
)
InitPlugin
(
name
string
,
config
io
.
Reader
,
pluginInitializer
PluginInitializer
)
(
Interface
,
error
)
{
if
name
==
""
{
glog
.
Info
(
"No admission plugin specified."
)
return
nil
,
nil
}
plugin
,
found
,
err
:=
getPlugin
(
name
,
config
)
plugin
,
found
,
err
:=
ps
.
getPlugin
(
name
,
config
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"Couldn't init admission plugin %q: %v"
,
name
,
err
)
}
...
...
staging/src/k8s.io/apiserver/pkg/server/options/server_run_options.go
View file @
63f547e1
...
...
@@ -46,16 +46,18 @@ type ServerRunOptions struct {
MinRequestTimeout
int
TargetRAMMB
int
WatchCacheSizes
[]
string
AdmissionPlugins
*
admission
.
Plugins
}
func
NewServerRunOptions
()
*
ServerRunOptions
{
func
NewServerRunOptions
(
admissionPlugins
*
admission
.
Plugins
)
*
ServerRunOptions
{
defaults
:=
server
.
NewConfig
(
serializer
.
CodecFactory
{})
return
&
ServerRunOptions
{
AdmissionControl
:
"AlwaysAdmit"
,
MaxRequestsInFlight
:
defaults
.
MaxRequestsInFlight
,
MaxMutatingRequestsInFlight
:
defaults
.
MaxMutatingRequestsInFlight
,
MinRequestTimeout
:
defaults
.
MinRequestTimeout
,
AdmissionPlugins
:
admissionPlugins
,
}
}
...
...
@@ -96,7 +98,7 @@ func (s *ServerRunOptions) AddUniversalFlags(fs *pflag.FlagSet) {
fs
.
StringVar
(
&
s
.
AdmissionControl
,
"admission-control"
,
s
.
AdmissionControl
,
""
+
"Ordered list of plug-ins to do admission control of resources into cluster. "
+
"Comma-delimited list of: "
+
strings
.
Join
(
admission
.
GetPlugins
(),
", "
)
+
"."
)
"Comma-delimited list of: "
+
strings
.
Join
(
s
.
AdmissionPlugins
.
Registered
(),
", "
)
+
"."
)
fs
.
StringVar
(
&
s
.
AdmissionControlConfigFile
,
"admission-control-config-file"
,
s
.
AdmissionControlConfigFile
,
"File with admission control configuration."
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment