Charmed-Kubernetes/snap-upgrade.sh

71 lines
2.1 KiB
Bash

#!/bin/bash
# Constants
ALL_SNAPS="kube-apiserver kube-scheduler kube-controller-manager kube-proxy kubectl kubelet cdk-addons"
MASTER_SNAPS="kube-apiserver kube-scheduler kube-controller-manager kube-proxy kubectl cdk-addons"
WORKER_SNAPS="kube-proxy kubelet kubectl"
# Prompt for channels
read -p "Enter the SNAP_CHANNEL (e.g. 1.21/stable): " SNAP_CHANNEL
read -p "Enter the JUJU_CHANNEL (e.g. 2.9/stable): " JUJU_CHANNEL
# Function to download snaps from a specific channel
download_snaps() {
local snaps=$1
local channel=$2
for snap in $snaps; do
echo "Downloading $snap from channel $channel..."
snap download --channel="$channel" "$snap" || exit 1
done
}
# Function to attach snaps to units
attach_snaps_to_units() {
local snaps=$1
local service=$2
for snap in $snaps; do
local snap_file
snap_file=$(ls "${snap}"_*.snap | head -n 1)
if [[ -f "$snap_file" ]]; then
echo "Attaching $snap_file to $service..."
# juju attach "$service" "$snap"="$snap_file" || exit 1
else
echo "Error: $snap_file not found."
exit 1
fi
done
}
# Function to upgrade units of a service
upgrade_service_units() {
local service=$1
local unit_names
unit_names=$(juju status --format json | jq -r ".applications|.[\"$service\"].units | keys[]")
for unit in $unit_names; do
echo "Upgrading $unit..."
# juju run-action "$unit" upgrade --wait || exit 1
done
}
# Download Juju
echo "Downloading Juju from channel $JUJU_CHANNEL..."
snap download --channel="$JUJU_CHANNEL" juju || exit 1
# Download Kubernetes snaps
download_snaps "$ALL_SNAPS" "$SNAP_CHANNEL"
echo "Downloading Juju from channel $JUJU_CHANNEL..."
snap download --channel="$JUJU_CHANNEL" juju || exit 1
# Download Kubernetes snaps
download_snaps "$ALL_SNAPS" "$SNAP_CHANNEL"
# Attach new snaps to Kubernetes master and worker units
attach_snaps_to_units "$MASTER_SNAPS" "kubernetes-master"
attach_snaps_to_units "$WORKER_SNAPS" "kubernetes-worker"
# Upgrade Kubernetes master and worker units
upgrade_service_units "kubernetes-master"
upgrade_service_units "kubernetes-worker"
echo "Upgrade process completed successfully."