Merge pull request #50374 from p0lyn0mial/sample_server_wire_admission
Automatic merge from submit-queue (batch tested with PRs 50386, 50374, 50444, 50382) wires ban flunder admission plugin to the sample server **What this PR does / why we need it**: this PR wires ban flunder admission plugin to the sample server. **Release note**: ``` NONE ```
This commit is contained in:
		@@ -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)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user