#!/bin/bash -e #VERSION="latest" VERSION="v1.25" ARGO_APP=${1:-/tmp/new-kubezero-argoapp.yaml} SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # shellcheck disable=SC1091 . "$SCRIPT_DIR"/libhelm.sh [ -n "$DEBUG" ] && set -x all_nodes_upgrade() { CMD="$1" echo "Deploy all node upgrade daemonSet(busybox)" cat </dev/null while true; do kubectl logs kubezero-upgrade -n kube-system -f 2>/dev/null && break sleep 3 done kubectl delete pod kubezero-upgrade -n kube-system } echo "Checking that all pods in kube-system are running ..." waitSystemPodsRunning argo_used && disable_argo #all_nodes_upgrade "" # Cleanup # Remove calico CRDs kubectl delete -f https://git.zero-downtime.net/ZeroDownTime/kubezero/raw/tag/v1.23.11/charts/kubezero-network/charts/calico/crds/crds.yaml || true # delete old kubelet configs for cm in $(kubectl get cm -n kube-system --no-headers | awk '{if ($1 ~ "kubelet-config-1*") print $1}'); do kubectl delete cm $cm -n kube-system; done for rb in $(kubectl get rolebindings -n kube-system --no-headers | awk '{if ($1 ~ "kubelet-config-1*") print $1}'); do kubectl delete rolebindings $rb -n kube-system; done control_plane_upgrade kubeadm_upgrade echo "Adjust kubezero values as needed:" # shellcheck disable=SC2015 argo_used && kubectl edit app kubezero -n argocd || kubectl edit cm kubezero-values -n kube-system control_plane_upgrade "apply_network, apply_addons, apply_storage" echo "Checking that all pods in kube-system are running ..." waitSystemPodsRunning echo "Applying remaining KubeZero modules..." control_plane_upgrade "apply_cert-manager, apply_istio, apply_istio-ingress, apply_istio-private-ingress, apply_logging, apply_metrics, apply_argocd" # 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(..) | .spec.source.helm.values |= (from_yaml | to_yaml)' > $ARGO_APP 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." echo " to continue and re-enable ArgoCD:" read -r argo_used && enable_argo