// InstallAPI starts a Kubernetes master and registers the supported REST APIs // into the provided mux, then returns an array of strings indicating what // endpoints were started (these are format strings that will expect to be sent // a single string value). func (c *MasterConfig) InstallAPI(container *restful.Container) ([]string, error) { c.Master.RestfulContainer = container if c.Master.EnableCoreControllers { glog.V(2).Info("Using the lease endpoint reconciler") leaseStorage, err := c.Master.StorageFactory.New(kapi.Resource("apiServerIPInfo")) if err != nil { glog.Fatalf(err.Error()) } leaseTTL := uint64(master.DefaultEndpointReconcilerInterval + 5) // add 5 seconds for wiggle room masterLeases := election.NewLeases(leaseStorage, "/masterleases/", leaseTTL) storage, err := c.Master.StorageFactory.New(kapi.Resource("endpoints")) if err != nil { glog.Fatalf(err.Error()) } endpointsStorage := endpointsetcd.NewREST(generic.RESTOptions{ Storage: storage, Decorator: generic.UndecoratedStorage, DeleteCollectionWorkers: 0, }) endpointRegistry := endpoint.NewRegistry(endpointsStorage) c.Master.EndpointReconcilerConfig = master.EndpointReconcilerConfig{ Reconciler: election.NewLeaseEndpointReconciler(endpointRegistry, masterLeases), Interval: master.DefaultEndpointReconcilerInterval, } } _, err := master.New(c.Master) if err != nil { return nil, err } messages := []string{} // v1 has to be printed separately since it's served from different endpoint than groups if configapi.HasKubernetesAPIVersion(c.Options, v1.SchemeGroupVersion) { messages = append(messages, fmt.Sprintf("Started Kubernetes API at %%s%s", KubeAPIPrefix)) } versions := []unversioned.GroupVersion{ extv1beta1.SchemeGroupVersion, batchv1.SchemeGroupVersion, autoscalingv1.SchemeGroupVersion, appsv1alpha1.SchemeGroupVersion, } for _, ver := range versions { if configapi.HasKubernetesAPIVersion(c.Options, ver) { messages = append(messages, fmt.Sprintf("Started Kubernetes API %s at %%s%s", ver.String(), KubeAPIGroupPrefix)) } } return messages, nil }
// InstallAPI starts a Kubernetes master and registers the supported REST APIs // into the provided mux, then returns an array of strings indicating what // endpoints were started (these are format strings that will expect to be sent // a single string value). func (c *MasterConfig) InstallAPI(container *restful.Container) ([]string, error) { c.Master.RestfulContainer = container if c.Master.EnableCoreControllers { glog.V(2).Info("Using the lease endpoint reconciler") config, err := c.Master.StorageFactory.NewConfig(kapi.Resource("apiServerIPInfo")) if err != nil { return nil, err } leaseStorage, _, err := storagefactory.Create(*config) if err != nil { return nil, err } masterLeases := newMasterLeases(leaseStorage) endpointConfig, err := c.Master.StorageFactory.NewConfig(kapi.Resource("endpoints")) if err != nil { return nil, err } endpointsStorage := endpointsetcd.NewREST(generic.RESTOptions{ StorageConfig: endpointConfig, Decorator: generic.UndecoratedStorage, DeleteCollectionWorkers: 0, ResourcePrefix: c.Master.StorageFactory.ResourcePrefix(kapi.Resource("endpoints")), }) endpointRegistry := endpoint.NewRegistry(endpointsStorage) c.Master.EndpointReconcilerConfig = master.EndpointReconcilerConfig{ Reconciler: election.NewLeaseEndpointReconciler(endpointRegistry, masterLeases), Interval: master.DefaultEndpointReconcilerInterval, } } _, err := master.New(c.Master) if err != nil { return nil, err } messages := []string{} // v1 has to be printed separately since it's served from different endpoint than groups if configapi.HasKubernetesAPIVersion(c.Options, v1.SchemeGroupVersion) { messages = append(messages, fmt.Sprintf("Started Kubernetes API at %%s%s", KubeAPIPrefix)) } // TODO: this is a bit much - I exist in some code somewhere versions := []unversioned.GroupVersion{ extv1beta1.SchemeGroupVersion, batchv1.SchemeGroupVersion, batchv2alpha1.SchemeGroupVersion, autoscalingv1.SchemeGroupVersion, certificatesv1alpha1.SchemeGroupVersion, appsv1alpha1.SchemeGroupVersion, policyv1alpha1.SchemeGroupVersion, federationv1beta1.SchemeGroupVersion, } for _, ver := range versions { if configapi.HasKubernetesAPIVersion(c.Options, ver) { messages = append(messages, fmt.Sprintf("Started Kubernetes API %s at %%s%s", ver.String(), KubeAPIGroupPrefix)) } } return messages, nil }