Update apiserver for 1.10

This commit is contained in:
Justin Santa Barbara 2018-04-18 14:44:12 -04:00
parent 88023a3186
commit f06fbd0c5a
4 changed files with 167 additions and 89 deletions

82
Gopkg.lock generated
View File

@ -74,6 +74,12 @@
revision = "3391d3790d23d03408670993e957e8f408993c34" revision = "3391d3790d23d03408670993e957e8f408993c34"
version = "v1.0.1" version = "v1.0.1"
[[projects]]
name = "github.com/asaskevich/govalidator"
packages = ["."]
revision = "ccb8e960c48f04d6935e72476ae4a51028f9e22f"
version = "v9"
[[projects]] [[projects]]
name = "github.com/aws/aws-sdk-go" name = "github.com/aws/aws-sdk-go"
packages = [ packages = [
@ -328,6 +334,18 @@
revision = "300e940a926eb277d3901b20bdfcc54928ad3642" revision = "300e940a926eb277d3901b20bdfcc54928ad3642"
version = "v1.25.4" version = "v1.25.4"
[[projects]]
branch = "master"
name = "github.com/go-openapi/analysis"
packages = ["."]
revision = "863ac7f90e00e88e507095639a8457bbbf3c2ec9"
[[projects]]
branch = "master"
name = "github.com/go-openapi/errors"
packages = ["."]
revision = "7bcb96a367bac6b76e6e42fa84155bb5581dcff8"
[[projects]] [[projects]]
name = "github.com/go-openapi/jsonpointer" name = "github.com/go-openapi/jsonpointer"
packages = ["."] packages = ["."]
@ -338,16 +356,34 @@
packages = ["."] packages = ["."]
revision = "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" revision = "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272"
[[projects]]
branch = "master"
name = "github.com/go-openapi/loads"
packages = ["."]
revision = "2a2b323bab96e6b1fdee110e57d959322446e9c9"
[[projects]] [[projects]]
name = "github.com/go-openapi/spec" name = "github.com/go-openapi/spec"
packages = ["."] packages = ["."]
revision = "1de3e0542de65ad8d75452a595886fdd0befb363" revision = "1de3e0542de65ad8d75452a595886fdd0befb363"
[[projects]]
branch = "master"
name = "github.com/go-openapi/strfmt"
packages = ["."]
revision = "481808443b00a14745fada967cb5eeff0f9b1df2"
[[projects]] [[projects]]
name = "github.com/go-openapi/swag" name = "github.com/go-openapi/swag"
packages = ["."] packages = ["."]
revision = "f3f9494671f93fcff853e3c6e9e948b3eb71e590" revision = "f3f9494671f93fcff853e3c6e9e948b3eb71e590"
[[projects]]
name = "github.com/gobuffalo/envy"
packages = ["."]
revision = "ef60bfc50c8f92d1ee64674d8ce7a48f1f67625e"
version = "v1.6.2"
[[projects]] [[projects]]
name = "github.com/gogo/protobuf" name = "github.com/gogo/protobuf"
packages = [ packages = [
@ -490,6 +526,12 @@
packages = ["."] packages = ["."]
revision = "0b12d6b521d83fc7f755e7cfc1b1fbdd35a01a74" revision = "0b12d6b521d83fc7f755e7cfc1b1fbdd35a01a74"
[[projects]]
name = "github.com/joho/godotenv"
packages = ["."]
revision = "a79fa1e548e2c689c241d10173efd51e5d689d5b"
version = "v1.2.0"
[[projects]] [[projects]]
name = "github.com/jonboulle/clockwork" name = "github.com/jonboulle/clockwork"
packages = ["."] packages = ["."]
@ -514,6 +556,29 @@
packages = ["."] packages = ["."]
revision = "2788f0dbd16903de03cb8186e5c7d97b69ad387b" revision = "2788f0dbd16903de03cb8186e5c7d97b69ad387b"
[[projects]]
name = "github.com/kubernetes-incubator/apiserver-builder"
packages = [
"cmd/apiserver-boot",
"cmd/apiserver-boot/boot/build",
"cmd/apiserver-boot/boot/create",
"cmd/apiserver-boot/boot/init_repo",
"cmd/apiserver-boot/boot/run",
"cmd/apiserver-boot/boot/update",
"cmd/apiserver-boot/boot/util",
"cmd/apiserver-boot/boot/version"
]
revision = "e809ac2f9f0c238f08d08a876f8b3f499604f941"
[[projects]]
name = "github.com/kubernetes-incubator/reference-docs"
packages = [
"gen-apidocs",
"gen-apidocs/generators",
"gen-apidocs/generators/api"
]
revision = "8fadf91876ccbcfec367b434706a3c449073b0b4"
[[projects]] [[projects]]
name = "github.com/magiconair/properties" name = "github.com/magiconair/properties"
packages = ["."] packages = ["."]
@ -528,6 +593,12 @@
] ]
revision = "2f5df55504ebc322e4d52d34df6a1f5b503bf26d" revision = "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
[[projects]]
branch = "master"
name = "github.com/markbates/inflect"
packages = ["."]
revision = "fbc6b23ce49e2578f572d2e72bb72fa03c7145de"
[[projects]] [[projects]]
name = "github.com/matttproud/golang_protobuf_extensions" name = "github.com/matttproud/golang_protobuf_extensions"
packages = ["pbutil"] packages = ["pbutil"]
@ -920,6 +991,15 @@
packages = ["."] packages = ["."]
revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4"
[[projects]]
branch = "v2"
name = "gopkg.in/mgo.v2"
packages = [
"bson",
"internal/json"
]
revision = "3f83fa5005286a7fe593b055f0d7771a7dce4655"
[[projects]] [[projects]]
name = "gopkg.in/natefinch/lumberjack.v2" name = "gopkg.in/natefinch/lumberjack.v2"
packages = ["."] packages = ["."]
@ -1599,6 +1679,6 @@
[solve-meta] [solve-meta]
analyzer-name = "dep" analyzer-name = "dep"
analyzer-version = 1 analyzer-version = 1
inputs-digest = "a07cf721a3e7e0b73b9fcd398919c3d29dce5b2bc67bb11ddef7193d39df2e12" inputs-digest = "2e3d6ddfd1017a940526237cadd8a968d6e8170af9dac833b2a94bd8ffc4646f"
solver-name = "gps-cdcl" solver-name = "gps-cdcl"
solver-version = 1 solver-version = 1

View File

@ -11,6 +11,8 @@ required = [
# Needed for docs generation # Needed for docs generation
"k8s.io/code-generator/cmd/openapi-gen", "k8s.io/code-generator/cmd/openapi-gen",
"github.com/kubernetes-incubator/apiserver-builder/cmd/apiserver-boot",
"github.com/kubernetes-incubator/reference-docs/gen-apidocs",
] ]
[prune] [prune]
@ -66,6 +68,14 @@ required = [
name = "k8s.io/kubernetes" name = "k8s.io/kubernetes"
version = "v1.10.1" version = "v1.10.1"
# Needed for docs generation
[[override]]
name = "github.com/kubernetes-incubator/apiserver-builder"
revision = "e809ac2f9f0c238f08d08a876f8b3f499604f941"
[[override]]
name = "github.com/kubernetes-incubator/reference-docs"
revision = "8fadf91876ccbcfec367b434706a3c449073b0b4"
# These come from godeps.json in kubernetes # These come from godeps.json in kubernetes
[[override]] [[override]]

View File

@ -114,17 +114,34 @@ func (c completedConfig) New() (*KopsServer, error) {
apiGroupInfo := server.NewDefaultAPIGroupInfo(kops.GroupName, registry, Scheme, metav1.ParameterCodec, Codecs) apiGroupInfo := server.NewDefaultAPIGroupInfo(kops.GroupName, registry, Scheme, metav1.ParameterCodec, Codecs)
apiGroupInfo.GroupMeta.GroupVersion = v1alpha2.SchemeGroupVersion apiGroupInfo.GroupMeta.GroupVersion = v1alpha2.SchemeGroupVersion
v1alpha2storage := map[string]rest.Storage{}
v1alpha2storage["clusters"], err = registrycluster.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter) // {
if err != nil { // v1alpha1storage := map[string]rest.Storage{}
return nil, fmt.Errorf("error initializing clusters: %v", err) // v1alpha1storage["clusters"], err = registrycluster.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)
// if err != nil {
// return nil, fmt.Errorf("error initializing clusters: %v", err)
// }
// //v1alpha2stv1alpha1storageorage["clusters/full"] = registrycluster.NewREST(c.RESTOptionsGetter)
// v1alpha1storage["instancegroups"], err = registryinstancegroup.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)
// if err != nil {
// return nil, fmt.Errorf("error initializing instancegroups: %v", err)
// }
// apiGroupInfo.VersionedResourcesStorageMap["v1alpha1"] = v1alpha1storage
// }
{
v1alpha2storage := map[string]rest.Storage{}
v1alpha2storage["clusters"], err = registrycluster.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)
if err != nil {
return nil, fmt.Errorf("error initializing clusters: %v", err)
}
//v1alpha2storage["clusters/full"] = registrycluster.NewREST(c.RESTOptionsGetter)
v1alpha2storage["instancegroups"], err = registryinstancegroup.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)
if err != nil {
return nil, fmt.Errorf("error initializing instancegroups: %v", err)
}
apiGroupInfo.VersionedResourcesStorageMap["v1alpha2"] = v1alpha2storage
} }
//v1alpha2storage["clusters/full"] = registrycluster.NewREST(c.RESTOptionsGetter)
v1alpha2storage["instancegroups"], err = registryinstancegroup.NewREST(Scheme, c.GenericConfig.RESTOptionsGetter)
if err != nil {
return nil, fmt.Errorf("error initializing instancegroups: %v", err)
}
apiGroupInfo.VersionedResourcesStorageMap["v1alpha2"] = v1alpha2storage
if err := s.GenericAPIServer.InstallAPIGroup(&apiGroupInfo); err != nil { if err := s.GenericAPIServer.InstallAPIGroup(&apiGroupInfo); err != nil {
return nil, err return nil, err

View File

@ -41,11 +41,7 @@ import (
const defaultEtcdPathPrefix = "/registry/kops.kubernetes.io" const defaultEtcdPathPrefix = "/registry/kops.kubernetes.io"
type KopsServerOptions struct { type KopsServerOptions struct {
Etcd *genericoptions.EtcdOptions RecommendedOptions *genericoptions.RecommendedOptions
SecureServing *genericoptions.SecureServingOptions
//InsecureServing *genericoptions.ServingOptions
Authentication *genericoptions.DelegatingAuthenticationOptions
Authorization *genericoptions.DelegatingAuthorizationOptions
StdOut io.Writer StdOut io.Writer
StdErr io.Writer StdErr io.Writer
@ -56,20 +52,14 @@ type KopsServerOptions struct {
// NewCommandStartKopsServer provides a CLI handler for 'start master' command // NewCommandStartKopsServer provides a CLI handler for 'start master' command
func NewCommandStartKopsServer(out, err io.Writer) *cobra.Command { func NewCommandStartKopsServer(out, err io.Writer) *cobra.Command {
o := &KopsServerOptions{ o := &KopsServerOptions{
Etcd: genericoptions.NewEtcdOptions(&storagebackend.Config{ RecommendedOptions: genericoptions.NewRecommendedOptions(defaultEtcdPathPrefix,
Prefix: defaultEtcdPathPrefix, apiserver.Codecs.LegacyCodec(v1alpha2.SchemeGroupVersion)),
Codec: nil,
}),
SecureServing: genericoptions.NewSecureServingOptions(),
//InsecureServing: genericoptions.NewInsecureServingOptions(),
Authentication: genericoptions.NewDelegatingAuthenticationOptions(),
Authorization: genericoptions.NewDelegatingAuthorizationOptions(),
StdOut: out, StdOut: out,
StdErr: err, StdErr: err,
} }
o.Etcd.StorageConfig.Type = storagebackend.StorageTypeETCD2 o.RecommendedOptions.Etcd.StorageConfig.Type = storagebackend.StorageTypeETCD2
o.Etcd.StorageConfig.Codec = apiserver.Codecs.LegacyCodec(v1alpha2.SchemeGroupVersion) o.RecommendedOptions.Etcd.StorageConfig.Codec = apiserver.Codecs.LegacyCodec(v1alpha2.SchemeGroupVersion)
//o.SecureServing.ServingOptions.BindPort = 443 //o.SecureServing.ServingOptions.BindPort = 443
cmd := &cobra.Command{ cmd := &cobra.Command{
@ -90,11 +80,7 @@ func NewCommandStartKopsServer(out, err io.Writer) *cobra.Command {
} }
flags := cmd.Flags() flags := cmd.Flags()
o.Etcd.AddFlags(flags) o.RecommendedOptions.AddFlags(flags)
o.SecureServing.AddFlags(flags)
//o.InsecureServing.AddFlags(flags)
o.Authentication.AddFlags(flags)
o.Authorization.AddFlags(flags)
flags.BoolVar(&o.PrintOpenapi, "print-openapi", false, flags.BoolVar(&o.PrintOpenapi, "print-openapi", false,
"Print the openapi json and exit") "Print the openapi json and exit")
@ -104,8 +90,7 @@ func NewCommandStartKopsServer(out, err io.Writer) *cobra.Command {
func (o KopsServerOptions) Validate(args []string) error { func (o KopsServerOptions) Validate(args []string) error {
errors := []error{} errors := []error{}
//errors = append(errors, o.RecommendedOptions.Validate()...) errors = append(errors, o.RecommendedOptions.Validate()...)
//errors = append(errors, o.Admission.Validate()...)
return utilerrors.NewAggregate(errors) return utilerrors.NewAggregate(errors)
} }
@ -114,70 +99,62 @@ func (o *KopsServerOptions) Complete() error {
} }
func (o KopsServerOptions) Config() (*apiserver.Config, error) { func (o KopsServerOptions) Config() (*apiserver.Config, error) {
// // register admission plugins
//banflunder.Register(o.Admission.Plugins)
//
//// TODO have a "real" external address
//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)
//}
//
//serverConfig := genericapiserver.NewRecommendedConfig(apiserver.Codecs)
//if err := o.RecommendedOptions.ApplyTo(serverConfig); err != nil {
// return nil, err
//}
//
//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.Config, serverConfig.SharedInformerFactory, admissionInitializer); err != nil {
// return nil, err
//}
// TODO have a "real" external address // TODO have a "real" external address
if err := o.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)
} }
serverConfig := genericapiserver.NewRecommendedConfig(apiserver.Codecs) scheme := apiserver.Scheme
// 1.6: serverConfig := genericapiserver.NewConfig().WithSerializer(kops.Codecs) config := genericapiserver.NewRecommendedConfig(apiserver.Codecs)
//if err := o.RecommendedOptions.ApplyTo(serverConfig); err != nil {
// return nil, err
//}
serverConfig.CorsAllowedOriginList = []string{".*"} // We have to skip some of these to get docs to work...
// if err := o.RecommendedOptions.ApplyTo(config, scheme); err != nil {
// return nil, err
// }
if err := o.Etcd.ApplyTo(&serverConfig.Config); err != nil { if err := o.RecommendedOptions.Etcd.ApplyTo(&config.Config); err != nil {
return nil, err
}
if err := o.RecommendedOptions.SecureServing.ApplyTo(&config.Config); err != nil {
return nil, err return nil, err
} }
if err := o.SecureServing.ApplyTo(&serverConfig.Config); err != nil { if !o.PrintOpenapi {
if err := o.RecommendedOptions.Authentication.ApplyTo(&config.Config.Authentication, config.SecureServing, config.OpenAPIConfig); err != nil {
return nil, err
}
if err := o.RecommendedOptions.Authorization.ApplyTo(&config.Config.Authorization); err != nil {
return nil, err
}
glog.Warningf("Authentication/Authorization disabled")
}
if err := o.RecommendedOptions.Audit.ApplyTo(&config.Config); err != nil {
return nil, err
}
if err := o.RecommendedOptions.Features.ApplyTo(&config.Config); err != nil {
return nil, err return nil, err
} }
//if err := o.InsecureServing.ApplyTo(serverConfig); err != nil {
// return err
//}
glog.Warningf("Authentication/Authorization disabled") if !o.PrintOpenapi {
if err := o.RecommendedOptions.CoreAPI.ApplyTo(config); err != nil {
return nil, err
}
//var err error if initializers, err := o.RecommendedOptions.ExtraAdmissionInitializers(config); err != nil {
//privilegedLoopbackToken := uuid.NewRandom().String() return nil, err
//if genericAPIServerConfig.LoopbackClientConfig, err = genericAPIServerConfig.SecureServingInfo.NewSelfClientConfig(privilegedLoopbackToken); err != nil { } else if err := o.RecommendedOptions.Admission.ApplyTo(&config.Config, config.SharedInformerFactory, config.ClientConfig, scheme, initializers...); err != nil {
// return err return nil, err
// } }
}
config := &apiserver.Config{ // serverConfig.CorsAllowedOriginList = []string{".*"}
GenericConfig: serverConfig,
return &apiserver.Config{
GenericConfig: config,
ExtraConfig: apiserver.ExtraConfig{}, ExtraConfig: apiserver.ExtraConfig{},
} }, nil
return config, nil
} }
func (o KopsServerOptions) RunKopsServer() error { func (o KopsServerOptions) RunKopsServer() error {
@ -186,11 +163,6 @@ func (o KopsServerOptions) RunKopsServer() error {
return err return err
} }
//config := apiserver.Config{
// GenericConfig: serverConfig,
// RESTOptionsGetter: &restOptionsFactory{storageConfig: &o.Etcd.StorageConfig},
//}
// Configure the openapi spec provided on /swagger.json // Configure the openapi spec provided on /swagger.json
// TODO: Come up with a better title and a meaningful version // TODO: Come up with a better title and a meaningful version
config.GenericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig( config.GenericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(
@ -203,8 +175,6 @@ func (o KopsServerOptions) RunKopsServer() error {
return err return err
} }
srv := server.GenericAPIServer.PrepareRun()
//server.GenericAPIServer.AddPostStartHook("start-sample-server-informers", func(context genericapiserver.PostStartHookContext) error { //server.GenericAPIServer.AddPostStartHook("start-sample-server-informers", func(context genericapiserver.PostStartHookContext) error {
// config.GenericConfig.SharedInformerFactory.Start(context.StopCh) // config.GenericConfig.SharedInformerFactory.Start(context.StopCh)
// return nil // return nil
@ -217,6 +187,7 @@ func (o KopsServerOptions) RunKopsServer() error {
os.Exit(0) os.Exit(0)
} }
srv := server.GenericAPIServer.PrepareRun()
return srv.Run(wait.NeverStop) return srv.Run(wait.NeverStop)
} }