From 4397d810dd5d1d0f8453d6914e4b8c04e448b4ca Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Sat, 7 Oct 2023 06:53:00 +0200 Subject: add le files --- Makefile.am | 7 +++++++ configure.ac | 19 +++++++++++++++++++ krash.in | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 Makefile.am create mode 100644 configure.ac create mode 100644 krash.in diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..8b45e33 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,7 @@ +bin_SCRIPTS = krash +CLEANFILES = $(bin_SCRIPTS) + +install-exec-hook: + cd $(DESTDIR)$(bindir) && rm -f kubectl-node-crash && $(LN_S) krash kubectl-node-crash +uninstall-hook: + cd $(DESTDIR)$(bindir) && rm -f kubectl-node-crash diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..3c9d22c --- /dev/null +++ b/configure.ac @@ -0,0 +1,19 @@ +AC_INIT([krash], [1.0.0], [christian@segundo.io]) +AM_INIT_AUTOMAKE([foreign no-dependencies]) +AC_CONFIG_FILES([Makefile]) + +AC_SUBST([CC]) + +AC_PROG_LN_S +AC_PATH_PROG([ENV_ABSOLUTE_PATH], [env]) +AS_IF([test x"$ENV_ABSOLUTE_PATH" = x""], [AC_MSG_ERROR([env is not available])]) +AC_SUBST([ENV_ABSOLUTE_PATH]) + +AC_CHECK_PROG(BASH_CHECK,bash,yes) +AC_CHECK_PROG(KUBECTL_CHECK,kubectl,yes) +AS_IF([test x"$BASH_CHECK" != x"yes"], [AC_MSG_ERROR([bash is not available])]) +AS_IF([test x"$KUBECTL_CHECK" != x"yes"], [AC_MSG_ERROR([kubectl is not available])]) + +AC_CONFIG_FILES([krash], [chmod +x krash]) + +AC_OUTPUT diff --git a/krash.in b/krash.in new file mode 100644 index 0000000..aff12ec --- /dev/null +++ b/krash.in @@ -0,0 +1,39 @@ +#!@ENV_ABSOLUTE_PATH@ bash +set -eufo pipefail + +command -v kubectl >/dev/null 2>&1 || { echo 'Please install kubectl'; exit 1; } + +USAGE="Usage: $(basename "$0") [-r|--reboot]" +[ $# -eq 0 ] && { echo "$USAGE"; exit 1; } +NODE_REBOOT=0 +NODE_NAME=${1:-}; shift + +if [[ $# -gt 0 ]]; then + if [[ "$1" =~ ^-r|--reboot$ ]]; then + NODE_REBOOT=1; shift + else + echo "$USAGE"; exit 1 + fi +fi + +kubectl apply -f - <<-EOF > /dev/null +--- +apiVersion: v1 +kind: Pod +metadata: + name: krash-${RANDOM} +spec: + containers: + - name: krash + image: alpine:latest + securityContext: + privileged: true + command: + - /bin/sh + - -c + - | + sysctl -w kernel.panic=${NODE_REBOOT} + echo 'c' > /proc/sysrq-trigger + priorityClassName: system-node-critical + nodeName: ${NODE_NAME} +EOF -- cgit v1.2.3