#!/usr/bin/env bash # build-push.sh — build humor-units image and import it into containerd on each node # Usage: ./build-push.sh [tag] # Requires: buildah, ssh access to nodes, ctr on nodes set -euo pipefail TAG="${1:-latest}" IMAGE="localhost/humor-units:$TAG" ARCHIVE="/tmp/humor-units.tar" # Space-separated list of node SSH targets NODES="${NODES:-node1 node2}" echo "==> Building $IMAGE..." buildah build \ --format docker \ --tag "$IMAGE" \ "$(dirname "$0")" echo "==> Exporting to OCI archive $ARCHIVE..." buildah push "$IMAGE" "oci-archive:${ARCHIVE}:${IMAGE}" for NODE in $NODES; do echo "==> Copying to $NODE..." scp "$ARCHIVE" "$NODE:/tmp/humor-units.tar" echo "==> Importing on $NODE..." ssh "$NODE" "ctr -n k8s.io images import /tmp/humor-units.tar && rm /tmp/humor-units.tar" done echo "==> Restarting humor-units deployment..." kubectl rollout restart deployment/humor-units -n default echo "==> Done. Waiting for rollout..." kubectl rollout status deployment/humor-units -n default