var ( namespace string https bool serviceURLMode bool ) // serviceCmd represents the service command var serviceCmd = &cobra.Command{ Use: "service [flags] SERVICE", Short: "Gets the kubernetes URL for the specified service in your local cluster", Long: `Gets the kubernetes URL for the specified service in your local cluster`, Run: func(cmd *cobra.Command, args []string) { if len(args) == 0 || len(args) > 1 { errText := "Please specify a service name." fmt.Fprintln(os.Stderr, errText) util.MaybeReportErrorAndExit(errors.New(errText)) } service := args[0] api := libmachine.NewClient(constants.Minipath, constants.MakeMiniPath("certs")) defer api.Close() cluster.EnsureMinikubeRunningOrExit(api) if err := util.RetryAfter(20, func() error { return CheckService(namespace, service) }, 6*time.Second); err != nil { fmt.Fprintln(os.Stderr, "Could not find finalized endpoint being pointed to by %s: %s", service, err) util.MaybeReportErrorAndExit(err) } url, err := cluster.GetServiceURL(api, namespace, service) if err != nil { fmt.Fprintln(os.Stderr, err)
"github.com/spf13/cobra" "k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/util" ) // ipCmd represents the ip command var ipCmd = &cobra.Command{ Use: "ip", Short: "Retrieve the IP address of the running cluster.", Long: `Retrieves the IP address of the running cluster, and writes it to STDOUT.`, Run: func(cmd *cobra.Command, args []string) { api := libmachine.NewClient(constants.Minipath, constants.MakeMiniPath("certs")) defer api.Close() host, err := api.Load(constants.MachineName) if err != nil { glog.Errorln("Error getting IP: ", err) util.MaybeReportErrorAndExit(err) } ip, err := host.Driver.GetIP() if err != nil { glog.Errorln("Error getting IP: ", err) util.MaybeReportErrorAndExit(err) } fmt.Println(ip) }, } func init() { RootCmd.AddCommand(ipCmd) }
func runStart(cmd *cobra.Command, args []string) { fmt.Println("Starting local Kubernetes cluster...") api := libmachine.NewClient(constants.Minipath, constants.MakeMiniPath("certs")) defer api.Close() config := cluster.MachineConfig{ MinikubeISO: viper.GetString(isoURL), Memory: viper.GetInt(memory), CPUs: viper.GetInt(cpus), DiskSize: calculateDiskSizeInMB(viper.GetString(humanReadableDiskSize)), VMDriver: viper.GetString(vmDriver), DockerEnv: dockerEnv, InsecureRegistry: insecureRegistry, RegistryMirror: registryMirror, HostOnlyCIDR: viper.GetString(hostOnlyCIDR), } var host *host.Host start := func() (err error) { host, err = cluster.StartHost(api, config) if err != nil { glog.Errorf("Error starting host: %s. Retrying.\n", err) } return err } err := util.Retry(3, start) if err != nil { glog.Errorln("Error starting host: ", err) util.MaybeReportErrorAndExit(err) } ip, err := host.Driver.GetIP() if err != nil { glog.Errorln("Error starting host: ", err) util.MaybeReportErrorAndExit(err) } kubernetesConfig := cluster.KubernetesConfig{ KubernetesVersion: viper.GetString(kubernetesVersion), NodeIP: ip, ContainerRuntime: viper.GetString(containerRuntime), NetworkPlugin: viper.GetString(networkPlugin), } if err := cluster.UpdateCluster(host, host.Driver, kubernetesConfig); err != nil { glog.Errorln("Error updating cluster: ", err) util.MaybeReportErrorAndExit(err) } if err := cluster.SetupCerts(host.Driver); err != nil { glog.Errorln("Error configuring authentication: ", err) util.MaybeReportErrorAndExit(err) } if err := cluster.StartCluster(host, kubernetesConfig); err != nil { glog.Errorln("Error starting cluster: ", err) util.MaybeReportErrorAndExit(err) } kubeHost, err := host.Driver.GetURL() if err != nil { glog.Errorln("Error connecting to cluster: ", err) } kubeHost = strings.Replace(kubeHost, "tcp://", "https://", -1) kubeHost = strings.Replace(kubeHost, ":2376", ":"+strconv.Itoa(constants.APIServerPort), -1) // setup kubeconfig name := constants.MinikubeContext certAuth := constants.MakeMiniPath("ca.crt") clientCert := constants.MakeMiniPath("apiserver.crt") clientKey := constants.MakeMiniPath("apiserver.key") if err := setupKubeconfig(name, kubeHost, certAuth, clientCert, clientKey); err != nil { glog.Errorln("Error setting up kubeconfig: ", err) util.MaybeReportErrorAndExit(err) } fmt.Println("Kubectl is now configured to use the cluster.") }