mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
wires ban flunder admission plugin to the sample server
This commit is contained in:
parent
c9d142d73d
commit
760f9d1c0b
@ -18,6 +18,7 @@ package banflunder
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
@ -28,6 +29,13 @@ import (
|
|||||||
listers "k8s.io/sample-apiserver/pkg/client/listers_generated/wardle/internalversion"
|
listers "k8s.io/sample-apiserver/pkg/client/listers_generated/wardle/internalversion"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Register registers a plugin
|
||||||
|
func Register(plugins *admission.Plugins) {
|
||||||
|
plugins.Register("BanFlunder", func(config io.Reader) (admission.Interface, error) {
|
||||||
|
return New()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
type disallowFlunder struct {
|
type disallowFlunder struct {
|
||||||
*admission.Handler
|
*admission.Handler
|
||||||
lister listers.FischerLister
|
lister listers.FischerLister
|
||||||
@ -80,5 +88,7 @@ func (d *disallowFlunder) Validate() error {
|
|||||||
|
|
||||||
// New creates a new ban flunder admission plugin
|
// New creates a new ban flunder admission plugin
|
||||||
func New() (admission.Interface, error) {
|
func New() (admission.Interface, error) {
|
||||||
return &disallowFlunder{}, nil
|
return &disallowFlunder{
|
||||||
|
Handler: admission.NewHandler(admission.Create),
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ go_library(
|
|||||||
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle:go_default_library",
|
||||||
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/install:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/install:go_default_library",
|
||||||
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion:go_default_library",
|
||||||
"//vendor/k8s.io/sample-apiserver/pkg/registry:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/registry:go_default_library",
|
||||||
"//vendor/k8s.io/sample-apiserver/pkg/registry/wardle/fischer:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/registry/wardle/fischer:go_default_library",
|
||||||
"//vendor/k8s.io/sample-apiserver/pkg/registry/wardle/flunder:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/registry/wardle/flunder:go_default_library",
|
||||||
|
@ -30,6 +30,7 @@ import (
|
|||||||
"k8s.io/sample-apiserver/pkg/apis/wardle"
|
"k8s.io/sample-apiserver/pkg/apis/wardle"
|
||||||
"k8s.io/sample-apiserver/pkg/apis/wardle/install"
|
"k8s.io/sample-apiserver/pkg/apis/wardle/install"
|
||||||
"k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1"
|
"k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1"
|
||||||
|
informers "k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion"
|
||||||
wardleregistry "k8s.io/sample-apiserver/pkg/registry"
|
wardleregistry "k8s.io/sample-apiserver/pkg/registry"
|
||||||
fischerstorage "k8s.io/sample-apiserver/pkg/registry/wardle/fischer"
|
fischerstorage "k8s.io/sample-apiserver/pkg/registry/wardle/fischer"
|
||||||
flunderstorage "k8s.io/sample-apiserver/pkg/registry/wardle/flunder"
|
flunderstorage "k8s.io/sample-apiserver/pkg/registry/wardle/flunder"
|
||||||
@ -62,6 +63,8 @@ func init() {
|
|||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
GenericConfig *genericapiserver.Config
|
GenericConfig *genericapiserver.Config
|
||||||
|
// SharedInformerFactory provides shared informers for resources
|
||||||
|
SharedInformerFactory informers.SharedInformerFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
// WardleServer contains state for a Kubernetes cluster master/api server.
|
// WardleServer contains state for a Kubernetes cluster master/api server.
|
||||||
|
@ -15,8 +15,12 @@ go_library(
|
|||||||
"//vendor/github.com/spf13/cobra:go_default_library",
|
"//vendor/github.com/spf13/cobra:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/server:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/server:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/server/options:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/server/options:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-apiserver/pkg/admission/plugin/banflunder:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-apiserver/pkg/admission/wardleinitializer:go_default_library",
|
||||||
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library",
|
||||||
"//vendor/k8s.io/sample-apiserver/pkg/apiserver:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/apiserver:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-apiserver/pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
|
"//vendor/k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -25,8 +25,12 @@ import (
|
|||||||
|
|
||||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||||
genericoptions "k8s.io/apiserver/pkg/server/options"
|
genericoptions "k8s.io/apiserver/pkg/server/options"
|
||||||
|
"k8s.io/sample-apiserver/pkg/admission/plugin/banflunder"
|
||||||
|
"k8s.io/sample-apiserver/pkg/admission/wardleinitializer"
|
||||||
"k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1"
|
"k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1"
|
||||||
"k8s.io/sample-apiserver/pkg/apiserver"
|
"k8s.io/sample-apiserver/pkg/apiserver"
|
||||||
|
clientset "k8s.io/sample-apiserver/pkg/client/clientset_generated/internalclientset"
|
||||||
|
informers "k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion"
|
||||||
)
|
)
|
||||||
|
|
||||||
const defaultEtcdPathPrefix = "/registry/wardle.kubernetes.io"
|
const defaultEtcdPathPrefix = "/registry/wardle.kubernetes.io"
|
||||||
@ -88,6 +92,9 @@ func (o *WardleServerOptions) Complete() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (o WardleServerOptions) Config() (*apiserver.Config, error) {
|
func (o WardleServerOptions) Config() (*apiserver.Config, error) {
|
||||||
|
// register admission plugins
|
||||||
|
banflunder.Register(o.Admission.Plugins)
|
||||||
|
|
||||||
// TODO have a "real" external address
|
// TODO have a "real" external address
|
||||||
if err := o.RecommendedOptions.SecureServing.MaybeDefaultWithSelfSignedCerts("localhost", nil, []net.IP{net.ParseIP("127.0.0.1")}); err != nil {
|
if err := o.RecommendedOptions.SecureServing.MaybeDefaultWithSelfSignedCerts("localhost", nil, []net.IP{net.ParseIP("127.0.0.1")}); err != nil {
|
||||||
return nil, fmt.Errorf("error creating self-signed certificates: %v", err)
|
return nil, fmt.Errorf("error creating self-signed certificates: %v", err)
|
||||||
@ -98,12 +105,23 @@ func (o WardleServerOptions) Config() (*apiserver.Config, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := o.Admission.ApplyTo(serverConfig); err != nil {
|
client, err := clientset.NewForConfig(serverConfig.LoopbackClientConfig)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
informerFactory := informers.NewSharedInformerFactory(client, serverConfig.LoopbackClientConfig.Timeout)
|
||||||
|
admissionInitializer, err := wardleinitializer.New(informerFactory)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := o.Admission.ApplyTo(serverConfig, admissionInitializer); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
config := &apiserver.Config{
|
config := &apiserver.Config{
|
||||||
GenericConfig: serverConfig,
|
GenericConfig: serverConfig,
|
||||||
|
SharedInformerFactory: informerFactory,
|
||||||
}
|
}
|
||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
@ -118,5 +136,11 @@ func (o WardleServerOptions) RunWardleServer(stopCh <-chan struct{}) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
server.GenericAPIServer.AddPostStartHook("start-sample-server-informers", func(context genericapiserver.PostStartHookContext) error {
|
||||||
|
config.SharedInformerFactory.Start(context.StopCh)
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
return server.GenericAPIServer.PrepareRun().Run(stopCh)
|
return server.GenericAPIServer.PrepareRun().Run(stopCh)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user