Skip to content

Commit

Permalink
Merge pull request #2877 from NikitaSkrynnik/print-err
Browse files Browse the repository at this point in the history
Use bash command to get namspace list instead of kube clients
  • Loading branch information
denis-tingaikin authored Jul 31, 2023
2 parents 513146a + fd24b2d commit f988de5
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 522 deletions.
62 changes: 12 additions & 50 deletions extensions/logs/logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,23 +33,14 @@ import (

"github.com/kelseyhightower/envconfig"
"github.com/sirupsen/logrus"
corev1 "k8s.io/api/core/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"

"github.com/networkservicemesh/gotestmd/pkg/bash"
)

const (
defaultQPS = 5 // this is default value for QPS of kubeconfig. See at documentation.
)

var (
once sync.Once
config Config
ctx context.Context
kubeClients []kubernetes.Interface
kubeConfigs []string
matchRegex *regexp.Regexp
runner *bash.Bash
Expand Down Expand Up @@ -97,36 +88,6 @@ func initialize() {
kubeConfigs = append(kubeConfigs, singleClusterKubeConfig)
}

var apiVersions = []string{"client.authentication.k8s.io/v1", "client.authentication.k8s.io/v1beta1", "client.authentication.k8s.io/v1alpha1"}

for _, cfg := range kubeConfigs {
for _, apiVersion := range apiVersions {
kubeconfig, err := clientcmd.BuildConfigFromFlags("", cfg)
if err != nil {
logrus.Warn(err.Error())
continue
}
kubeconfig.QPS = float32(config.WorkerCount) * defaultQPS
kubeconfig.Burst = int(kubeconfig.QPS) * 2

if kubeconfig.ExecProvider != nil {
kubeconfig.ExecProvider.APIVersion = apiVersion
}

kubeClient, err := kubernetes.NewForConfig(kubeconfig)
if err != nil {
logrus.Warn(err.Error())
continue
}
kubeClients = append(kubeClients, kubeClient)
break
}
}
if len(kubeClients) == 0 {
logrus.Warn("k8s clients weren't initialized properly. loggig is disabled")
return
}

runner, _ = bash.New()

ctx, _ = signal.NotifyContext(context.Background(),
Expand All @@ -141,15 +102,16 @@ func initialize() {
if ctx.Err() != nil {
return
}
for i, client := range kubeClients {
for i := range kubeConfigs {
suitedir := filepath.Join(config.ArtifactsDir, fmt.Sprintf("cluster%v", i))
nsList, _ := client.CoreV1().Namespaces().List(ctx, v1.ListOptions{})

_, _, exitCode, err := runner.Run(
fmt.Sprintf("kubectl --kubeconfig %v cluster-info dump --output-directory=%s --namespaces %s",
kubeConfigs[i],
suitedir,
strings.Join(filterNamespaces(nsList), ",")))
nsString, _, _, _ := runner.Run(fmt.Sprintf(`kubectl --kubeconfig %v get ns -o go-template='{{range .items}}{{ .metadata.name }} {{end}}'`, kubeConfigs[i]))
nsList := strings.Split(nsString, " ")

_, _, exitCode, err := runner.Run(fmt.Sprintf("kubectl --kubeconfig %v cluster-info dump --output-directory=%s --namespaces %s",
kubeConfigs[i],
suitedir,
strings.Join(filterNamespaces(nsList), ",")))

if exitCode != 0 {
logrus.Errorf("An error while getting cluster dump. Exit Code: %v", exitCode)
Expand All @@ -167,12 +129,12 @@ func ClusterDump() {
clusterDumpSingleOperation.Run()
}

func filterNamespaces(nsList *corev1.NamespaceList) []string {
func filterNamespaces(nsList []string) []string {
result := make([]string, 0)

for i := range nsList.Items {
if matchRegex.MatchString(nsList.Items[i].Name) {
result = append(result, nsList.Items[i].Name)
for i := range nsList {
if matchRegex.MatchString(nsList[i]) {
result = append(result, nsList[i])
}
}

Expand Down
44 changes: 5 additions & 39 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,49 +9,15 @@ require (
github.com/sirupsen/logrus v1.8.1
github.com/stretchr/testify v1.8.1
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.27.3
k8s.io/apimachinery v0.27.3
k8s.io/client-go v0.27.3
)

require (
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/jsonreference v0.20.1 // indirect
github.com/go-openapi/swag v0.22.3 // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
golang.org/x/term v0.6.0 // indirect
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/gofuzz v1.1.0 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/kr/pretty v0.3.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
golang.org/x/net v0.8.0 // indirect
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect
github.com/rogpeppe/go-internal v1.10.0 // indirect
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
golang.org/x/sys v0.6.0 // indirect
golang.org/x/text v0.8.0 // indirect
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
k8s.io/klog/v2 v2.90.1 // indirect
k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
golang.org/x/tools v0.7.0 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
)
Loading

0 comments on commit f988de5

Please sign in to comment.