feat: reorg cluster upgrade scripts to allow support for KubeZero only clusters like GKE
This commit is contained in:
parent
da2510c8df
commit
9bb0e0e91a
@ -111,17 +111,8 @@ post_kubeadm() {
|
||||
}
|
||||
|
||||
|
||||
# Control plane upgrade
|
||||
control_plane_upgrade() {
|
||||
CMD=$1
|
||||
|
||||
ARGOCD=$(argo_used)
|
||||
|
||||
render_kubeadm upgrade
|
||||
|
||||
if [[ "$CMD" =~ ^(cluster)$ ]]; then
|
||||
pre_control_plane_upgrade_cluster
|
||||
|
||||
# Migrate KubeZero Config to current version
|
||||
upgrade_kubezero_config() {
|
||||
# get current values, argo app over cm
|
||||
get_kubezero_values $ARGOCD
|
||||
|
||||
@ -139,6 +130,22 @@ control_plane_upgrade() {
|
||||
> $WORKDIR/new-argocd-app.yaml
|
||||
kubectl replace -f $WORKDIR/new-argocd-app.yaml $(field_manager $ARGOCD)
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Control plane upgrade
|
||||
kubeadm_upgrade() {
|
||||
ARGOCD=$(argo_used)
|
||||
|
||||
render_kubeadm upgrade
|
||||
|
||||
# Check if we already have all controllers on the current version
|
||||
OLD_CONTROLLERS=$(kubectl get nodes -l "node-role.kubernetes.io/control-plane=" --no-headers=true | grep -cv $KUBE_VERSION || true)
|
||||
|
||||
# run control plane upgrade
|
||||
if [ "$OLD_CONTROLLERS" != "0" ]; then
|
||||
|
||||
pre_control_plane_upgrade_cluster
|
||||
|
||||
pre_kubeadm
|
||||
|
||||
@ -155,7 +162,8 @@ control_plane_upgrade() {
|
||||
|
||||
echo "Successfully upgraded KubeZero control plane to $KUBE_VERSION using kubeadm."
|
||||
|
||||
elif [[ "$CMD" =~ ^(final)$ ]]; then
|
||||
# All controllers already on current version
|
||||
else
|
||||
pre_cluster_upgrade_final
|
||||
|
||||
# Finally upgrade addons last, with 1.32 we can ONLY call addon phase
|
||||
@ -411,12 +419,8 @@ for t in $@; do
|
||||
bootstrap) control_plane_node bootstrap;;
|
||||
join) control_plane_node join;;
|
||||
restore) control_plane_node restore;;
|
||||
kubeadm_upgrade)
|
||||
control_plane_upgrade cluster
|
||||
;;
|
||||
finalize_cluster_upgrade)
|
||||
control_plane_upgrade final
|
||||
;;
|
||||
upgrade_control_plane) kubeadm_upgrade;;
|
||||
upgrade_kubezero) upgrade_kubezero_config;;
|
||||
apply_*)
|
||||
ARGOCD=$(argo_used)
|
||||
apply_module "${t##apply_}";;
|
||||
|
@ -353,7 +353,7 @@ EOF
|
||||
}
|
||||
|
||||
|
||||
function control_plane_upgrade() {
|
||||
function admin_job() {
|
||||
TASKS="$1"
|
||||
|
||||
[ -z "$KUBE_VERSION" ] && KUBE_VERSION="latest"
|
||||
@ -363,7 +363,7 @@ function control_plane_upgrade() {
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: kubezero-upgrade
|
||||
name: kubezero-admin-job
|
||||
namespace: kube-system
|
||||
labels:
|
||||
app: kubezero-upgrade
|
||||
@ -408,10 +408,10 @@ spec:
|
||||
restartPolicy: Never
|
||||
EOF
|
||||
|
||||
kubectl wait pod kubezero-upgrade -n kube-system --timeout 120s --for=condition=initialized 2>/dev/null
|
||||
kubectl wait pod kubezero-admin-job -n kube-system --timeout 120s --for=condition=initialized 2>/dev/null
|
||||
while true; do
|
||||
kubectl logs kubezero-upgrade -n kube-system -f 2>/dev/null && break
|
||||
kubectl logs kubezero-admin-job -n kube-system -f 2>/dev/null && break
|
||||
sleep 3
|
||||
done
|
||||
kubectl delete pod kubezero-upgrade -n kube-system
|
||||
kubectl delete pod kubezero-admin-job -n kube-system
|
||||
}
|
||||
|
@ -15,37 +15,28 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
ARGOCD=$(argo_used)
|
||||
|
||||
echo "Checking that all pods in kube-system are running ..."
|
||||
#waitSystemPodsRunning
|
||||
waitSystemPodsRunning
|
||||
|
||||
[ "$ARGOCD" == "true" ] && disable_argo
|
||||
|
||||
# Check if we already have all controllers on the current version
|
||||
OLD_CONTROLLERS=$(kubectl get nodes -l "node-role.kubernetes.io/control-plane=" --no-headers=true | grep -cv $KUBE_VERSION || true)
|
||||
|
||||
if [ "$OLD_CONTROLLERS" == "0" ]; then
|
||||
# All controllers already on current version
|
||||
control_plane_upgrade finalize_cluster_upgrade
|
||||
else
|
||||
# Otherwise run control plane upgrade
|
||||
control_plane_upgrade kubeadm_upgrade
|
||||
fi
|
||||
|
||||
echo "<Return> to continue"
|
||||
read -r
|
||||
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 "<Return> to continue"
|
||||
#read -r
|
||||
|
||||
# upgrade modules
|
||||
control_plane_upgrade "apply_kubezero, apply_network, apply_addons, apply_storage, apply_operators"
|
||||
admin_job "apply_kubezero, apply_network, apply_addons, apply_storage, apply_operators"
|
||||
|
||||
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_telemetry, apply_argo"
|
||||
admin_job "apply_cert-manager, apply_istio, apply_istio-ingress, apply_istio-private-ingress, apply_logging, apply_metrics, apply_telemetry, apply_argo"
|
||||
|
||||
# we replace the project during v1.31 so disable again
|
||||
[ "$ARGOCD" == "true" ] && disable_argo
|
||||
@ -60,6 +51,12 @@ while true; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Once all controller nodes are running on $KUBE_VERSION, <return> to continue"
|
||||
read -r
|
||||
|
||||
# Final control plane upgrades
|
||||
admin_job "upgrade_control_plane"
|
||||
|
||||
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."
|
||||
|
||||
|
@ -3,7 +3,7 @@ name: kubezero-addons
|
||||
description: KubeZero umbrella chart for various optional cluster addons
|
||||
type: application
|
||||
version: 0.8.13
|
||||
appVersion: v1.30
|
||||
appVersion: v1.31
|
||||
home: https://kubezero.com
|
||||
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
|
||||
keywords:
|
||||
|
Loading…
x
Reference in New Issue
Block a user