AppManager: cache helm charts and container images to local registry
Caching container images is disabled until we figure out how to run
container registry behind TLS.
Change-Id: I0253f2a862e5adddff18a82b102f67258151c070
diff --git a/core/installer/cmd/app_manager.go b/core/installer/cmd/app_manager.go
index 8cffeba..33f122d 100644
--- a/core/installer/cmd/app_manager.go
+++ b/core/installer/cmd/app_manager.go
@@ -76,11 +76,16 @@
if err != nil {
return err
}
- kube, err := newNSCreator()
+ nsc, err := newNSCreator()
if err != nil {
return err
}
- m, err := installer.NewAppManager(repoIO, kube, "/apps")
+ jc, err := newJobCreator()
+ if err != nil {
+ return err
+ }
+ hf := installer.NewGitHelmFetcher()
+ m, err := installer.NewAppManager(repoIO, nsc, jc, hf, "/apps")
if err != nil {
return err
}
diff --git a/core/installer/cmd/dodo_app.go b/core/installer/cmd/dodo_app.go
index d9f9a69..c45cd35 100644
--- a/core/installer/cmd/dodo_app.go
+++ b/core/installer/cmd/dodo_app.go
@@ -85,6 +85,10 @@
if err != nil {
return err
}
+ jc, err := newJobCreator()
+ if err != nil {
+ return err
+ }
if err := softClient.AddRepository("app"); err == nil {
repo, err := softClient.GetRepo("app")
if err != nil {
@@ -93,7 +97,7 @@
if err := initRepo(repo); err != nil {
return err
}
- if err := welcome.UpdateDodoApp(softClient, dodoAppFlags.namespace, string(sshKey), &env); err != nil {
+ if err := welcome.UpdateDodoApp(softClient, dodoAppFlags.namespace, string(sshKey), jc, &env); err != nil {
return err
}
if err := softClient.AddWebhook("app", fmt.Sprintf("http://%s/update", dodoAppFlags.self), "--active=true", "--events=push", "--content-type=json"); err != nil {
@@ -102,7 +106,7 @@
} else if !errors.Is(err, soft.ErrorAlreadyExists) {
return err
}
- s := welcome.NewDodoAppServer(dodoAppFlags.port, string(sshKey), softClient, dodoAppFlags.namespace, env)
+ s := welcome.NewDodoAppServer(dodoAppFlags.port, string(sshKey), softClient, dodoAppFlags.namespace, jc, env)
return s.Start()
}
diff --git a/core/installer/cmd/env_manager.go b/core/installer/cmd/env_manager.go
index aa33de8..c0ea8e8 100644
--- a/core/installer/cmd/env_manager.go
+++ b/core/installer/cmd/env_manager.go
@@ -72,6 +72,11 @@
if err != nil {
return err
}
+ jc, err := newJobCreator()
+ if err != nil {
+ return err
+ }
+ hf := installer.NewGitHelmFetcher()
dnsFetcher, err := newZoneFetcher()
if err != nil {
return err
@@ -83,6 +88,8 @@
repoIO,
repoClient,
nsCreator,
+ jc,
+ hf,
dnsFetcher,
installer.NewFixedLengthRandomNameGenerator(4),
httpClient,
diff --git a/core/installer/cmd/kube.go b/core/installer/cmd/kube.go
index 4c6ab59..f31ad8f 100644
--- a/core/installer/cmd/kube.go
+++ b/core/installer/cmd/kube.go
@@ -15,3 +15,11 @@
func newHelmReleaseMonitor() (installer.HelmReleaseMonitor, error) {
return installer.NewHelmReleaseMonitor(rootFlags.kubeConfig)
}
+
+func newJobCreator() (installer.JobCreator, error) {
+ clientset, err := installer.NewKubeConfig(rootFlags.kubeConfig)
+ if err != nil {
+ return nil, err
+ }
+ return installer.NewJobCreator(clientset.BatchV1()), nil
+}
diff --git a/core/installer/cmd/launcher.go b/core/installer/cmd/launcher.go
index 6a8ced5..0af1d1e 100644
--- a/core/installer/cmd/launcher.go
+++ b/core/installer/cmd/launcher.go
@@ -74,7 +74,7 @@
if err != nil {
return err
}
- appManager, err := installer.NewAppManager(repoIO, nil, "/apps")
+ appManager, err := installer.NewAppManager(repoIO, nil, nil, nil, "/apps")
if err != nil {
return err
}
diff --git a/core/installer/cmd/rewrite.go b/core/installer/cmd/rewrite.go
index c4bc7a8..3ebb390 100644
--- a/core/installer/cmd/rewrite.go
+++ b/core/installer/cmd/rewrite.go
@@ -61,7 +61,8 @@
}
log.Println("Creating repository")
r := installer.NewInMemoryAppRepository(installer.CreateAllApps())
- mgr, err := installer.NewAppManager(repoIO, nil, "/apps")
+ hf := installer.NewGitHelmFetcher()
+ mgr, err := installer.NewAppManager(repoIO, nil, nil, hf, "/apps")
if err != nil {
return err
}
@@ -84,7 +85,14 @@
return err
}
v := inst.InputToValues(app.Schema())
- if _, err := mgr.Update(app, inst.Id, v, soft.WithNoCommit()); err != nil {
+ if _, err := mgr.Install(
+ app,
+ inst.Id,
+ inst.Release.AppDir,
+ inst.Release.Namespace,
+ v,
+ installer.WithNoPublish(),
+ ); err != nil {
return err
}
}
diff --git a/core/installer/cmd/welcome.go b/core/installer/cmd/welcome.go
index 64820e6..db1ce4a 100644
--- a/core/installer/cmd/welcome.go
+++ b/core/installer/cmd/welcome.go
@@ -3,6 +3,7 @@
import (
"os"
+ "github.com/giolekva/pcloud/core/installer"
"github.com/giolekva/pcloud/core/installer/soft"
"github.com/giolekva/pcloud/core/installer/welcome"
"github.com/spf13/cobra"
@@ -91,6 +92,7 @@
welcomeFlags.port,
repoIO,
nsCreator,
+ installer.NewGitHelmFetcher(),
welcomeFlags.createAccountAddr,
welcomeFlags.loginAddr,
welcomeFlags.membershipsInitAddr,