-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathentrypoint.sh
64 lines (52 loc) · 1.58 KB
/
entrypoint.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
#!/bin/bash
set -e
function logInfo() {
color=`tput setaf 2`
echo -e $2 "[ ${color}Info$(tput sgr0) ] $(date "+%D-%T")\t $(tput bold)$1$(tput sgr0)"
}
function logError() {
color=`tput setaf 1`
echo -e $2 "[ ${color}Error$(tput sgr0) ] $(date "+%D-%T")\t $(tput bold)$1$(tput sgr0)"
}
function logWarn() {
color=`tput setaf 3`
echo -e $2 "[ ${color}Warning$(tput sgr0) ] $(date "+%D-%T")\t $(tput bold)$1$(tput sgr0)"
}
ENVS=( CLUSTER_NAME NAMESPACES RESOURCES )
for env in "${ENVS[@]}"; do
if [ "${!env}" = "" ]; then
logError "Please set a value for $env"
exit -1
fi
done
# Kubectl Options Debug
if [ "$KUBECTL_OPTIONS" != "" ]; then
echo 'Passed kubectl options: '$KUBECTL_OPTIONS
fi
# Setup
mkdir -p /var/lib/data
# Configs
DIRECTORY="/var/lib/data/$(date '+%Y-%m-%d')_$CLUSTER_NAME"
IFS=','
KUBECONFIG='./kubeconfig'
read -ra RESOURCES <<< "$RESOURCES"
read -ra NAMESPACES <<< "$NAMESPACES"
# Start Backup Process
echo ""
echo "########## Create Backup ##########"
echo ""
printf '%s:\t%s\n' "Desination" "$DIRECTORY"
printf '%s:\t%s\n' "Namespaces" "${NAMESPACES[*]}"
printf '%s:\t%s\n' "Resources" "${RESOURCES[*]}"
echo ""
echo ""
echo "Logs:"
mkdir -p $DIRECTORY
for resource in "${RESOURCES[@]}"; do
printf "\t%s\n" "Create backups for resource: $resource..."
for namespace in "${NAMESPACES[@]}"; do
file=$DIRECTORY/$resource"_"$namespace.yaml
printf '\t\t%s\n' "Backup '$resource' for '$namespace'"
kubectl get $KUBECTL_OPTIONS --kubeconfig $KUBECONFIG $resource -n $namespace -o yaml > $file
done
done