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"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//vendor/github.com/spf13/cobra:go_default_library",
|
"//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: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/apis/wardle/v1alpha1:go_default_library",
|
"//vendor/k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1:go_default_library",
|
||||||
|
|
|
@ -22,6 +22,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/spf13/pflag"
|
||||||
|
|
||||||
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"
|
||||||
|
@ -33,6 +34,7 @@ const defaultEtcdPathPrefix = "/registry/wardle.kubernetes.io"
|
||||||
|
|
||||||
type WardleServerOptions struct {
|
type WardleServerOptions struct {
|
||||||
RecommendedOptions *genericoptions.RecommendedOptions
|
RecommendedOptions *genericoptions.RecommendedOptions
|
||||||
|
Admission *genericoptions.AdmissionOptions
|
||||||
|
|
||||||
StdOut io.Writer
|
StdOut io.Writer
|
||||||
StdErr io.Writer
|
StdErr io.Writer
|
||||||
|
@ -41,6 +43,7 @@ type WardleServerOptions struct {
|
||||||
func NewWardleServerOptions(out, errOut io.Writer) *WardleServerOptions {
|
func NewWardleServerOptions(out, errOut io.Writer) *WardleServerOptions {
|
||||||
o := &WardleServerOptions{
|
o := &WardleServerOptions{
|
||||||
RecommendedOptions: genericoptions.NewRecommendedOptions(defaultEtcdPathPrefix, apiserver.Scheme, apiserver.Codecs.LegacyCodec(v1alpha1.SchemeGroupVersion)),
|
RecommendedOptions: genericoptions.NewRecommendedOptions(defaultEtcdPathPrefix, apiserver.Scheme, apiserver.Codecs.LegacyCodec(v1alpha1.SchemeGroupVersion)),
|
||||||
|
Admission: genericoptions.NewAdmissionOptions(),
|
||||||
|
|
||||||
StdOut: out,
|
StdOut: out,
|
||||||
StdErr: errOut,
|
StdErr: errOut,
|
||||||
|
@ -49,6 +52,11 @@ func NewWardleServerOptions(out, errOut io.Writer) *WardleServerOptions {
|
||||||
return o
|
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
|
// NewCommandStartMaster provides a CLI handler for 'start master' command
|
||||||
func NewCommandStartWardleServer(out, errOut io.Writer, stopCh <-chan struct{}) *cobra.Command {
|
func NewCommandStartWardleServer(out, errOut io.Writer, stopCh <-chan struct{}) *cobra.Command {
|
||||||
o := NewWardleServerOptions(out, errOut)
|
o := NewWardleServerOptions(out, errOut)
|
||||||
|
@ -71,7 +79,7 @@ func NewCommandStartWardleServer(out, errOut io.Writer, stopCh <-chan struct{})
|
||||||
}
|
}
|
||||||
|
|
||||||
flags := cmd.Flags()
|
flags := cmd.Flags()
|
||||||
o.RecommendedOptions.AddFlags(flags)
|
o.addFlags(flags)
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
@ -95,6 +103,10 @@ func (o WardleServerOptions) Config() (*apiserver.Config, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := o.Admission.ApplyTo(serverConfig); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
config := &apiserver.Config{
|
config := &apiserver.Config{
|
||||||
GenericConfig: serverConfig,
|
GenericConfig: serverConfig,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue