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
ccd4f4a4
Commit
ccd4f4a4
authored
Nov 17, 2017
by
David Eads
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
make admission config scheme configurable
parent
4dd13605
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
73 additions
and
34 deletions
+73
-34
admission.go
plugin/pkg/admission/resourcequota/admission.go
+5
-0
BUILD
staging/src/k8s.io/apiserver/pkg/admission/BUILD
+1
-3
config.go
staging/src/k8s.io/apiserver/pkg/admission/config.go
+28
-24
config_test.go
staging/src/k8s.io/apiserver/pkg/admission/config_test.go
+9
-1
BUILD
...8s.io/apiserver/pkg/admission/plugin/webhook/config/BUILD
+1
-3
BUILD
...o/apiserver/pkg/admission/plugin/webhook/validating/BUILD
+2
-0
admission.go
...rver/pkg/admission/plugin/webhook/validating/admission.go
+5
-0
plugins.go
staging/src/k8s.io/apiserver/pkg/admission/plugins.go
+12
-0
BUILD
staging/src/k8s.io/apiserver/pkg/server/options/BUILD
+2
-0
admission.go
staging/src/k8s.io/apiserver/pkg/server/options/admission.go
+8
-3
No files found.
plugin/pkg/admission/resourcequota/admission.go
View file @
ccd4f4a4
...
@@ -28,6 +28,7 @@ import (
...
@@ -28,6 +28,7 @@ import (
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
kubeapiserveradmission
"k8s.io/kubernetes/pkg/kubeapiserver/admission"
"k8s.io/kubernetes/pkg/quota"
"k8s.io/kubernetes/pkg/quota"
resourcequotaapi
"k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota"
resourcequotaapi
"k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota"
resourcequotaapiv1alpha1
"k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1"
"k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/validation"
"k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/validation"
)
)
...
@@ -48,6 +49,10 @@ func Register(plugins *admission.Plugins) {
...
@@ -48,6 +49,10 @@ func Register(plugins *admission.Plugins) {
}
}
return
NewResourceQuota
(
configuration
,
5
,
make
(
chan
struct
{}))
return
NewResourceQuota
(
configuration
,
5
,
make
(
chan
struct
{}))
})
})
// add our config types
resourcequotaapi
.
AddToScheme
(
plugins
.
ConfigScheme
)
resourcequotaapiv1alpha1
.
AddToScheme
(
plugins
.
ConfigScheme
)
}
}
// QuotaAdmission implements an admission controller that can enforce quota constraints
// QuotaAdmission implements an admission controller that can enforce quota constraints
...
...
staging/src/k8s.io/apiserver/pkg/admission/BUILD
View file @
ccd4f4a4
...
@@ -21,6 +21,7 @@ go_test(
...
@@ -21,6 +21,7 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library",
],
],
)
)
...
@@ -41,15 +42,12 @@ go_library(
...
@@ -41,15 +42,12 @@ go_library(
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver/install:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library",
"//vendor/k8s.io/apiserver/pkg/authentication/user:go_default_library",
],
],
...
...
staging/src/k8s.io/apiserver/pkg/admission/config.go
View file @
ccd4f4a4
...
@@ -29,27 +29,14 @@ import (
...
@@ -29,27 +29,14 @@ import (
"bytes"
"bytes"
"k8s.io/apimachinery/pkg/apimachinery/announced"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apiserver/pkg/apis/apiserver"
"k8s.io/apiserver/pkg/apis/apiserver"
"k8s.io/apiserver/pkg/apis/apiserver/install"
apiserverv1alpha1
"k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
apiserverv1alpha1
"k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
)
)
var
(
groupFactoryRegistry
=
make
(
announced
.
APIGroupFactoryRegistry
)
registry
=
registered
.
NewOrDie
(
os
.
Getenv
(
"KUBE_API_VERSIONS"
))
scheme
=
runtime
.
NewScheme
()
codecs
=
serializer
.
NewCodecFactory
(
scheme
)
)
func
init
()
{
install
.
Install
(
groupFactoryRegistry
,
registry
,
scheme
)
}
func
makeAbs
(
path
,
base
string
)
(
string
,
error
)
{
func
makeAbs
(
path
,
base
string
)
(
string
,
error
)
{
if
filepath
.
IsAbs
(
path
)
{
if
filepath
.
IsAbs
(
path
)
{
return
path
,
nil
return
path
,
nil
...
@@ -70,7 +57,7 @@ func makeAbs(path, base string) (string, error) {
...
@@ -70,7 +57,7 @@ func makeAbs(path, base string) (string, error) {
// set of pluginNames whose config location references the specified configFilePath.
// set of pluginNames whose config location references the specified configFilePath.
// It does this to preserve backward compatibility when admission control files were opaque.
// It does this to preserve backward compatibility when admission control files were opaque.
// It returns an error if the file did not exist.
// It returns an error if the file did not exist.
func
ReadAdmissionConfiguration
(
pluginNames
[]
string
,
configFilePath
string
)
(
ConfigProvider
,
error
)
{
func
ReadAdmissionConfiguration
(
pluginNames
[]
string
,
configFilePath
string
,
configScheme
*
runtime
.
Scheme
)
(
ConfigProvider
,
error
)
{
if
configFilePath
==
""
{
if
configFilePath
==
""
{
return
configProvider
{
config
:
&
apiserver
.
AdmissionConfiguration
{}},
nil
return
configProvider
{
config
:
&
apiserver
.
AdmissionConfiguration
{}},
nil
}
}
...
@@ -79,6 +66,7 @@ func ReadAdmissionConfiguration(pluginNames []string, configFilePath string) (Co
...
@@ -79,6 +66,7 @@ func ReadAdmissionConfiguration(pluginNames []string, configFilePath string) (Co
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"unable to read admission control configuration from %q [%v]"
,
configFilePath
,
err
)
return
nil
,
fmt
.
Errorf
(
"unable to read admission control configuration from %q [%v]"
,
configFilePath
,
err
)
}
}
codecs
:=
serializer
.
NewCodecFactory
(
configScheme
)
decoder
:=
codecs
.
UniversalDecoder
()
decoder
:=
codecs
.
UniversalDecoder
()
decodedObj
,
err
:=
runtime
.
Decode
(
decoder
,
data
)
decodedObj
,
err
:=
runtime
.
Decode
(
decoder
,
data
)
// we were able to decode the file successfully
// we were able to decode the file successfully
...
@@ -99,7 +87,10 @@ func ReadAdmissionConfiguration(pluginNames []string, configFilePath string) (Co
...
@@ -99,7 +87,10 @@ func ReadAdmissionConfiguration(pluginNames []string, configFilePath string) (Co
}
}
decodedConfig
.
Plugins
[
i
]
.
Path
=
absPath
decodedConfig
.
Plugins
[
i
]
.
Path
=
absPath
}
}
return
configProvider
{
config
:
decodedConfig
},
nil
return
configProvider
{
config
:
decodedConfig
,
scheme
:
configScheme
,
},
nil
}
}
// we got an error where the decode wasn't related to a missing type
// we got an error where the decode wasn't related to a missing type
if
!
(
runtime
.
IsMissingVersion
(
err
)
||
runtime
.
IsMissingKind
(
err
)
||
runtime
.
IsNotRegisteredError
(
err
))
{
if
!
(
runtime
.
IsMissingVersion
(
err
)
||
runtime
.
IsMissingKind
(
err
)
||
runtime
.
IsNotRegisteredError
(
err
))
{
...
@@ -119,25 +110,29 @@ func ReadAdmissionConfiguration(pluginNames []string, configFilePath string) (Co
...
@@ -119,25 +110,29 @@ func ReadAdmissionConfiguration(pluginNames []string, configFilePath string) (Co
Path
:
configFilePath
})
Path
:
configFilePath
})
}
}
}
}
s
cheme
.
Default
(
externalConfig
)
configS
cheme
.
Default
(
externalConfig
)
internalConfig
:=
&
apiserver
.
AdmissionConfiguration
{}
internalConfig
:=
&
apiserver
.
AdmissionConfiguration
{}
if
err
:=
s
cheme
.
Convert
(
externalConfig
,
internalConfig
,
nil
);
err
!=
nil
{
if
err
:=
configS
cheme
.
Convert
(
externalConfig
,
internalConfig
,
nil
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
return
configProvider
{
config
:
internalConfig
},
nil
return
configProvider
{
config
:
internalConfig
,
scheme
:
configScheme
,
},
nil
}
}
type
configProvider
struct
{
type
configProvider
struct
{
config
*
apiserver
.
AdmissionConfiguration
config
*
apiserver
.
AdmissionConfiguration
scheme
*
runtime
.
Scheme
}
}
// GetAdmissionPluginConfigurationFor returns a reader that holds the admission plugin configuration.
// GetAdmissionPluginConfigurationFor returns a reader that holds the admission plugin configuration.
func
GetAdmissionPluginConfigurationFor
(
pluginCfg
apiserver
.
AdmissionPluginConfiguration
)
(
io
.
Reader
,
error
)
{
func
GetAdmissionPluginConfigurationFor
(
pluginCfg
apiserver
.
AdmissionPluginConfiguration
,
scheme
*
runtime
.
Scheme
)
(
io
.
Reader
,
error
)
{
// if there is nothing nested in the object, we return the named location
// if there is nothing nested in the object, we return the named location
obj
:=
pluginCfg
.
Configuration
obj
:=
pluginCfg
.
Configuration
if
obj
!=
nil
{
if
obj
!=
nil
{
// serialize the configuration and build a reader for it
// serialize the configuration and build a reader for it
content
,
err
:=
writeYAML
(
obj
)
content
,
err
:=
writeYAML
(
obj
,
scheme
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -168,7 +163,7 @@ func (p configProvider) ConfigFor(pluginName string) (io.Reader, error) {
...
@@ -168,7 +163,7 @@ func (p configProvider) ConfigFor(pluginName string) (io.Reader, error) {
if
pluginName
!=
pluginCfg
.
Name
{
if
pluginName
!=
pluginCfg
.
Name
{
continue
continue
}
}
pluginConfig
,
err
:=
GetAdmissionPluginConfigurationFor
(
pluginCfg
)
pluginConfig
,
err
:=
GetAdmissionPluginConfigurationFor
(
pluginCfg
,
p
.
scheme
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -179,8 +174,17 @@ func (p configProvider) ConfigFor(pluginName string) (io.Reader, error) {
...
@@ -179,8 +174,17 @@ func (p configProvider) ConfigFor(pluginName string) (io.Reader, error) {
}
}
// writeYAML writes the specified object to a byte array as yaml.
// writeYAML writes the specified object to a byte array as yaml.
func
writeYAML
(
obj
runtime
.
Object
)
([]
byte
,
error
)
{
func
writeYAML
(
obj
runtime
.
Object
,
scheme
*
runtime
.
Scheme
)
([]
byte
,
error
)
{
json
,
err
:=
runtime
.
Encode
(
codecs
.
LegacyCodec
(),
obj
)
gvks
,
_
,
err
:=
scheme
.
ObjectKinds
(
obj
)
if
err
!=
nil
{
return
nil
,
err
}
gvs
:=
[]
schema
.
GroupVersion
{}
for
_
,
gvk
:=
range
gvks
{
gvs
=
append
(
gvs
,
gvk
.
GroupVersion
())
}
codecs
:=
serializer
.
NewCodecFactory
(
scheme
)
json
,
err
:=
runtime
.
Encode
(
codecs
.
LegacyCodec
(
gvs
...
),
obj
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
...
staging/src/k8s.io/apiserver/pkg/admission/config_test.go
View file @
ccd4f4a4
...
@@ -22,7 +22,10 @@ import (
...
@@ -22,7 +22,10 @@ import (
"reflect"
"reflect"
"testing"
"testing"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/apis/apiserver"
"k8s.io/apiserver/pkg/apis/apiserver"
apiserverapi
"k8s.io/apiserver/pkg/apis/apiserver"
apiserverapiv1alpha1
"k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
)
)
func
TestReadAdmissionConfiguration
(
t
*
testing
.
T
)
{
func
TestReadAdmissionConfiguration
(
t
*
testing
.
T
)
{
...
@@ -132,11 +135,16 @@ func TestReadAdmissionConfiguration(t *testing.T) {
...
@@ -132,11 +135,16 @@ func TestReadAdmissionConfiguration(t *testing.T) {
PluginNames
:
[]
string
{
"NamespaceLifecycle"
,
"InitialResources"
},
PluginNames
:
[]
string
{
"NamespaceLifecycle"
,
"InitialResources"
},
},
},
}
}
scheme
:=
runtime
.
NewScheme
()
apiserverapi
.
AddToScheme
(
scheme
)
apiserverapiv1alpha1
.
AddToScheme
(
scheme
)
for
testName
,
testCase
:=
range
testCases
{
for
testName
,
testCase
:=
range
testCases
{
if
err
=
ioutil
.
WriteFile
(
configFileName
,
[]
byte
(
testCase
.
ConfigBody
),
0644
);
err
!=
nil
{
if
err
=
ioutil
.
WriteFile
(
configFileName
,
[]
byte
(
testCase
.
ConfigBody
),
0644
);
err
!=
nil
{
t
.
Fatalf
(
"unexpected err writing temp file: %v"
,
err
)
t
.
Fatalf
(
"unexpected err writing temp file: %v"
,
err
)
}
}
config
,
err
:=
ReadAdmissionConfiguration
(
testCase
.
PluginNames
,
configFileName
)
config
,
err
:=
ReadAdmissionConfiguration
(
testCase
.
PluginNames
,
configFileName
,
scheme
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected err: %v"
,
err
)
t
.
Fatalf
(
"unexpected err: %v"
,
err
)
}
}
...
...
staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/config/BUILD
View file @
ccd4f4a4
...
@@ -13,14 +13,12 @@ go_library(
...
@@ -13,14 +13,12 @@ go_library(
deps = [
deps = [
"//vendor/github.com/hashicorp/golang-lru:go_default_library",
"//vendor/github.com/hashicorp/golang-lru:go_default_library",
"//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
"//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission/v1alpha1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/audit/install:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",
...
...
staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/validating/BUILD
View file @
ccd4f4a4
...
@@ -23,6 +23,8 @@ go_library(
...
@@ -23,6 +23,8 @@ go_library(
"//vendor/k8s.io/apiserver/pkg/admission/initializer:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/initializer:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/metrics:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/metrics:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/config:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/config:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission/v1alpha1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/errors:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/namespace:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/namespace:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/request:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/request:go_default_library",
...
...
staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/validating/admission.go
View file @
ccd4f4a4
...
@@ -40,6 +40,8 @@ import (
...
@@ -40,6 +40,8 @@ import (
genericadmissioninit
"k8s.io/apiserver/pkg/admission/initializer"
genericadmissioninit
"k8s.io/apiserver/pkg/admission/initializer"
admissionmetrics
"k8s.io/apiserver/pkg/admission/metrics"
admissionmetrics
"k8s.io/apiserver/pkg/admission/metrics"
"k8s.io/apiserver/pkg/admission/plugin/webhook/config"
"k8s.io/apiserver/pkg/admission/plugin/webhook/config"
webhookadmissionapi
"k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission"
webhookadmissionapiv1alpha1
"k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission/v1alpha1"
webhookerrors
"k8s.io/apiserver/pkg/admission/plugin/webhook/errors"
webhookerrors
"k8s.io/apiserver/pkg/admission/plugin/webhook/errors"
"k8s.io/apiserver/pkg/admission/plugin/webhook/namespace"
"k8s.io/apiserver/pkg/admission/plugin/webhook/namespace"
"k8s.io/apiserver/pkg/admission/plugin/webhook/request"
"k8s.io/apiserver/pkg/admission/plugin/webhook/request"
...
@@ -64,6 +66,9 @@ func Register(plugins *admission.Plugins) {
...
@@ -64,6 +66,9 @@ func Register(plugins *admission.Plugins) {
return
plugin
,
nil
return
plugin
,
nil
})
})
// add our config types
webhookadmissionapi
.
AddToScheme
(
plugins
.
ConfigScheme
)
webhookadmissionapiv1alpha1
.
AddToScheme
(
plugins
.
ConfigScheme
)
}
}
// WebhookSource can list dynamic webhook plugins.
// WebhookSource can list dynamic webhook plugins.
...
...
staging/src/k8s.io/apiserver/pkg/admission/plugins.go
View file @
ccd4f4a4
...
@@ -25,6 +25,8 @@ import (
...
@@ -25,6 +25,8 @@ import (
"sort"
"sort"
"sync"
"sync"
"k8s.io/apimachinery/pkg/runtime"
"github.com/golang/glog"
"github.com/golang/glog"
)
)
...
@@ -37,6 +39,16 @@ type Factory func(config io.Reader) (Interface, error)
...
@@ -37,6 +39,16 @@ type Factory func(config io.Reader) (Interface, error)
type
Plugins
struct
{
type
Plugins
struct
{
lock
sync
.
Mutex
lock
sync
.
Mutex
registry
map
[
string
]
Factory
registry
map
[
string
]
Factory
// ConfigScheme is used to parse the admission plugin config file.
// It is exposed to act as a hook for extending server providing their own config.
ConfigScheme
*
runtime
.
Scheme
}
func
NewPlugins
()
*
Plugins
{
return
&
Plugins
{
ConfigScheme
:
runtime
.
NewScheme
(),
}
}
}
// All registered admission options.
// All registered admission options.
...
...
staging/src/k8s.io/apiserver/pkg/server/options/BUILD
View file @
ccd4f4a4
...
@@ -35,6 +35,8 @@ go_library(
...
@@ -35,6 +35,8 @@ go_library(
"//vendor/k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/mutating:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/mutating:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/validating:go_default_library",
"//vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/validating:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1:go_default_library",
"//vendor/k8s.io/apiserver/pkg/audit:go_default_library",
"//vendor/k8s.io/apiserver/pkg/audit:go_default_library",
"//vendor/k8s.io/apiserver/pkg/audit/policy:go_default_library",
"//vendor/k8s.io/apiserver/pkg/audit/policy:go_default_library",
...
...
staging/src/k8s.io/apiserver/pkg/server/options/admission.go
View file @
ccd4f4a4
...
@@ -29,6 +29,8 @@ import (
...
@@ -29,6 +29,8 @@ import (
"k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle"
"k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle"
mutatingwebhook
"k8s.io/apiserver/pkg/admission/plugin/webhook/mutating"
mutatingwebhook
"k8s.io/apiserver/pkg/admission/plugin/webhook/mutating"
validatingwebhook
"k8s.io/apiserver/pkg/admission/plugin/webhook/validating"
validatingwebhook
"k8s.io/apiserver/pkg/admission/plugin/webhook/validating"
apiserverapi
"k8s.io/apiserver/pkg/apis/apiserver"
apiserverapiv1alpha1
"k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
"k8s.io/apiserver/pkg/server"
"k8s.io/apiserver/pkg/server"
"k8s.io/client-go/informers"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes"
...
@@ -43,7 +45,8 @@ type AdmissionOptions struct {
...
@@ -43,7 +45,8 @@ type AdmissionOptions struct {
DefaultOffPlugins
[]
string
DefaultOffPlugins
[]
string
PluginNames
[]
string
PluginNames
[]
string
ConfigFile
string
ConfigFile
string
Plugins
*
admission
.
Plugins
Plugins
*
admission
.
Plugins
}
}
// NewAdmissionOptions creates a new instance of AdmissionOptions
// NewAdmissionOptions creates a new instance of AdmissionOptions
...
@@ -56,11 +59,13 @@ type AdmissionOptions struct {
...
@@ -56,11 +59,13 @@ type AdmissionOptions struct {
// Servers that do care can overwrite/append that field after creation.
// Servers that do care can overwrite/append that field after creation.
func
NewAdmissionOptions
()
*
AdmissionOptions
{
func
NewAdmissionOptions
()
*
AdmissionOptions
{
options
:=
&
AdmissionOptions
{
options
:=
&
AdmissionOptions
{
Plugins
:
&
admission
.
Plugins
{}
,
Plugins
:
admission
.
NewPlugins
()
,
PluginNames
:
[]
string
{},
PluginNames
:
[]
string
{},
RecommendedPluginOrder
:
[]
string
{
mutatingwebhook
.
PluginName
,
lifecycle
.
PluginName
,
initialization
.
PluginName
,
validatingwebhook
.
PluginName
},
RecommendedPluginOrder
:
[]
string
{
mutatingwebhook
.
PluginName
,
lifecycle
.
PluginName
,
initialization
.
PluginName
,
validatingwebhook
.
PluginName
},
DefaultOffPlugins
:
[]
string
{
mutatingwebhook
.
PluginName
,
initialization
.
PluginName
,
validatingwebhook
.
PluginName
},
DefaultOffPlugins
:
[]
string
{
mutatingwebhook
.
PluginName
,
initialization
.
PluginName
,
validatingwebhook
.
PluginName
},
}
}
apiserverapi
.
AddToScheme
(
options
.
Plugins
.
ConfigScheme
)
apiserverapiv1alpha1
.
AddToScheme
(
options
.
Plugins
.
ConfigScheme
)
server
.
RegisterAllAdmissionPlugins
(
options
.
Plugins
)
server
.
RegisterAllAdmissionPlugins
(
options
.
Plugins
)
return
options
return
options
}
}
...
@@ -96,7 +101,7 @@ func (a *AdmissionOptions) ApplyTo(
...
@@ -96,7 +101,7 @@ func (a *AdmissionOptions) ApplyTo(
pluginNames
=
a
.
enabledPluginNames
()
pluginNames
=
a
.
enabledPluginNames
()
}
}
pluginsConfigProvider
,
err
:=
admission
.
ReadAdmissionConfiguration
(
pluginNames
,
a
.
ConfigFile
)
pluginsConfigProvider
,
err
:=
admission
.
ReadAdmissionConfiguration
(
pluginNames
,
a
.
ConfigFile
,
a
.
Plugins
.
ConfigScheme
)
if
err
!=
nil
{
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to read plugin config: %v"
,
err
)
return
fmt
.
Errorf
(
"failed to read plugin config: %v"
,
err
)
}
}
...
...
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