feat: reorg cluster upgrade scripts to allow support for KubeZero only clusters like GKE
This commit is contained in:
parent
da2510c8df
commit
9bb0e0e91a
@ -111,35 +111,42 @@ post_kubeadm() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Control plane upgrade
|
# Migrate KubeZero Config to current version
|
||||||
control_plane_upgrade() {
|
upgrade_kubezero_config() {
|
||||||
CMD=$1
|
# get current values, argo app over cm
|
||||||
|
get_kubezero_values $ARGOCD
|
||||||
|
|
||||||
|
# tumble new config through migrate.py
|
||||||
|
migrate_argo_values.py < "$WORKDIR"/kubezero-values.yaml > "$WORKDIR"/new-kubezero-values.yaml \
|
||||||
|
&& mv "$WORKDIR"/new-kubezero-values.yaml "$WORKDIR"/kubezero-values.yaml
|
||||||
|
|
||||||
|
update_kubezero_cm
|
||||||
|
|
||||||
|
if [ "$ARGOCD" == "true" ]; then
|
||||||
|
# update argo app
|
||||||
|
export kubezero_chart_version=$(yq .version $CHARTS/kubezero/Chart.yaml)
|
||||||
|
kubectl get application kubezero -n argocd -o yaml | \
|
||||||
|
yq ".spec.source.helm.valuesObject |= load(\"$WORKDIR/kubezero-values.yaml\") | .spec.source.targetRevision = strenv(kubezero_chart_version)" \
|
||||||
|
> $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)
|
ARGOCD=$(argo_used)
|
||||||
|
|
||||||
render_kubeadm upgrade
|
render_kubeadm upgrade
|
||||||
|
|
||||||
if [[ "$CMD" =~ ^(cluster)$ ]]; then
|
# 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_control_plane_upgrade_cluster
|
||||||
|
|
||||||
# get current values, argo app over cm
|
|
||||||
get_kubezero_values $ARGOCD
|
|
||||||
|
|
||||||
# tumble new config through migrate.py
|
|
||||||
migrate_argo_values.py < "$WORKDIR"/kubezero-values.yaml > "$WORKDIR"/new-kubezero-values.yaml \
|
|
||||||
&& mv "$WORKDIR"/new-kubezero-values.yaml "$WORKDIR"/kubezero-values.yaml
|
|
||||||
|
|
||||||
update_kubezero_cm
|
|
||||||
|
|
||||||
if [ "$ARGOCD" == "true" ]; then
|
|
||||||
# update argo app
|
|
||||||
export kubezero_chart_version=$(yq .version $CHARTS/kubezero/Chart.yaml)
|
|
||||||
kubectl get application kubezero -n argocd -o yaml | \
|
|
||||||
yq ".spec.source.helm.valuesObject |= load(\"$WORKDIR/kubezero-values.yaml\") | .spec.source.targetRevision = strenv(kubezero_chart_version)" \
|
|
||||||
> $WORKDIR/new-argocd-app.yaml
|
|
||||||
kubectl replace -f $WORKDIR/new-argocd-app.yaml $(field_manager $ARGOCD)
|
|
||||||
fi
|
|
||||||
|
|
||||||
pre_kubeadm
|
pre_kubeadm
|
||||||
|
|
||||||
_kubeadm init phase upload-config kubeadm
|
_kubeadm init phase upload-config kubeadm
|
||||||
@ -155,7 +162,8 @@ control_plane_upgrade() {
|
|||||||
|
|
||||||
echo "Successfully upgraded KubeZero control plane to $KUBE_VERSION using kubeadm."
|
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
|
pre_cluster_upgrade_final
|
||||||
|
|
||||||
# Finally upgrade addons last, with 1.32 we can ONLY call addon phase
|
# 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;;
|
bootstrap) control_plane_node bootstrap;;
|
||||||
join) control_plane_node join;;
|
join) control_plane_node join;;
|
||||||
restore) control_plane_node restore;;
|
restore) control_plane_node restore;;
|
||||||
kubeadm_upgrade)
|
upgrade_control_plane) kubeadm_upgrade;;
|
||||||
control_plane_upgrade cluster
|
upgrade_kubezero) upgrade_kubezero_config;;
|
||||||
;;
|
|
||||||
finalize_cluster_upgrade)
|
|
||||||
control_plane_upgrade final
|
|
||||||
;;
|
|
||||||
apply_*)
|
apply_*)
|
||||||
ARGOCD=$(argo_used)
|
ARGOCD=$(argo_used)
|
||||||
apply_module "${t##apply_}";;
|
apply_module "${t##apply_}";;
|
||||||
|
@ -353,7 +353,7 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function control_plane_upgrade() {
|
function admin_job() {
|
||||||
TASKS="$1"
|
TASKS="$1"
|
||||||
|
|
||||||
[ -z "$KUBE_VERSION" ] && KUBE_VERSION="latest"
|
[ -z "$KUBE_VERSION" ] && KUBE_VERSION="latest"
|
||||||
@ -363,7 +363,7 @@ function control_plane_upgrade() {
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Pod
|
kind: Pod
|
||||||
metadata:
|
metadata:
|
||||||
name: kubezero-upgrade
|
name: kubezero-admin-job
|
||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
labels:
|
labels:
|
||||||
app: kubezero-upgrade
|
app: kubezero-upgrade
|
||||||
@ -408,10 +408,10 @@ spec:
|
|||||||
restartPolicy: Never
|
restartPolicy: Never
|
||||||
EOF
|
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
|
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
|
sleep 3
|
||||||
done
|
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)
|
ARGOCD=$(argo_used)
|
||||||
|
|
||||||
echo "Checking that all pods in kube-system are running ..."
|
echo "Checking that all pods in kube-system are running ..."
|
||||||
#waitSystemPodsRunning
|
waitSystemPodsRunning
|
||||||
|
|
||||||
[ "$ARGOCD" == "true" ] && disable_argo
|
[ "$ARGOCD" == "true" ] && disable_argo
|
||||||
|
|
||||||
# Check if we already have all controllers on the current version
|
admin_job "upgrade_control_plane, upgrade_kubezero"
|
||||||
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
|
|
||||||
|
|
||||||
#echo "Adjust kubezero values as needed:"
|
#echo "Adjust kubezero values as needed:"
|
||||||
# shellcheck disable=SC2015
|
# shellcheck disable=SC2015
|
||||||
#[ "$ARGOCD" == "true" ] && kubectl edit app kubezero -n argocd || kubectl edit cm kubezero-values -n kubezero
|
#[ "$ARGOCD" == "true" ] && kubectl edit app kubezero -n argocd || kubectl edit cm kubezero-values -n kubezero
|
||||||
|
|
||||||
|
#echo "<Return> to continue"
|
||||||
|
#read -r
|
||||||
|
|
||||||
# upgrade modules
|
# 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 ..."
|
echo "Checking that all pods in kube-system are running ..."
|
||||||
waitSystemPodsRunning
|
waitSystemPodsRunning
|
||||||
|
|
||||||
echo "Applying remaining KubeZero modules..."
|
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
|
# we replace the project during v1.31 so disable again
|
||||||
[ "$ARGOCD" == "true" ] && disable_argo
|
[ "$ARGOCD" == "true" ] && disable_argo
|
||||||
@ -60,6 +51,12 @@ while true; do
|
|||||||
sleep 1
|
sleep 1
|
||||||
done
|
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 "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 "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
|
description: KubeZero umbrella chart for various optional cluster addons
|
||||||
type: application
|
type: application
|
||||||
version: 0.8.13
|
version: 0.8.13
|
||||||
appVersion: v1.30
|
appVersion: v1.31
|
||||||
home: https://kubezero.com
|
home: https://kubezero.com
|
||||||
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
|
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
|
||||||
keywords:
|
keywords:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user