// MergeWithConfig returns a copy of a client.Config with values from the Info. // The fields of client.Config with a corresponding field in the Info are set // with the value from the Info. func (info Info) MergeWithConfig(c rest.Config) (rest.Config, error) { var config rest.Config = c config.Username = info.User config.Password = info.Password config.CAFile = info.CAFile config.CertFile = info.CertFile config.KeyFile = info.KeyFile config.BearerToken = info.BearerToken if info.Insecure != nil { config.Insecure = *info.Insecure } return config, nil }
// New creates a new Kubernetes discovery for the given role. func New(l log.Logger, conf *config.KubernetesSDConfig) (*Kubernetes, error) { var ( kcfg *rest.Config err error ) if conf.APIServer.URL == nil { kcfg, err = rest.InClusterConfig() if err != nil { return nil, err } } else { token := conf.BearerToken if conf.BearerTokenFile != "" { bf, err := ioutil.ReadFile(conf.BearerTokenFile) if err != nil { return nil, err } token = string(bf) } kcfg = &rest.Config{ Host: conf.APIServer.String(), BearerToken: token, TLSClientConfig: rest.TLSClientConfig{ CAFile: conf.TLSConfig.CAFile, }, } } kcfg.UserAgent = "prometheus/discovery" if conf.BasicAuth != nil { kcfg.Username = conf.BasicAuth.Username kcfg.Password = conf.BasicAuth.Password } kcfg.TLSClientConfig.CertFile = conf.TLSConfig.CertFile kcfg.TLSClientConfig.KeyFile = conf.TLSConfig.KeyFile kcfg.Insecure = conf.TLSConfig.InsecureSkipVerify c, err := kubernetes.NewForConfig(kcfg) if err != nil { return nil, err } return &Kubernetes{ client: c, logger: l, role: conf.Role, }, nil }