#!/usr/bin/env bash source .utils NAMESPACE="$(kubectl config view --minify --output 'jsonpath={..namespace}' &>/dev/null)" set -e NAMESPACE=${NAMESPACE:-default} POD="shell" IMAGE="digitalocean/doks-debug" CMD="bash" print_usage() { blue "kube-shell - create a new pod and exec into it's shell" echo " " underline "Usage:" echo "kube-shell [options]" echo " " underline "Options:" echo "-h, --help show this help text" echo "-n, --namespace the namespace the pod should launch in" echo "-p, --pod the name of the pod to get logs for (default: shell)" echo "-i, --image the image to use for the shell container (default: digitalocean/doks-debug)" echo "-c, --command the initial command to execute in the container (default: sh)" } while test $# -gt 0; do case "$1" in -n|--namespace) shift NAMESPACE=$1 shift ;; -p|--pod) shift POD=$1 shift ;; -i|--image) shift IMAGE=$1 shift ;; -c|--command) shift CMD=$1 shift ;; -h|--help) print_usage exit 0 ;; *) break ;; esac done NAMESPACE=${NAMESPACE:-default} OVERRIDES='{ "spec": { "securityContext": {"runAsGroup": 1000,"runAsNonRoot": true,"runAsUser": 1000,"seccompProfile": {"type": "RuntimeDefault"}}, "containers": [ { "name":"'$POD'","image":"'$IMAGE'", "command": ["'$CMD'"], "stdin": true,"stdinOnce": true,"tty": true, "securityContext": {"allowPrivilegeEscalation": false,"capabilities": {"drop": ["ALL"]},"privileged": false,"runAsGroup": 1000,"runAsNonRoot": true,"runAsUser": 1000,"seccompProfile": {"type": "RuntimeDefault"}} } ] } }' kubectl run -it --namespace $NAMESPACE $POD --image $IMAGE --restart Never --overrides "${OVERRIDES}" --rm -- $CMD