35 lines
1012 B
Bash
Executable File
35 lines
1012 B
Bash
Executable File
#!/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="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
|