mirror of
https://github.com/kubernetes/node-problem-detector.git
synced 2026-03-02 01:30:26 +00:00
remove heapster from project dependencies
This commit is contained in:
148
pkg/exporters/k8sexporter/problemclient/configs.go
Normal file
148
pkg/exporters/k8sexporter/problemclient/configs.go
Normal file
@@ -0,0 +1,148 @@
|
||||
// Copyright 2014 Google Inc. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package problemclient
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/url"
|
||||
"strconv"
|
||||
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
kube_rest "k8s.io/client-go/rest"
|
||||
kubeClientCmd "k8s.io/client-go/tools/clientcmd"
|
||||
kubeClientCmdApi "k8s.io/client-go/tools/clientcmd/api"
|
||||
)
|
||||
|
||||
const (
|
||||
APIVersion = "v1"
|
||||
|
||||
defaultKubeletPort = 10255
|
||||
defaultKubeletHttps = false
|
||||
defaultUseServiceAccount = false
|
||||
defaultServiceAccountFile = "/var/run/secrets/kubernetes.io/serviceaccount/token"
|
||||
defaultInClusterConfig = true
|
||||
)
|
||||
|
||||
func getConfigOverrides(uri *url.URL) (*kubeClientCmd.ConfigOverrides, error) {
|
||||
kubeConfigOverride := kubeClientCmd.ConfigOverrides{
|
||||
ClusterInfo: kubeClientCmdApi.Cluster{},
|
||||
}
|
||||
if len(uri.Scheme) != 0 && len(uri.Host) != 0 {
|
||||
kubeConfigOverride.ClusterInfo.Server = fmt.Sprintf("%s://%s", uri.Scheme, uri.Host)
|
||||
}
|
||||
|
||||
opts := uri.Query()
|
||||
|
||||
if len(opts["insecure"]) > 0 {
|
||||
insecure, err := strconv.ParseBool(opts["insecure"][0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
kubeConfigOverride.ClusterInfo.InsecureSkipTLSVerify = insecure
|
||||
}
|
||||
|
||||
return &kubeConfigOverride, nil
|
||||
}
|
||||
|
||||
func getKubeClientConfig(uri *url.URL) (*kube_rest.Config, error) {
|
||||
var (
|
||||
kubeConfig *kube_rest.Config
|
||||
err error
|
||||
)
|
||||
|
||||
opts := uri.Query()
|
||||
configOverrides, err := getConfigOverrides(uri)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
inClusterConfig := defaultInClusterConfig
|
||||
if len(opts["inClusterConfig"]) > 0 {
|
||||
inClusterConfig, err = strconv.ParseBool(opts["inClusterConfig"][0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
if inClusterConfig {
|
||||
kubeConfig, err = kube_rest.InClusterConfig()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if configOverrides.ClusterInfo.Server != "" {
|
||||
kubeConfig.Host = configOverrides.ClusterInfo.Server
|
||||
}
|
||||
kubeConfig.GroupVersion = &schema.GroupVersion{Version: APIVersion}
|
||||
kubeConfig.Insecure = configOverrides.ClusterInfo.InsecureSkipTLSVerify
|
||||
if configOverrides.ClusterInfo.InsecureSkipTLSVerify {
|
||||
kubeConfig.TLSClientConfig.CAFile = ""
|
||||
}
|
||||
} else {
|
||||
authFile := ""
|
||||
if len(opts["auth"]) > 0 {
|
||||
authFile = opts["auth"][0]
|
||||
}
|
||||
|
||||
if authFile != "" {
|
||||
// Load structured kubeconfig data from the given path.
|
||||
loader := &kubeClientCmd.ClientConfigLoadingRules{ExplicitPath: authFile}
|
||||
loadedConfig, err := loader.Load()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Flatten the loaded data to a particular restclient.Config based on the current context.
|
||||
if kubeConfig, err = kubeClientCmd.NewNonInteractiveClientConfig(
|
||||
*loadedConfig,
|
||||
loadedConfig.CurrentContext,
|
||||
&kubeClientCmd.ConfigOverrides{},
|
||||
loader).ClientConfig(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
kubeConfig = &kube_rest.Config{
|
||||
Host: configOverrides.ClusterInfo.Server,
|
||||
TLSClientConfig: kube_rest.TLSClientConfig{
|
||||
Insecure: configOverrides.ClusterInfo.InsecureSkipTLSVerify,
|
||||
},
|
||||
}
|
||||
kubeConfig.GroupVersion = &schema.GroupVersion{Version: APIVersion}
|
||||
}
|
||||
}
|
||||
if len(kubeConfig.Host) == 0 {
|
||||
return nil, fmt.Errorf("invalid kubernetes master url specified")
|
||||
}
|
||||
|
||||
useServiceAccount := defaultUseServiceAccount
|
||||
if len(opts["useServiceAccount"]) >= 1 {
|
||||
useServiceAccount, err = strconv.ParseBool(opts["useServiceAccount"][0])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
if useServiceAccount {
|
||||
// If a readable service account token exists, then use it
|
||||
if contents, err := ioutil.ReadFile(defaultServiceAccountFile); err == nil {
|
||||
kubeConfig.BearerToken = string(contents)
|
||||
}
|
||||
}
|
||||
|
||||
kubeConfig.ContentType = "application/vnd.kubernetes.protobuf"
|
||||
|
||||
return kubeConfig, nil
|
||||
}
|
||||
@@ -34,7 +34,6 @@ import (
|
||||
"k8s.io/client-go/tools/record"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"k8s.io/heapster/common/kubernetes"
|
||||
"k8s.io/node-problem-detector/cmd/options"
|
||||
"k8s.io/node-problem-detector/pkg/version"
|
||||
)
|
||||
@@ -68,7 +67,7 @@ func NewClientOrDie(npdo *options.NodeProblemDetectorOptions) Client {
|
||||
// we have checked it is a valid URI after command line argument is parsed.:)
|
||||
uri, _ := url.Parse(npdo.ApiServerOverride)
|
||||
|
||||
cfg, err := kubernetes.GetKubeClientConfig(uri)
|
||||
cfg, err := getKubeClientConfig(uri)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user