-
Notifications
You must be signed in to change notification settings - Fork 0
/
kubectl-ssh
executable file
·73 lines (61 loc) · 1.18 KB
/
kubectl-ssh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash -e
usage(){
echo "kubectl ssh <pod_name> [-n | --namespace] [-u | --user] [<ssh-parameters>]"
}
get_node_ip(){
pod_name=$1
namespace=$2
kubectl get pods \
$pod_name \
$(test -n "$namespace" && echo "-n $namespace" || true) \
-o yaml | \
grep "hostIP:" | \
cut -f2 -d: | \
tr -d "[:blank:]"
exit "${PIPESTATUS[0]}"
}
if [ $# -lt 1 ]
then
usage
exit 1
fi
ssh_args=""
pod_name="$1"
shift
while test $# -gt 0
do
case $1 in
-u|--user)
user=$2
shift
shift
;;
-u=*|--user=*)
user="${1#*=}"
shift
;;
-n|--namespace)
namespace=$2
shift
shift
;;
-n=*|--namespace=*)
namespace="${1#*=}"
shift
;;
-h|--help)
usage
exit 0
;;
*)
ssh_args+="$1 "
shift
;;
esac
done
destination="$(get_node_ip $pod_name $namespace)"
if test -n "$user"
then
destination="${user}@${destination}"
fi
ssh $destination $ssh_args