forked from kapicorp/kapitan-reference
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimport_kubernetes_clusters
executable file
·50 lines (45 loc) · 1.3 KB
/
import_kubernetes_clusters
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
#!/bin/bash
# Import kubernetes cluster configuration using gcloud
# Usage: ./import_kubernetes_clusters [ gcp_project [..] ]
set -e
GCLOUD="gcloud"
GCLOUD_CLUSTER_LIST="${GCLOUD} container clusters list"
PROJECTS_LIST=()
if [[ ${#@} -gt 0 ]]
then
PROJECTS_LIST+=${@}
else
PROJECTS_LIST+=$(${GCLOUD} projects list --format="value(project_id)")
fi
for PROJECT in ${PROJECTS_LIST}
do
set +e
read -r -d '' VAR << EOM
{
"classes": [ "kapitan.templates.kubernetes" ],
"parameters": {
"google_project": "${PROJECT}",
"cluster": "\${\(.name)}",
(.name) : {
"name": .name,
"google_project": "${PROJECT}",
"zone": .zone,
"type": "gke",
"cluster": .name,
"id": "gke_${PROJECT}_\(.zone)_\(.name)",
"user": "gke_${PROJECT}_\(.zone)_\(.name)",
}
}
}
EOM
echo "Processing project ${PROJECT}"
for CLUSTER in $(${GCLOUD_CLUSTER_LIST} --project ${PROJECT} --format="value(name)")
do
echo "....discovered Kubernetes cluster $CLUSTER on project $PROJECT"
CLUSTER_DIR="$(dirname $0)/../inventory/classes/projects/$PROJECT/kubernetes"
CLUSTER_FILE="${CLUSTER_DIR}/${CLUSTER}.yml"
mkdir -p ${CLUSTER_DIR}
$GCLOUD_CLUSTER_LIST --project $PROJECT --format json --filter="name=$CLUSTER" | \
yq -r ".[] | $VAR" --yaml-output > ${CLUSTER_FILE}
done
done