@@ -13,7 +13,7 @@ logo: /images/k8s-logo.png
1313name: Kubernetes Cluster
1414targetRegions:
1515 type: vz7
16-
16+
1717settings:
1818 fields:
1919 - name: deploy
@@ -64,15 +64,12 @@ settings:
6464 v1.14.2: v1.14.2
6565 v1.14.3: v1.14.3
6666 v1.15.0: v1.15.0
67+ v1.15.1: v1.15.1
6768 default: v1.15.0
6869
6970ssl: true
7071
7172onBeforeInstall: |
72- var url = "https://registry.hub.docker.com/v1/repositories/jelastic/kubernetes/tags",
73- tags = toNative(new com.hivext.api.core.utils.Transport().get(url)).sort(),
74- latest = "latest";
75- for (var i = 0; i < tags.length; i++) if (tags[i].name > latest) latest = tags[i].name;
7673 var k8smCount = '${settings.topo}' == '0-dev' ? 1 : 3,
7774 workerCount = k8smCount > 1 ? 2 : 1,
7875 tag = "${settings.version}";
@@ -386,60 +383,28 @@ actions:
386383 var message = "Current version " + version + " is the latest. No upgrades are available.";
387384 if (upgrades.length) {
388385 upgrades.sort();
389- return {result:0, onAfterReturn:{execUpgrade:{current:version, next:upgrades.shift(), avail:upgrades.join(", ")}}};
386+ var next = upgrades.shift();
387+ var baseUrl = "${baseUrl}".split("/"); baseUrl.pop(); baseUrl = baseUrl.join("/");
388+ var url = baseUrl+"/"+next+"/addons/upgrade.jps"
389+ var huc = new java.net.URL(url).openConnection();
390+ huc.setRequestMethod("HEAD");
391+ var code = huc.getResponseCode();
392+ if (code == 200){
393+ return {result:0, onAfterReturn:{execUpgrade:{current:version, next:next, avail:upgrades.join(", "), jps: url}}};
394+ } else {
395+ message = "The next version is " + next + ". However, automated upgrade procedure is not available yet. Please check it later, or contact support team if upgrade is required urgently.";
396+ return {result:"info", message:message};
397+ }
390398 } else {
391399 return {result:"info", message:message};
392400 }
393401
394- upgrade-masters:
395- - env.control.RedeployContainers:
396- nodeId: ${this.id}
397- tag: ${this.version}
398- skipReinstall: true
399- - if (${this.master}):
400- - cmd[${this.id}]: |-
401- /usr/bin/kubeadm upgrade plan --ignore-preflight-errors=swap || exit 1
402- /usr/bin/kubeadm upgrade apply ${this.version} || exit 1
403- service kubelet restart
404- - if (!${this.master}):
405- - cmd[${this.id}]: |-
406- /usr/bin/kubeadm upgrade node experimental-control-plane ${this.version} || exit 2
407- service kubelet restart
408-
409- upgrade-workers:
410- - cmd[${nodes.k8sm.master.id}]: |-
411- /usr/bin/kubectl drain ${this.hostname} --ignore-daemonsets --delete-local-data || exit 3
412- - env.control.RedeployContainers:
413- nodeId: ${this.id}
414- tag: ${this.version}
415- skipReinstall: true
416- - cmd[${this.id}]: |-
417- /usr/bin/kubeadm upgrade node config --kubelet-version ${this.version} || exit 4
418- service kubelet restart
419- - cmd[${nodes.k8sm.master.id}]: |-
420- /usr/bin/kubectl uncordon ${this.hostname} || exit 5
421- while true; do kubectl get pods --field-selector=status.phase=Pending -n kube-system | grep -q Pending || break ; done
422-
423402 execUpgrade:
424- - upgrade-masters:
425- id : ${nodes.k8sm.master.id }
426- master: true
403+ install: ${this.jps}
404+ envName : ${env.envName }
405+ settings:
427406 version: ${this.next}
428- - forEach(nodes.k8sm):
429- if (!${@i.ismaster}):
430- upgrade-masters:
431- id: ${@i.id}
432- master: false
433- version: ${this.next}
434- - forEach(nodes.cp):
435- upgrade-workers:
436- id: ${@i.id}
437- hostname: node${@i.id}-${env.domain}
438- version: ${this.next}
439- - script: |
440- var message = "Kubernetes Cluster has been successfuly upgraded! **Current version:** ${this.next}. \n\nNo other upgrades are available.";
441- if ("${this.avail}") message += "\n\n**Next version:** ${this.avail}. \nPress \"Upgrade\" button to start the upgrade process.";
442- return {result:"info", message:message};
407+
443408
444409 remoteApi:
445410 cmd[${nodes.k8sm.master.id}]: |-
0 commit comments