m/{cli,test/launch}: integrate launch/cluster with metroctl
This makes test-launch2 (and possibly later any other code that uses the
launch/cluster library) tell the user that they can connect to the newly
launched cluster using metroctl, either by using specific flags, or
using a wrapper script, or using kubectl.
Change-Id: I54035ee02f3cbab3d17f46b1f1685b91aab275a9
Reviewed-on: https://review.monogon.dev/c/monogon/+/1373
Tested-by: Jenkins CI
Reviewed-by: Leopold Schabel <leo@monogon.tech>
diff --git a/metropolis/test/launch/cli/launch-multi2/main.go b/metropolis/test/launch/cli/launch-multi2/main.go
index 70c3745..46770f2 100644
--- a/metropolis/test/launch/cli/launch-multi2/main.go
+++ b/metropolis/test/launch/cli/launch-multi2/main.go
@@ -20,6 +20,7 @@
"context"
"log"
+ metroctl "source.monogon.dev/metropolis/cli/metroctl/core"
clicontext "source.monogon.dev/metropolis/cli/pkg/context"
"source.monogon.dev/metropolis/test/launch/cluster"
)
@@ -32,7 +33,33 @@
if err != nil {
log.Fatalf("LaunchCluster: %v", err)
}
+
+ mpath, err := cluster.MetroctlRunfilePath()
+ if err != nil {
+ log.Fatalf("MetroctlRunfilePath: %v", err)
+ }
+ wpath, err := cl.MakeMetroctlWrapper()
+ if err != nil {
+ log.Fatalf("MakeWrapper: %v", err)
+ }
+
+ apiservers, err := cl.KubernetesControllerNodeAddresses(ctx)
+ if err != nil {
+ log.Fatalf("Could not get Kubernetes controller nodes: %v", err)
+ }
+ if len(apiservers) < 1 {
+ log.Fatalf("Cluster has no Kubernetes controller nodes")
+ }
+
+ configName := "launch-multi2"
+ if err := metroctl.InstallKubeletConfig(mpath, cl.ConnectOptions(), configName, apiservers[0]); err != nil {
+ log.Fatalf("InstallKubeletConfig: %v", err)
+ }
+
log.Printf("Launch: Cluster running!")
+ log.Printf(" To access cluster use: metroctl %s", cl.MetroctlFlags())
+ log.Printf(" Or use this handy wrapper: %s", wpath)
+ log.Printf(" To access Kubernetes, use kubectl --context=%s", configName)
<-ctx.Done()
cl.Close()