diff --git a/cluster/state.go b/cluster/state.go index 1bc4467e..67c25acc 100644 --- a/cluster/state.go +++ b/cluster/state.go @@ -108,3 +108,18 @@ func getStateFromKubernetes(kubeClient *kubernetes.Clientset, kubeConfigPath str return nil } } + +func GetK8sVersion() (string, error) { + logrus.Debugf("[version] Using admin.config to connect to Kubernetes cluster..") + k8sClient, err := k8s.NewClient(pki.KubeAdminConfigPath) + if err != nil { + return "", fmt.Errorf("Failed to create Kubernetes Client: %v", err) + } + discoveryClient := k8sClient.DiscoveryClient + logrus.Debugf("[version] Getting Kubernetes server version..") + serverVersion, err := discoveryClient.ServerVersion() + if err != nil { + return "", fmt.Errorf("Failed to get Kubernetes server version: %v", err) + } + return fmt.Sprintf("%#v", *serverVersion), nil +} diff --git a/cmd/cluster.go b/cmd/cluster.go index aaf75ffd..28c2b806 100644 --- a/cmd/cluster.go +++ b/cmd/cluster.go @@ -34,6 +34,12 @@ func ClusterCommand() cli.Command { Action: clusterUpFromCli, Flags: clusterUpFlags, }, + cli.Command{ + Name: "version", + Usage: "Show Cluster Kubernetes version", + Action: getClusterVersion, + Flags: []cli.Flag{}, + }, }, } } @@ -120,3 +126,12 @@ func resolveClusterFile(ctx *cli.Context) (string, error) { return clusterFile, nil } + +func getClusterVersion(ctx *cli.Context) error { + serverVersion, err := cluster.GetK8sVersion() + if err != nil { + return err + } + fmt.Printf("Server Version: %s\n", serverVersion) + return nil +}