func setPolicyDefaults(config *restclient.Config) error { g, err := registered.Group(policy.GroupName) if err != nil { return err } config.APIPath = defaultAPIPath if config.UserAgent == "" { config.UserAgent = restclient.DefaultKubernetesUserAgent() } // TODO: Unconditionally set the config.Version, until we fix the config. //if config.Version == "" { copyGroupVersion := g.GroupVersion config.GroupVersion = ©GroupVersion //} config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs if config.QPS == 0 { config.QPS = 5 } if config.Burst == 0 { config.Burst = 10 } return nil }
func setConfigDefaults(config *restclient.Config) error { // if core group is not registered, return an error g, err := registered.Group("") if err != nil { return err } config.APIPath = "/api" if config.UserAgent == "" { config.UserAgent = restclient.DefaultKubernetesUserAgent() } // TODO: Unconditionally set the config.Version, until we fix the config. //if config.Version == "" { copyGroupVersion := g.GroupVersion config.GroupVersion = ©GroupVersion //} config.NegotiatedSerializer = api.Codecs if config.QPS == 0 { config.QPS = 5 } if config.Burst == 0 { config.Burst = 10 } return nil }
// NewClient returns a new client based on the passed in config. The // codec is ignored, as the dynamic client uses it's own codec. func NewClient(conf *restclient.Config) (*Client, error) { // avoid changing the original config confCopy := *conf conf = &confCopy codec := dynamicCodec{} // TODO: it's questionable that this should be using anything other than unstructured schema and JSON conf.ContentType = runtime.ContentTypeJSON streamingInfo, _ := api.Codecs.StreamingSerializerForMediaType("application/json;stream=watch", nil) conf.NegotiatedSerializer = serializer.NegotiatedSerializerWrapper(runtime.SerializerInfo{Serializer: codec}, streamingInfo) if conf.APIPath == "" { conf.APIPath = "/api" } if len(conf.UserAgent) == 0 { conf.UserAgent = restclient.DefaultKubernetesUserAgent() } if conf.QPS == 0.0 { conf.QPS = 5.0 } if conf.Burst == 0 { conf.Burst = 10 } cl, err := restclient.RESTClientFor(conf) if err != nil { return nil, err } return &Client{cl: cl}, nil }
func setConfigDefaults(config *restclient.Config) error { // if testgroup group is not registered, return an error g, err := registered.Group("testgroup.k8s.io") if err != nil { return err } config.APIPath = "/apis" if config.UserAgent == "" { config.UserAgent = restclient.DefaultKubernetesUserAgent() } // TODO: Unconditionally set the config.Version, until we fix the config. //if config.Version == "" { copyGroupVersion := g.GroupVersion config.GroupVersion = ©GroupVersion //} config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) if config.QPS == 0 { config.QPS = 5 } if config.Burst == 0 { config.Burst = 10 } return nil }
func BuildClusterConfig(c *federation_v1beta1.Cluster) (*restclient.Config, error) { var serverAddress string var clusterConfig *restclient.Config hostIP, err := utilnet.ChooseHostInterface() if err != nil { return nil, err } for _, item := range c.Spec.ServerAddressByClientCIDRs { _, cidrnet, err := net.ParseCIDR(item.ClientCIDR) if err != nil { return nil, err } myaddr := net.ParseIP(hostIP.String()) if cidrnet.Contains(myaddr) == true { serverAddress = item.ServerAddress break } } if serverAddress != "" { if c.Spec.SecretRef == nil { glog.Infof("didn't find secretRef for cluster %s. Trying insecure access", c.Name) clusterConfig, err = clientcmd.BuildConfigFromFlags(serverAddress, "") } else { kubeconfigGetter := KubeconfigGetterForCluster(c) clusterConfig, err = clientcmd.BuildConfigFromKubeconfigGetter(serverAddress, kubeconfigGetter) } if err != nil { return nil, err } clusterConfig.QPS = KubeAPIQPS clusterConfig.Burst = KubeAPIBurst } return clusterConfig, nil }
// NewClient returns a new client based on the passed in config. The // codec is ignored, as the dynamic client uses it's own codec. func NewClient(conf *restclient.Config) (*Client, error) { // avoid changing the original config confCopy := *conf conf = &confCopy conf.Codec = dynamicCodec{} if conf.APIPath == "" { conf.APIPath = "/api" } if len(conf.UserAgent) == 0 { conf.UserAgent = restclient.DefaultKubernetesUserAgent() } if conf.QPS == 0.0 { conf.QPS = 5.0 } if conf.Burst == 0 { conf.Burst = 10 } cl, err := restclient.RESTClientFor(conf) if err != nil { return nil, err } return &Client{cl: cl}, nil }
func setConfigDefaults(config *restclient.Config) error { // if extensions group is not registered, return an error g, err := registered.Group("extensions") if err != nil { return err } config.APIPath = "/apis" if config.UserAgent == "" { config.UserAgent = restclient.DefaultKubernetesUserAgent() } // TODO: Unconditionally set the config.Version, until we fix the config. //if config.Version == "" { copyGroupVersion := g.GroupVersion config.GroupVersion = ©GroupVersion //} codec, ok := api.Codecs.SerializerForFileExtension("json") if !ok { return fmt.Errorf("unable to find serializer for JSON") } config.Codec = codec if config.QPS == 0 { config.QPS = 5 } if config.Burst == 0 { config.Burst = 10 } return nil }
func (s *DelegatingAuthenticationOptions) newTokenAccessReview() (authenticationclient.TokenReviewInterface, error) { var clientConfig *restclient.Config var err error if len(s.RemoteKubeConfigFile) > 0 { loadingRules := &clientcmd.ClientConfigLoadingRules{ExplicitPath: s.RemoteKubeConfigFile} loader := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, &clientcmd.ConfigOverrides{}) clientConfig, err = loader.ClientConfig() } else { // without the remote kubeconfig file, try to use the in-cluster config. Most addon API servers will // use this path clientConfig, err = restclient.InClusterConfig() } if err != nil { return nil, err } // set high qps/burst limits since this will effectively limit API server responsiveness clientConfig.QPS = 200 clientConfig.Burst = 400 client, err := authenticationclient.NewForConfig(clientConfig) if err != nil { return nil, err } return client.TokenReviews(), nil }
func setExtensionsDefaults(config *restclient.Config) error { // if experimental group is not registered, return an error g, err := registered.Group(extensions.GroupName) if err != nil { return err } config.APIPath = defaultAPIPath if config.UserAgent == "" { config.UserAgent = restclient.DefaultKubernetesUserAgent() } // TODO: Unconditionally set the config.Version, until we fix the config. //if config.Version == "" { copyGroupVersion := g.GroupVersion config.GroupVersion = ©GroupVersion //} config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) if config.QPS == 0 { config.QPS = 5 } if config.Burst == 0 { config.Burst = 10 } return nil }
func setBatchDefaults(config *restclient.Config, gv *unversioned.GroupVersion) error { // if batch group is not registered, return an error g, err := registered.Group(batch.GroupName) if err != nil { return err } config.APIPath = defaultAPIPath if config.UserAgent == "" { config.UserAgent = restclient.DefaultKubernetesUserAgent() } // TODO: Unconditionally set the config.Version, until we fix the config. //if config.Version == "" { copyGroupVersion := g.GroupVersion if gv != nil { copyGroupVersion = *gv } config.GroupVersion = ©GroupVersion //} config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs if config.QPS == 0 { config.QPS = 5 } if config.Burst == 0 { config.Burst = 10 } return nil }
// applyClientConnectionOverrides updates a kubeConfig with the overrides from the config. func applyClientConnectionOverrides(overrides *ClientConnectionOverrides, kubeConfig *restclient.Config) { if overrides == nil { return } kubeConfig.QPS = overrides.QPS kubeConfig.Burst = int(overrides.Burst) kubeConfig.ContentConfig.AcceptContentTypes = overrides.AcceptContentTypes kubeConfig.ContentConfig.ContentType = overrides.ContentType }
func setCertificatesDefaults(config *restclient.Config) error { setGroupDefaults(certificates.GroupName, config) if config.QPS == 0 { config.QPS = 5 } if config.Burst == 0 { config.Burst = 10 } return nil }
func setConfigDefaults(config *restclient.Config) error { // if core group is not registered, return an error g, err := registered.Group("") if err != nil { return err } config.APIPath = "/api" if config.UserAgent == "" { config.UserAgent = restclient.DefaultKubernetesUserAgent() } if config.GroupVersion == nil || config.GroupVersion.Group != g.GroupVersion.Group { copyGroupVersion := g.GroupVersion config.GroupVersion = ©GroupVersion } config.NegotiatedSerializer = api.Codecs if config.QPS == 0 { config.QPS = 5 } if config.Burst == 0 { config.Burst = 10 } return nil }
// Run runs the CMServer. This should never exit. func Run(s *options.CMServer) error { glog.Infof("%+v", version.Get()) if c, err := configz.New("componentconfig"); err == nil { c.Set(s.ControllerManagerConfiguration) } else { glog.Errorf("unable to register configz: %s", err) } // If s.Kubeconfig flag is empty, try with the deprecated name in 1.5. // TODO(madhusudancs): Remove this in 1.6. var restClientCfg *restclient.Config var err error if len(s.Kubeconfig) <= 0 { restClientCfg, err = restClientConfigFromSecret(s.Master) if err != nil { return err } } else { // Create the config to talk to federation-apiserver. restClientCfg, err = clientcmd.BuildConfigFromFlags(s.Master, s.Kubeconfig) if err != nil || restClientCfg == nil { // Retry with the deprecated name in 1.5. // TODO(madhusudancs): Remove this in 1.6. glog.V(2).Infof("Couldn't build the rest client config from flags: %v", err) glog.V(2).Infof("Trying with deprecated secret: %s", DeprecatedKubeconfigSecretName) restClientCfg, err = restClientConfigFromSecret(s.Master) if err != nil { return err } } } // Override restClientCfg qps/burst settings from flags restClientCfg.QPS = s.APIServerQPS restClientCfg.Burst = s.APIServerBurst go func() { mux := http.NewServeMux() healthz.InstallHandler(mux) if s.EnableProfiling { mux.HandleFunc("/debug/pprof/", pprof.Index) mux.HandleFunc("/debug/pprof/profile", pprof.Profile) mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol) } mux.Handle("/metrics", prometheus.Handler()) server := &http.Server{ Addr: net.JoinHostPort(s.Address, strconv.Itoa(s.Port)), Handler: mux, } glog.Fatal(server.ListenAndServe()) }() run := func() { err := StartControllers(s, restClientCfg) glog.Fatalf("error running controllers: %v", err) panic("unreachable") } run() panic("unreachable") }
// BeforeEach gets a client and makes a namespace. func (f *Framework) BeforeEach() { // The fact that we need this feels like a bug in ginkgo. // https://github.com/onsi/ginkgo/issues/222 f.cleanupHandle = AddCleanupAction(f.AfterEach) if f.Client == nil { By("Creating a kubernetes client") var config *restclient.Config if TestContext.NodeName != "" { // This is a node e2e test, apply the node e2e configuration config = &restclient.Config{ Host: TestContext.Host, QPS: 100, Burst: 100, } } else { var err error config, err = LoadConfig() Expect(err).NotTo(HaveOccurred()) config.QPS = f.options.ClientQPS config.Burst = f.options.ClientBurst } if TestContext.KubeAPIContentType != "" { config.ContentType = TestContext.KubeAPIContentType } c, err := loadClientFromConfig(config) Expect(err).NotTo(HaveOccurred()) f.Client = c f.Clientset_1_2, err = release_1_2.NewForConfig(config) Expect(err).NotTo(HaveOccurred()) f.Clientset_1_3, err = release_1_3.NewForConfig(config) Expect(err).NotTo(HaveOccurred()) } if f.federated { if f.FederationClient == nil { By("Creating a federated kubernetes client") var err error f.FederationClient, err = LoadFederationClient() Expect(err).NotTo(HaveOccurred()) } if f.FederationClientset == nil { By("Creating an unversioned federation Clientset") var err error f.FederationClientset, err = LoadFederationClientset() Expect(err).NotTo(HaveOccurred()) } if f.FederationClientset_1_3 == nil { By("Creating a release 1.3 federation Clientset") var err error f.FederationClientset_1_3, err = LoadFederationClientset_1_3() Expect(err).NotTo(HaveOccurred()) } By("Waiting for federation-apiserver to be ready") err := WaitForFederationApiserverReady(f.FederationClientset) Expect(err).NotTo(HaveOccurred()) By("federation-apiserver is ready") } By("Building a namespace api object") namespace, err := f.CreateNamespace(f.BaseName, map[string]string{ "e2e-framework": f.BaseName, }) Expect(err).NotTo(HaveOccurred()) f.Namespace = namespace if TestContext.VerifyServiceAccount { By("Waiting for a default service account to be provisioned in namespace") err = WaitForDefaultServiceAccountInNamespace(f.Client, namespace.Name) Expect(err).NotTo(HaveOccurred()) } else { Logf("Skipping waiting for service account") } if TestContext.GatherKubeSystemResourceUsageData != "false" && TestContext.GatherKubeSystemResourceUsageData != "none" { f.gatherer, err = NewResourceUsageGatherer(f.Client, ResourceGathererOptions{ inKubemark: ProviderIs("kubemark"), masterOnly: TestContext.GatherKubeSystemResourceUsageData == "master", }) if err != nil { Logf("Error while creating NewResourceUsageGatherer: %v", err) } else { go f.gatherer.startGatheringData() } } if TestContext.GatherLogsSizes { f.logsSizeWaitGroup = sync.WaitGroup{} f.logsSizeWaitGroup.Add(1) f.logsSizeCloseChannel = make(chan bool) f.logsSizeVerifier = NewLogsVerifier(f.Client, f.logsSizeCloseChannel) go func() { f.logsSizeVerifier.Run() f.logsSizeWaitGroup.Done() }() } }