From 422fbc571a2d1eb529f8cab36d902c59d865c48c Mon Sep 17 00:00:00 2001 From: Peter Rifel Date: Thu, 28 Oct 2021 22:29:01 -0500 Subject: [PATCH] Dump more resource types from kubectl into cluster-info directory `kubectl cluster-info dump` only covers some resource types. These additional resource types should help with troubleshooting prow jobs. --- tests/e2e/kubetest2-kops/deployer/dumplogs.go | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/e2e/kubetest2-kops/deployer/dumplogs.go b/tests/e2e/kubetest2-kops/deployer/dumplogs.go index c903e29ce0..ad362499f1 100644 --- a/tests/e2e/kubetest2-kops/deployer/dumplogs.go +++ b/tests/e2e/kubetest2-kops/deployer/dumplogs.go @@ -97,6 +97,68 @@ func (d *deployer) dumpClusterInfo() error { return err } } + + resourceTypes := []string{"csinodes", "csidrivers", "storageclasses", "persistentvolumes", + "mutatingwebhookconfigurations", "validatingwebhookconfigurations"} + for _, resType := range resourceTypes { + yamlFile, err := os.Create(path.Join(d.ArtifactsDir, "cluster-info", fmt.Sprintf("%v.yaml", resType))) + if err != nil { + panic(err) + } + defer yamlFile.Close() + + args = []string{ + "kubectl", "get", resType, + "--all-namespaces", + "-o", "yaml", + } + klog.Info(strings.Join(args, " ")) + + cmd := exec.Command(args[0], args[1:]...) + cmd.SetEnv(d.env()...) + cmd.SetStdout(yamlFile) + if err := cmd.Run(); err != nil { + if err = d.dumpClusterInfoSSH(); err != nil { + klog.Warningf("Failed to get %v: %v", resType, err) + } + } + } + + nsCmd := exec.Command( + "kubectl", "get", "namespaces", "--no-headers", "-o", "custom-columns=name:.metadata.name", + ) + namespaces, err := exec.OutputLines(nsCmd) + if err != nil { + return fmt.Errorf("failed to get namespaces: %s", err) + } + + namespacedResourceTypes := []string{"configmaps", "endpoints", "endpointslices", "leases", "persistentvolumeclaims"} + for _, namespace := range namespaces { + namespace = strings.TrimSpace(namespace) + for _, resType := range namespacedResourceTypes { + yamlFile, err := os.Create(path.Join(d.ArtifactsDir, "cluster-info", namespace, fmt.Sprintf("%v.yaml", resType))) + if err != nil { + panic(err) + } + defer yamlFile.Close() + + args = []string{ + "kubectl", "get", resType, + "-n", namespace, + "-o", "yaml", + } + klog.Info(strings.Join(args, " ")) + + cmd := exec.Command(args[0], args[1:]...) + cmd.SetEnv(d.env()...) + cmd.SetStdout(yamlFile) + if err := cmd.Run(); err != nil { + if err = d.dumpClusterInfoSSH(); err != nil { + klog.Warningf("Failed to get %v: %v", resType, err) + } + } + } + } return nil }