@@ -7,14 +7,15 @@ categories:
77- apps/dev-and-admin-tools
88
99homepage: https://github.com/jelastic-jps/kubernetes
10- baseUrl: https://raw.githubusercontent.com/jelastic-jps/kubernetes/master
10+ baseUrl: https://raw.githubusercontent.com/jelastic-jps/kubernetes/v1.16.3
1111logo: /images/k8s-logo.png
1212
1313description:
1414 text: "K8s upgrade"
1515 short: Kubernetes Upgrade
1616
1717onInstall:
18+ - upgrade-configuration
1819 - upgrade-masters:
1920 id: ${nodes.k8sm.master.id}
2021 master: true
@@ -36,23 +37,86 @@ onInstall:
3637 return {result:"info", message:message};
3738
3839actions:
40+ upgrade-configuration:
41+ - cmd[${nodes.k8sm.master.id}]: |-
42+ systemctl daemon-reload > /dev/null 2>&1
43+ wget -nv ${baseUrl}/scripts/wait-deployment.sh -O /usr/local/sbin/wait-deployment.sh
44+ chmod +x /usr/local/sbin/wait-deployment.sh
45+ kubectl get daemonset weave-net -n kube-system && {
46+ kubectl apply -f ${baseUrl}/addons/weave-pack.yaml;
47+ kubectl -n kube-system wait --for=condition=Ready pod -l name=weave-net --timeout=-1s; }
48+ - cmd[${nodes.k8sm.master.id}]: |-
49+ kubectl get daemonset traefik-ingress-controller -n kube-system &>/dev/null && echo "traefik" ||:
50+ kubectl get deployment nginx-ingress-controller -n ingress-nginx &>/dev/null && echo "nginx" ||:
51+ kubectl get daemonset haproxy-ingress -n ingress-controller &>/dev/null && echo "haproxy" ||:
52+ - setGlobals:
53+ ingress-dir: ${response.out}
54+ - cmd[${nodes.k8sm.master.id}]: |-
55+ case "x${globals.ingress-dir}" in
56+ xtraefik)
57+ kubectl apply -f ${baseUrl}/addons/traefik/traefik-rbac.yaml
58+ kubectl apply -f ${baseUrl}/addons/traefik/traefik-ds.yaml
59+ kubectl apply -f ${baseUrl}/addons/traefik/traefik-ui.yaml
60+ kubectl -n kube-system wait --for=condition=Ready pod -l name=traefik-ingress-lb --timeout=-1s
61+ ;;
62+ xnginx)
63+ kubectl apply -f ${baseUrl}/addons/nginx/mandatory.yaml
64+ kubectl apply -f ${baseUrl}/addons/nginx/cloud-generic.yaml
65+ wait-deployment.sh nginx-ingress-controller ingress-nginx 1 720
66+ ;;
67+ xhaproxy)
68+ kubectl apply -f ${baseUrl}/addons/haproxy/haproxy-deployment.yaml
69+ wait-deployment.sh ingress-default-backend ingress-controller 1 720
70+ ;;
71+ *)
72+ echo "Invalid ingress controller used!"
73+ exit 1
74+ ;;
75+ esac
76+ - cmd[${nodes.k8sm.master.id}]: |-
77+ kubectl apply -f ${baseUrl}/addons/metrics-server/aggregated-metrics-reader.yaml
78+ kubectl apply -f ${baseUrl}/addons/metrics-server/auth-delegator.yaml
79+ kubectl apply -f ${baseUrl}/addons/metrics-server/auth-reader.yaml
80+ kubectl apply -f ${baseUrl}/addons/metrics-server/metrics-apiservice.yaml
81+ kubectl apply -f ${baseUrl}/addons/metrics-server/metrics-server-deployment.yaml
82+ kubectl apply -f ${baseUrl}/addons/metrics-server/metrics-server-service.yaml
83+ kubectl apply -f ${baseUrl}/addons/metrics-server/resource-reader.yaml
84+ wait-deployment.sh metrics-server kube-system 1 720
85+ - cmd[${nodes.k8sm.master.id}]: |-
86+ kubectl get deploy kubernetes-dashboard -n kubernetes-dashboard && {
87+ kubectl delete ns kubernetes-dashboard;
88+ kubectl apply -f ${baseUrl}/addons/kubernetes-dashboard-beta.yaml;
89+ kubectl apply -f ${baseUrl}/addons/ingress/${globals.ingress-dir}/dashboard-ingress-beta.yaml; }
90+ - cmd[${nodes.k8sm.master.id}]: |-
91+ helm init --upgrade --service-account tiller
92+ helm repo update
93+ wait-deployment.sh tiller-deploy kube-system 1 720
94+
3995 upgrade-masters:
4096 - env.control.RedeployContainers:
4197 nodeId: ${this.id}
4298 tag: ${this.version}
4399 skipReinstall: true
44100 - cmd[${this.id}]: |-
101+ wget -nv https://github.com/weaveworks/weave/releases/download/v2.5.2/weave -O /usr/bin/weave
102+ chmod +x /usr/bin/weave
103+ wget -nv ${baseUrl}/scripts/wait-deployment.sh -O /usr/local/sbin/wait-deployment.sh
104+ chmod +x /usr/local/sbin/wait-deployment.sh
45105 while true; do kubectl get nodes --no-headers | grep -qv '\sReady\s' || break ; done
46106 sleep 5
47107 - if (${this.master}):
48108 - cmd[${this.id}]: |-
49109 /usr/bin/kubeadm upgrade plan --ignore-preflight-errors=all || exit 1
50110 /usr/bin/kubeadm upgrade apply ${this.version} || exit 1
51- service kubelet restart
52111 - if (!${this.master}):
53112 - cmd[${this.id}]: |-
54113 /usr/bin/kubeadm upgrade node --kubelet-version ${this.version} || exit 2
55- service kubelet restart
114+ - upgrade-master-post: ${this.id}
115+
116+ upgrade-master-post:
117+ - cmd[${this}]: |-
118+ service kubelet restart
119+ helm repo update
56120
57121 upgrade-workers:
58122 - cmd[${nodes.k8sm.master.id}]: |-
@@ -65,6 +129,9 @@ actions:
65129 skipReinstall: true
66130 - cmd[${this.id}]: |-
67131 /usr/bin/kubeadm upgrade node --kubelet-version ${this.version} || exit 4
132+ local_ip=$(/usr/sbin/ip route get 1.2.3.4 | grep -v 'cache' | uniq | head -n 1 | sed -n 's/.* src \([^ ]*\).*/\1/p')
133+ [ -n "${local_ip}" ] && local_ip_route="10.244.0.0/15 dev venet0 src ${local_ip}"
134+ [ -n "${local_ip_route}" ] && /usr/sbin/ip route add ${local_ip_route} && echo "${local_ip_route}" >> /etc/sysconfig/network-scripts/route-venet0
68135 service kubelet restart
69136 - cmd[${nodes.k8sm.master.id}]: |-
70137 /usr/bin/kubectl uncordon ${this.hostname} || exit 5
0 commit comments