Skip to content

Instantly share code, notes, and snippets.

@Mikulas
Last active October 1, 2017 18:17
Show Gist options
  • Save Mikulas/d9713d9558eebe077db4b53488feebb6 to your computer and use it in GitHub Desktop.
Save Mikulas/d9713d9558eebe077db4b53488feebb6 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
if [[ $# -ne 2 && $# -ne 3 ]]; then
echo "Usage: $0 namespace pattern [container]"
exit 1
fi
NS_PATTERN="$1"
PATTERN="$2"
NAMESPACE="$(kubectl get ns | grep "$NS_PATTERN" | awk '{print $1}' | sed -n 1p)"
POD_ID=$(kubectl -n "$NAMESPACE" get pods | grep "$PATTERN" | sed -n 1p | awk '{print $1}')
for SHELL in /bin/bash /bin/sh; do
if [[ $# -eq 2 ]]; then
kubectl exec -n "$NAMESPACE" -it "$POD_ID" -- "$SHELL" && break
else # container defined
CONTAINER_ID="$(kubectl -n "$NAMESPACE" get pod "$POD_ID" \
-o jsonpath="{.spec.containers[*].name}" | tr ' ' $'\n' | grep "$3")"
kubectl exec -n "$NAMESPACE" -it "$POD_ID" --container "$CONTAINER_ID" -- "$SHELL" && break
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment