ClusterManager: Implements support of remote clusters.

After this change users will be able to:
* Create cluster and add/remove servers to it
* Install apps on remote cluster
* Move already installed apps between clusters
* Apps running on server being removed will auto-migrate
  to another server from that same cluster

This is achieved by:
* Installing and running minimal version of dodo on remote cluster
* Ingress-nginx is installed automatically on new clusters
* Next to nginx we run VPN client in the same pod, so that
  default cluster can establish secure communication with it
* Multiple reverse proxies are configured to get to the
  remote cluster service from ingress installed on default cluster.

Next steps:
* Support remote clusters in dodo apps (prototype ready)
* Clean up old cluster when moving app to the new one. Currently
  old cluster keeps running app pods even though no ingress can
  reach it anymore.

Change-Id: Iffc908c93416d4126a8e1c2832eae7b659cb8044
diff --git a/core/installer/app_repository.go b/core/installer/app_repository.go
index 0de0c5a..e4bfa4d 100644
--- a/core/installer/app_repository.go
+++ b/core/installer/app_repository.go
@@ -54,6 +54,7 @@
 	"values-tmpl/launcher.cue",
 	"values-tmpl/env-dns.cue",
 	"values-tmpl/launcher.cue",
+	"values-tmpl/cluster-network.cue",
 }
 
 var infraAppConfigs = []string{
@@ -99,10 +100,7 @@
 func CreateAllApps() []App {
 	return append(
 		createInfraApps(),
-		append(
-			CreateEnvApps(storeEnvAppConfigs),
-			CreateEnvApps(envAppConfigs)...,
-		)...,
+		CreateAllEnvApps()...,
 	)
 }
 
@@ -123,6 +121,13 @@
 	return CreateEnvApps(storeEnvAppConfigs)
 }
 
+func CreateAllEnvApps() []App {
+	return append(
+		CreateStoreApps(),
+		CreateEnvApps(envAppConfigs)...,
+	)
+}
+
 func CreateEnvApps(configs []string) []App {
 	ret := make([]App, 0)
 	for _, cfgFile := range configs {