// Uninstall removes a chart from Kubernetes. // // Manifests are removed from Kubernetes in the order specified by // chart.UninstallOrder. Any unknown types are removed before that sequence // is run. func Uninstall(chartName, home, namespace string, force bool, client kubectl.Runner) { // This is a stop-gap until kubectl respects namespaces in manifests. if namespace == "" { log.Die("This command requires a namespace. Did you mean '-n default'?") } if !chartFetched(chartName, home) { log.Info("No chart named %q in your workspace. Nothing to delete.", chartName) return } cd := helm.WorkspaceChartDirectory(home, chartName) c, err := chart.Load(cd) if err != nil { log.Die("Failed to load chart: %s", err) } if err := deleteChart(c, namespace, true, client); err != nil { log.Die("Failed to list charts: %s", err) } if !force && !promptConfirm("Uninstall the listed objects?") { log.Info("Aborted uninstall") return } CheckKubePrereqs() log.Info("Running `kubectl delete` ...") if err := deleteChart(c, namespace, false, client); err != nil { log.Die("Failed to completely delete chart: %s", err) } log.Info("Done") }
// Install loads a chart into Kubernetes. // // If the chart is not found in the workspace, it is fetched and then installed. // // During install, manifests are sent to Kubernetes in the ordered specified by InstallOrder. func Install(chartName, home, namespace string, force bool, generate bool, exclude []string, client kubectl.Runner) { ochart := chartName r := mustConfig(home).Repos table, chartName := r.RepoChart(chartName) if !chartFetched(chartName, home) { log.Info("No chart named %q in your workspace. Fetching now.", ochart) fetch(chartName, chartName, home, table) } cd := helm.WorkspaceChartDirectory(home, chartName) c, err := chart.Load(cd) if err != nil { log.Die("Failed to load chart: %s", err) } // Give user the option to bale if dependencies are not satisfied. nope, err := dependency.Resolve(c.Chartfile, helm.WorkspaceChartDirectory(home)) if err != nil { log.Warn("Failed to check dependencies: %s", err) if !force { log.Die("Re-run with --force to install anyway.") } } else if len(nope) > 0 { log.Warn("Unsatisfied dependencies:") for _, d := range nope { log.Msg("\t%s %s", d.Name, d.Version) } if !force { log.Die("Stopping install. Re-run with --force to install anyway.") } } // Run the generator if -g is set. if generate { Generate(chartName, home, exclude, force) } CheckKubePrereqs() log.Info("Running `kubectl create -f` ...") if err := uploadManifests(c, namespace, client); err != nil { log.Die("Failed to upload manifests: %s", err) } log.Info("Done") PrintREADME(chartName, home) }