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: minikubeISO, Memory: memory, CPUs: cpus, DiskSize: int(*disk / units.MB), VMDriver: vmDriver, DockerEnv: dockerEnv, InsecureRegistry: insecureRegistry, } var host *host.Host start := func() (err error) { host, err = cluster.StartHost(api, config) return err } err := util.Retry(3, start) if err != nil { glog.Errorln("Error starting host: ", err) os.Exit(1) } if err := cluster.UpdateCluster(host.Driver); err != nil { glog.Errorln("Error updating cluster: ", err) os.Exit(1) } if err := cluster.SetupCerts(host.Driver); err != nil { glog.Errorln("Error configuring authentication: ", err) os.Exit(1) } if err := cluster.StartCluster(host); err != nil { glog.Errorln("Error starting cluster: ", err) os.Exit(1) } 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) fmt.Printf("Kubernetes is available at %s.\n", kubeHost) // 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) os.Exit(1) } fmt.Println("Kubectl is now configured to use the cluster.") }
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.") }