-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathkubectl_wrapper.sh
executable file
·73 lines (55 loc) · 1.63 KB
/
kubectl_wrapper.sh
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
#!/usr/bin/env bash
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -xeo pipefail
if [ "$#" -lt 5 ]; then
>&2 echo "Not all expected arguments set."
exit 1
fi
CLUSTER_NAME=$1
LOCATION=$2
PROJECT_ID=$3
INTERNAL=$4
USE_EXISTING_CONTEXT=$5
ENABLE_IMPERSONATE_SERVICE_ACCOUNT=$6
IMPERSONATE_SERVICE_ACCOUNT=$7
shift 5
if $USE_EXISTING_CONTEXT ;then
"$@"
else
RANDOM_ID="${RANDOM}_${RANDOM}"
export TMPDIR="/tmp/kubectl_wrapper_${RANDOM_ID}"
function cleanup {
rm -rf "${TMPDIR}"
}
trap cleanup EXIT
mkdir "${TMPDIR}"
export KUBECONFIG="${TMPDIR}/config"
LOCATION_TYPE=$(grep -o "-" <<< "${LOCATION}" | wc -l)
CMD="gcloud container clusters get-credentials ${CLUSTER_NAME} --project ${PROJECT_ID}"
if [[ "${ENABLE_IMPERSONATE_SERVICE_ACCOUNT}" == true ]]; then
CMD+=" --impersonate-service-account ${IMPERSONATE_SERVICE_ACCOUNT}"
shift 2
fi
if [[ $LOCATION_TYPE -eq 2 ]] ;then
CMD+=" --zone ${LOCATION}"
else
CMD+=" --region ${LOCATION}"
fi
if $INTERNAL ;then
CMD+=" --internal-ip"
fi
$CMD
"$@"
fi