feat(deploy): add scripts for k3d installation and SSH tunnel setup
This commit is contained in:
Executable
+63
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
REMOTE_HOST="chess@141.37.74.142"
|
||||
REMOTE_API_PORT="6443"
|
||||
LOCAL_PORT="6443"
|
||||
KUBECONFIG_FILE="${HOME}/.kube/htwg-1.yaml"
|
||||
|
||||
# ----
|
||||
|
||||
fetch_kubeconfig() {
|
||||
echo "📥 Fetching kubeconfig from remote..."
|
||||
mkdir -p "$(dirname "$KUBECONFIG_FILE")"
|
||||
ssh "$REMOTE_HOST" "~/.local/bin/k3d kubeconfig get htwg-1" \
|
||||
| sed "s|server: https://0.0.0.0:${REMOTE_API_PORT}|server: https://127.0.0.1:${LOCAL_PORT}|" \
|
||||
> "$KUBECONFIG_FILE"
|
||||
chmod 600 "$KUBECONFIG_FILE"
|
||||
echo "✅ Kubeconfig saved to ${KUBECONFIG_FILE}"
|
||||
}
|
||||
|
||||
# ----
|
||||
|
||||
cleanup() {
|
||||
echo ""
|
||||
echo "🔌 Closing tunnel..."
|
||||
kill "$SSH_PID" 2>/dev/null || true
|
||||
exit 0
|
||||
}
|
||||
|
||||
# ----
|
||||
|
||||
# Re-fetch kubeconfig if flag passed or file missing
|
||||
if [[ "${1:-}" == "--refresh" ]] || [[ ! -f "$KUBECONFIG_FILE" ]]; then
|
||||
fetch_kubeconfig
|
||||
fi
|
||||
|
||||
export KUBECONFIG="$KUBECONFIG_FILE"
|
||||
|
||||
echo "🔗 Starting SSH tunnel: localhost:${LOCAL_PORT} → ${REMOTE_HOST}:${REMOTE_API_PORT}"
|
||||
ssh -N -L "${LOCAL_PORT}:localhost:${REMOTE_API_PORT}" "$REMOTE_HOST" &
|
||||
SSH_PID=$!
|
||||
|
||||
trap cleanup INT TERM
|
||||
|
||||
# Wait for tunnel to be ready
|
||||
sleep 1
|
||||
if ! kill -0 "$SSH_PID" 2>/dev/null; then
|
||||
echo "❌ SSH tunnel failed to start."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Tunnel active (PID ${SSH_PID})"
|
||||
echo ""
|
||||
echo "Use in another terminal:"
|
||||
echo " export KUBECONFIG=${KUBECONFIG_FILE}"
|
||||
echo " kubectl get nodes"
|
||||
echo ""
|
||||
echo "Or source this file:"
|
||||
echo " source <(echo 'export KUBECONFIG=${KUBECONFIG_FILE}')"
|
||||
echo ""
|
||||
echo "Press Ctrl+C to close tunnel."
|
||||
|
||||
wait "$SSH_PID"
|
||||
Reference in New Issue
Block a user