mirror of https://github.com/k3s-io/k3s
Merge pull request #47352 from p0lyn0mial/wire_admission_to_sample_apiserver
Automatic merge from submit-queue shows how to wire admission control in a sample api server. **What this PR does / why we need it**: This PR shows how to wire admission control in a custom api server **Release note**: ```release-note NONE ```pull/6/head
commit
9120d58fc9
|
@ -13,6 +13,7 @@ go_library(
|
|||
tags = ["automanaged"],
|
||||
deps = [
|
||||
"//vendor/github.com/spf13/cobra:go_default_library",
|
||||
"//vendor/github.com/spf13/pflag: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/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library",
|
||||
|
|
|
@ -22,6 +22,7 @@ import (
|
|||
"net"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/pflag"
|
||||
|
||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||
genericoptions "k8s.io/apiserver/pkg/server/options"
|
||||
|
@ -33,6 +34,7 @@ const defaultEtcdPathPrefix = "/registry/wardle.kubernetes.io"
|
|||
|
||||
type WardleServerOptions struct {
|
||||
RecommendedOptions *genericoptions.RecommendedOptions
|
||||
Admission *genericoptions.AdmissionOptions
|
||||
|
||||
StdOut io.Writer
|
||||
StdErr io.Writer
|
||||
|
@ -41,6 +43,7 @@ type WardleServerOptions struct {
|
|||
func NewWardleServerOptions(out, errOut io.Writer) *WardleServerOptions {
|
||||
o := &WardleServerOptions{
|
||||
RecommendedOptions: genericoptions.NewRecommendedOptions(defaultEtcdPathPrefix, apiserver.Scheme, apiserver.Codecs.LegacyCodec(v1alpha1.SchemeGroupVersion)),
|
||||
Admission: genericoptions.NewAdmissionOptions(),
|
||||
|
||||
StdOut: out,
|
||||
StdErr: errOut,
|
||||
|
@ -49,6 +52,11 @@ func NewWardleServerOptions(out, errOut io.Writer) *WardleServerOptions {
|
|||
return o
|
||||
}
|
||||
|
||||
func (o *WardleServerOptions) addFlags(flags *pflag.FlagSet) {
|
||||
o.RecommendedOptions.AddFlags(flags)
|
||||
o.Admission.AddFlags(flags)
|
||||
}
|
||||
|
||||
// NewCommandStartMaster provides a CLI handler for 'start master' command
|
||||
func NewCommandStartWardleServer(out, errOut io.Writer, stopCh <-chan struct{}) *cobra.Command {
|
||||
o := NewWardleServerOptions(out, errOut)
|
||||
|
@ -71,7 +79,7 @@ func NewCommandStartWardleServer(out, errOut io.Writer, stopCh <-chan struct{})
|
|||
}
|
||||
|
||||
flags := cmd.Flags()
|
||||
o.RecommendedOptions.AddFlags(flags)
|
||||
o.addFlags(flags)
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
@ -95,6 +103,10 @@ func (o WardleServerOptions) Config() (*apiserver.Config, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if err := o.Admission.ApplyTo(serverConfig); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
config := &apiserver.Config{
|
||||
GenericConfig: serverConfig,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue