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/welcome/appmanager-tmpl/task.html b/core/installer/welcome/appmanager-tmpl/task.html
new file mode 100644
index 0000000..699a660
--- /dev/null
+++ b/core/installer/welcome/appmanager-tmpl/task.html
@@ -0,0 +1,30 @@
+{{ define "content"}}
+Installation in progress (feel free to navigate away from this page):
+<ul class="progress">
+ {{ template "task" .Task.Subtasks }}
+</ul>
+
+<script>
+ async function refresh() {
+ try {
+ const resp = await fetch(window.location.href);
+ console.log(window.location.href, resp);
+ if (resp.ok) {
+ if (window.location.href != resp.url) {
+ location.assign(resp.url);
+ } else {
+ var tmp = document.createElement("html");
+ tmp.innerHTML = await resp.text();
+ const progress = tmp.getElementsByClassName("progress")[0];
+ document.getElementsByClassName("progress")[0].innerHTML = progress.innerHTML;
+ }
+ }
+ } catch (error) {
+ console.log(error);
+ } finally {
+ setTimeout(refresh, 3000);
+ }
+ }
+ setTimeout(refresh, 3000);
+</script>
+{{ end }}