Clusters: Support persistent storage on remote clusters.

With this merged users can request persistent volumes and PostgreSQL
instances on remote clusters.

This is achieved by Cluster manager installing open-iscsi on all
remote servers and running longhorn on top of them.

Change-Id: Ic1b24ede12fa32bb99f38e560207230437b45fd6
diff --git a/core/installer/cluster/kube.go b/core/installer/cluster/kube.go
index ee123fa..11fe746 100644
--- a/core/installer/cluster/kube.go
+++ b/core/installer/cluster/kube.go
@@ -25,6 +25,7 @@
 	serverToken      string
 	controllers      []Server
 	workers          []Server
+	storageEnabled   bool
 }
 
 func NewKubeManager() *KubeManager {
@@ -42,6 +43,7 @@
 		serverToken:      st.ServerToken,
 		controllers:      st.Controllers,
 		workers:          st.Workers,
+		storageEnabled:   st.StorageEnabled,
 	}, nil
 }
 
@@ -57,10 +59,15 @@
 		m.kubeCfg,
 		m.controllers,
 		m.workers,
+		m.storageEnabled,
 	}
 }
 
-func (m *KubeManager) Init(s Server, setupFn ClusterSetupFunc) (net.IP, error) {
+func (m *KubeManager) EnableStorage() {
+	m.storageEnabled = true
+}
+
+func (m *KubeManager) Init(s Server, setupFn ClusterIngressSetupFunc) (net.IP, error) {
 	m.l.Lock()
 	defer m.l.Unlock()
 	if m.kubeCfg != "" {