installer: create namespaces with kube client
diff --git a/core/installer/cmd/app_manager.go b/core/installer/cmd/app_manager.go
index 73e2311..cff270e 100644
--- a/core/installer/cmd/app_manager.go
+++ b/core/installer/cmd/app_manager.go
@@ -68,7 +68,14 @@
 	if err != nil {
 		return err
 	}
-	m, err := installer.NewAppManager(installer.NewRepoIO(repo, signer))
+	kube, err := installer.NewOutOfClusterNamespaceCreator(rootFlags.kubeConfig)
+	if err != nil {
+		return err
+	}
+	m, err := installer.NewAppManager(
+		installer.NewRepoIO(repo, signer),
+		kube,
+	)
 	if err != nil {
 		return err
 	}
@@ -173,7 +180,7 @@
 	}
 	var resp rendered
 	resp.Readme = readme.String()
-	for _, tmpl := range a.Templates {
+	for _, tmpl := range a.Templates { // TODO(giolekva): deduplicate with Install
 		var f bytes.Buffer
 		if err := tmpl.Execute(&f, all); err != nil {
 			fmt.Printf("%+v\n", all)
@@ -207,7 +214,15 @@
 	if err != nil {
 		return err
 	}
-	if err := s.m.Install(*a, values); err != nil {
+	config, err := s.m.Config()
+	if err != nil {
+		return err
+	}
+	nsGen := installer.NewCombine(
+		installer.NewPrefixGenerator(config.Values.Id+"-"),
+		installer.NewRandomSuffixGenerator(3),
+	)
+	if err := s.m.Install(*a, nsGen, values); err != nil {
 		return err
 	}
 	return c.String(http.StatusOK, "Installed")