m/test/launch: extend GetKubeClientSet with rest.Config

K8s streaming transports need a separate rest.Config, expose that from
the GetKubeClientSet.

Change-Id: I7c4ee5dae0349bd6742afcbaf23aa7536b1bdf88
Reviewed-on: https://review.monogon.dev/c/monogon/+/3811
Reviewed-by: Jan Schär <jan@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/test/e2e/k8s_cts/main.go b/metropolis/test/e2e/k8s_cts/main.go
index 6250a16..b9818b3 100644
--- a/metropolis/test/e2e/k8s_cts/main.go
+++ b/metropolis/test/e2e/k8s_cts/main.go
@@ -105,7 +105,7 @@
 		log.Fatalf("Failed to launch cluster: %v", err)
 	}
 	log.Println("Cluster initialized")
-	clientSet, err := cl.GetKubeClientSet()
+	clientSet, _, err := cl.GetKubeClientSet()
 	if err != nil {
 		log.Fatalf("Failed to get clientSet: %v", err)
 	}
diff --git a/metropolis/test/e2e/suites/kubernetes/run_test.go b/metropolis/test/e2e/suites/kubernetes/run_test.go
index 2baeb17..0c116f6 100644
--- a/metropolis/test/e2e/suites/kubernetes/run_test.go
+++ b/metropolis/test/e2e/suites/kubernetes/run_test.go
@@ -98,7 +98,7 @@
 		t.Fatalf("Could not get curator client: %v", err)
 	}
 	mgmt := apb.NewManagementClient(con)
-	clientSet, err := cluster.GetKubeClientSet()
+	clientSet, _, err := cluster.GetKubeClientSet()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -281,7 +281,7 @@
 		}
 	}()
 
-	clientSet, err := cluster.GetKubeClientSet()
+	clientSet, _, err := cluster.GetKubeClientSet()
 	if err != nil {
 		t.Fatal(err)
 	}
diff --git a/metropolis/test/launch/cluster.go b/metropolis/test/launch/cluster.go
index f1545c9..20c3c67 100644
--- a/metropolis/test/launch/cluster.go
+++ b/metropolis/test/launch/cluster.go
@@ -1279,7 +1279,7 @@
 // Kubernetes authenticating proxy using the cluster owner identity.
 // It currently has access to everything (i.e. the cluster-admin role)
 // via the owner-admin binding.
-func (c *Cluster) GetKubeClientSet() (kubernetes.Interface, error) {
+func (c *Cluster) GetKubeClientSet() (kubernetes.Interface, *rest.Config, error) {
 	pkcs8Key, err := x509.MarshalPKCS8PrivateKey(c.Owner.PrivateKey)
 	if err != nil {
 		// We explicitly pass an Ed25519 private key in, so this can't happen
@@ -1300,7 +1300,11 @@
 			return c.DialNode(ctx, address)
 		},
 	}
-	return kubernetes.NewForConfig(&clientConfig)
+	clientSet, err := kubernetes.NewForConfig(&clientConfig)
+	if err != nil {
+		return nil, nil, err
+	}
+	return clientSet, &clientConfig, nil
 }
 
 // KubernetesControllerNodeAddresses returns the list of IP addresses of nodes