@@ -18,74 +18,59 @@ import (
1818 "fmt"
1919 "os/exec"
2020 "path"
21- "strings"
2221
2322 "github.com/pkg/errors"
2423 "k8s.io/minikube/pkg/minikube/assets"
2524 "k8s.io/minikube/pkg/minikube/command"
2625 "k8s.io/minikube/pkg/minikube/vmpath"
2726)
2827
29- // runs a helm install/uninstall based on the contents of chart *assets.HelmChart and enable
30- func helmCommand (ctx context.Context , chart * assets.HelmChart , enable bool ) * exec.Cmd {
31- var args []string
32-
33- if ! enable {
34- args = []string {
35- fmt .Sprintf ("KUBECONFIG=%s" , path .Join (vmpath .GuestPersistentDir , "kubeconfig" )),
36- "helm" , "uninstall" , chart .Name ,
37- }
38- if chart .Namespace != "" {
28+ // runs a helm install based on the contents of chart *assets.HelmChart
29+ func installHelmChart (ctx context.Context , chart * assets.HelmChart ) * exec.Cmd {
30+ args := []string {
31+ fmt .Sprintf ("KUBECONFIG=%s" , path .Join (vmpath .GuestPersistentDir , "kubeconfig" )),
32+ "helm" , "uninstall" , chart .Name ,
33+ }
34+ if chart .Namespace != "" {
3935 args = append (args , "--namespace" , chart .Namespace )
4036 }
4137 return exec .CommandContext (ctx , "sudo" , args ... )
4238 }
4339
44- args = []string {
40+ // runs a helm uninstall based on the contents of chart *assets.HelmChart
41+ func uninstalllHelmChart (ctx context.Context , chart * assets.HelmChart ) * exec.Cmd {
42+ args := []string {
4543 fmt .Sprintf ("KUBECONFIG=%s" , path .Join (vmpath .GuestPersistentDir , "kubeconfig" )),
46- "helm" , "upgrade" , "--install" , chart .Name , chart .Repo , "--create-namespace" ,
47- }
48- if chart .Namespace != "" {
49- args = append (args , "--namespace" , chart .Namespace )
50- }
51- if chart .Values != nil {
52- for _ , value := range chart .Values {
53- args = append (args , "--set" , value )
44+ "helm" , "uninstall" , chart .Name ,
5445 }
55- }
56- if chart .ValueFiles != nil {
57- for _ , value := range chart .ValueFiles {
58- args = append (args , "--values" , value )
46+ if chart .Namespace != "" {
47+ args = append (args , "--namespace" , chart .Namespace )
5948 }
49+ return exec .CommandContext (ctx , "sudo" , args ... )
6050 }
61- return exec .CommandContext (ctx , "sudo" , args ... )
51+
52+ // based on enable will execute installHelmChart or uninstallHelmChart
53+ func helmUninstallOrInstall (ctx context.Context , chart * assets.HelmChart , enable bool ) * exec.Cmd {
54+ if enable {
55+ return installHelmChart (ctx , chart )
56+ }
57+ return uninstalllHelmChart (ctx , chart )
6258}
6359
6460func helmInstallBinary (addon * assets.Addon , runner command.Runner ) error {
6561 _ , err := runner .RunCmd (exec .Command ("test" , "-f" , "/usr/bin/helm" ))
6662 if err != nil {
67- // If not, install it
68- rr , err := runner .RunCmd (exec .Command ("uname" , "-m" ))
63+ _ , err = runner .RunCmd (exec .Command ("test" , "-d" , "/usr/local/bin" ))
6964 if err != nil {
70- return errors . Wrap ( err , "getting architecture" )
65+ _ , err = runner . RunCmd ( exec . Command ( "sudo" , "mkdir" , "-p" , "/usr/local/bin" ) )
7166 }
72- arch := strings .TrimSpace (rr .Stdout .String ())
73- var helmArch string
74- switch arch {
75- case "x86_64" :
76- helmArch = "amd64"
77- case "aarch64" , "arm64" :
78- helmArch = "arm64"
79- default :
80- return fmt .Errorf ("failure to detect architecture or unsupported architecture: %s" , arch )
81- }
82- helmURL := fmt .Sprintf ("https://get.helm.sh/helm-v3.19.0-linux-%s.tar.gz" , helmArch )
83- installCmd := fmt .Sprintf ("curl -sSL %s | tar -xzf - -C /usr/bin --strip-components=1 linux-%s/helm" , helmURL , helmArch )
84- _ , err = runner .RunCmd (exec .Command ("sudo" , "bash" , "-c" , installCmd ))
85- if err != nil {
67+
68+ installCmd := fmt .Sprint ("curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 get_helm.sh && ./get_helm.sh" )
69+ _ , err = runner .RunCmd (exec .Command ("sudo" , "bash" , "-c" , installCmd ))
70+ _ , err = runner .RunCmd (exec .Command ("sudo" , "mv" , "/usr/local/bin/helm" , "/usr/bin/helm" ))
71+ if err != nil {
8672 return errors .Wrap (err , "installing helm" )
73+ }
8774 }
8875 return err
89- }
90- return err
91- }
76+ }
0 commit comments