Skip to content

Commit 4779d97

Browse files
refactor helm functions
1 parent 3d9e4a2 commit 4779d97

File tree

2 files changed

+41
-56
lines changed

2 files changed

+41
-56
lines changed

pkg/addons/addons.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -451,17 +451,17 @@ func enableOrDisableAddonInternal(cc *config.ClusterConfig, addon *assets.Addon,
451451
}
452452

453453
if addon.HelmChart != nil {
454-
err := helmInstallBinary(addon,runner)
455-
if err != nil {
456-
return err
457-
}
458-
459-
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
460-
defer cancel()
461-
cmd := helmCommand(ctx, addon.HelmChart, enable)
462-
_, err = runner.RunCmd(cmd)
463-
return err
464-
}
454+
err := helmInstallBinary(addon,runner)
455+
if err != nil {
456+
return err
457+
}
458+
459+
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
460+
defer cancel()
461+
cmd := helmUninstallOrInstall(ctx, addon.HelmChart, enable)
462+
_, err = runner.RunCmd(cmd)
463+
return err
464+
}
465465

466466

467467

pkg/addons/helm.go

Lines changed: 30 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -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

6460
func 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

Comments
 (0)