diff --git a/admin/upgrade_cluster.sh b/admin/upgrade_cluster.sh index a98abf37..1764d5ca 100755 --- a/admin/upgrade_cluster.sh +++ b/admin/upgrade_cluster.sh @@ -14,45 +14,64 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) ARGOCD=$(argo_used) + +control_plane_phase1() { + admin_job "upgrade_control_plane, upgrade_kubezero" + + #echo "Adjust kubezero values as needed:" + # shellcheck disable=SC2015 + #[ "$ARGOCD" == "true" ] && kubectl edit app kubezero -n argocd || kubectl edit cm kubezero-values -n kubezero + + #echo " to continue" + #read -r + + # upgrade modules + admin_job "apply_kubezero, apply_network" + + echo "Checking that all pods in kube-system are running ..." + waitSystemPodsRunning +} + +control_plane_phase2() { + # Final control plane upgrades + admin_job "upgrade_control_plane" +} + +cluster_modules() { + echo "Applying remaining KubeZero modules..." + + admin_job "apply_policy, apply_addons, apply_storage, apply_operators, apply_cert-manager, apply_istio, apply_istio-ingress, apply_istio-private-ingress, apply_logging, apply_metrics, apply_telemetry, apply_argo" + + # Final step is to commit the new argocd kubezero app + kubectl get app kubezero -n argocd -o yaml | yq 'del(.status) | del(.metadata) | del(.operation) | .metadata.name="kubezero" | .metadata.namespace="argocd"' | yq 'sort_keys(..)' > $ARGO_APP +} + +backup() { + # Trigger backup of upgraded cluster state + kubectl create job --from=cronjob/kubezero-backup kubezero-backup-$KUBE_VERSION -n kube-system + while true; do + kubectl wait --for=condition=complete job/kubezero-backup-$KUBE_VERSION -n kube-system 2>/dev/null && kubectl delete job kubezero-backup-$KUBE_VERSION -n kube-system && break + sleep 1 + done +} + +##### + echo "Checking that all pods in kube-system are running ..." waitSystemPodsRunning [ "$ARGOCD" == "true" ] && disable_argo -admin_job "upgrade_control_plane, upgrade_kubezero" +control_plane_phase1 -#echo "Adjust kubezero values as needed:" -# shellcheck disable=SC2015 -#[ "$ARGOCD" == "true" ] && kubectl edit app kubezero -n argocd || kubectl edit cm kubezero-values -n kubezero +cluster_modules -#echo " to continue" -#read -r - -# upgrade modules -admin_job "apply_kubezero, apply_network" - -echo "Checking that all pods in kube-system are running ..." -waitSystemPodsRunning - -echo "Applying remaining KubeZero modules..." - -admin_job "apply_policy, apply_addons, apply_storage, apply_operators, apply_cert-manager, apply_istio, apply_istio-ingress, apply_istio-private-ingress, apply_logging, apply_metrics, apply_telemetry, apply_argo" - -# Final step is to commit the new argocd kubezero app -kubectl get app kubezero -n argocd -o yaml | yq 'del(.status) | del(.metadata) | del(.operation) | .metadata.name="kubezero" | .metadata.namespace="argocd"' | yq 'sort_keys(..)' > $ARGO_APP - -# Trigger backup of upgraded cluster state -kubectl create job --from=cronjob/kubezero-backup kubezero-backup-$KUBE_VERSION -n kube-system -while true; do - kubectl wait --for=condition=complete job/kubezero-backup-$KUBE_VERSION -n kube-system 2>/dev/null && kubectl delete job kubezero-backup-$KUBE_VERSION -n kube-system && break - sleep 1 -done +backup echo "Once ALL nodes, incl. workers, ALL, are running on $KUBE_VERSION, to continue" read -r -# Final control plane upgrades -admin_job "upgrade_control_plane" +control_plane_phase2 echo "Please commit $ARGO_APP as the updated kubezero/application.yaml for your cluster." echo "Then head over to ArgoCD for this cluster and sync all KubeZero modules to apply remaining upgrades."