From 66cc9e6301a79a731c989960d365e67291ac8f35 Mon Sep 17 00:00:00 2001 From: Maisem Ali Date: Sun, 4 Sep 2022 15:27:13 -0700 Subject: [PATCH] docs/k8s: make run.sh handle SIGINT It was previously using jobcontrol to achieve this, but that apparently doesn't work when there is no tty. This makes it so that it directly handles SIGINT and SIGTERM and passes it on to tailscaled. I tested this works on a Digital Ocean K8s cluster. Fixes #5512 Signed-off-by: Maisem Ali (cherry picked from commit 060ecb010f19a341ee7e55da8810dc0e6122a1f4) --- docs/k8s/run.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/k8s/run.sh b/docs/k8s/run.sh index 7c6294dd7..fc6cf84b5 100755 --- a/docs/k8s/run.sh +++ b/docs/k8s/run.sh @@ -4,8 +4,6 @@ #! /bin/sh -set -m # enable job control - export PATH=$PATH:/tailscale/bin TS_AUTH_KEY="${TS_AUTH_KEY:-}" @@ -60,8 +58,16 @@ if [[ ! -z "${TS_TAILSCALED_EXTRA_ARGS}" ]]; then TAILSCALED_ARGS="${TAILSCALED_ARGS} ${TS_TAILSCALED_EXTRA_ARGS}" fi +handler() { + echo "Caught SIGINT/SIGTERM, shutting down tailscaled" + kill -s SIGINT $PID + wait ${PID} +} + echo "Starting tailscaled" tailscaled ${TAILSCALED_ARGS} & +PID=$! +trap handler SIGINT SIGTERM UP_ARGS="--accept-dns=${TS_ACCEPT_DNS}" if [[ ! -z "${TS_ROUTES}" ]]; then @@ -82,4 +88,5 @@ if [[ ! -z "${TS_DEST_IP}" ]]; then iptables -t nat -I PREROUTING -d "$(tailscale --socket=/tmp/tailscaled.sock ip -4)" -j DNAT --to-destination "${TS_DEST_IP}" fi -fg +echo "Waiting for tailscaled to exit" +wait ${PID} \ No newline at end of file