#!/bin/bash set -u watch_mode=false while [[ $# -gt 0 ]]; do case "$1" in -w|--watch) watch_mode=true; shift ;; *) shift ;; esac done render_nodes() { local raw raw=$(kubectl get nodes -L topology.kubernetes.io/zone,topology.kubernetes.io/region 2>/dev/null || true) echo "$raw" | awk ' BEGIN { ERR = "\033[38;2;255;46;76m" RUN = "\033[38;2;166;227;161m" HEAD = "\033[38;2;147;154;183m" RST = "\033[0m" } NR==1 { print HEAD $0 RST; next } { if ($2 ~ /Ready/ && $2 !~ /NotReady/) { print RUN $0 RST } else { print ERR $0 RST } }' } if [[ "$watch_mode" == true ]]; then trap 'tput cnorm 2>/dev/null || true; echo ""; exit 0' INT TERM tput civis 2>/dev/null || true clear while true; do tput cup 0 0 2>/dev/null || true render_nodes tput ed 2>/dev/null || true sleep 1 done else render_nodes fi