-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy_project.sh
More file actions
executable file
·93 lines (74 loc) · 3.44 KB
/
Copy pathdeploy_project.sh
File metadata and controls
executable file
·93 lines (74 loc) · 3.44 KB
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/bash
set -e
log() {
local timestamp
timestamp="$(date +"%Y-%m-%d %H:%M:%S")"
echo "[$timestamp] $*"
}
if [ -z $NAMESPACE ]; then
export NAMESPACE="kubesnap"
log "setting namespace to $NAMESPACE"
fi
namespace_list=($(kubectl get ns -o json | jq -r .items[].metadata.name))
if [[ "${namespace_list[*]}" =~ " $NAMESPACE " ]] || [[ "${namespace_list[*]}" =~ "$NAMESPACE " ]] || [[ "${namespace_list[*]}" =~ " $NAMESPACE" ]]; then
log "namespace $NAMESPACE already present"
else
kubectl create namespace $NAMESPACE
log "namespace $NAMESPACE created"
fi
check_deployment() {
deployment_name=$1
INTERVAL=5
TIMEOUT=250
ELAPSED=0
deployment_status=$(kubectl -n "${NAMESPACE}" get deploy $deployment_name -o json | jq -r '.status.conditions[]' | jq -r 'select(.type == "Available").status')
while [ $ELAPSED -lt $TIMEOUT ]; do
deployment_status=$(kubectl -n "${NAMESPACE}" get deploy $deployment_name -o json | jq -r '.status.conditions[]' | jq -r 'select(.type == "Available").status')
if [[ "${deployment_status^^}" == "TRUE" ]]; then
break
fi
echo "Waiting for $deployment_name :: Elapsed - $ELAPSED"
sleep $INTERVAL
ELAPSED=$((ELAPSED + INTERVAL))
done
if [ $ELAPSED -ge $TIMEOUT ]; then
echo "Microservice deployment failed. $deployment_name not in running status!"
exit 1
fi
}
if [[ ! -z "${OBJECT_STORE_REQ}" ]]; then
kubectl -n "${NAMESPACE}" delete secret objectstore-auth --ignore-not-found
kubectl -n "${NAMESPACE}" create secret generic objectstore-auth \
--from-literal=OBJECT_STORE_REQ="${OBJECT_STORE_REQ}"
fi
# Delete the old service and deploy the signal engine service
kubectl -n "${NAMESPACE}" delete service kubesnap-service --ignore-not-found
kubectl -n "${NAMESPACE}" apply -f kubernetes/services/kubesnap-svc.yaml
log "kubesnap-service applied"
if [[ ! -z "${SF_API_KEY}" ]]; then
kubectl -n "${NAMESPACE}" delete secret api-credentials --ignore-not-found
kubectl -n "${NAMESPACE}" create secret generic api-credentials \
--from-literal=api-key="${SF_API_KEY}"
log "api-credentials secret created"
fi
# delete and recreate rbac related service configuration
kubectl delete clusterrolebinding kubesnap-rolebinding --ignore-not-found
kubectl delete clusterrole kubesnap-role --ignore-not-found
kubectl -n "${NAMESPACE}" delete serviceaccount kubesnap-svc-acc --ignore-not-found
sed -i "s|__NAMESPACE__|${NAMESPACE}|g" kubernetes/rbac/kubesnap-svc-acc.yaml
sed -i "s|__NAMESPACE__|${NAMESPACE}|g" kubernetes/rbac/role-binding.yaml
kubectl -n "${NAMESPACE}" apply -f kubernetes/rbac/kubesnap-svc-acc.yaml
kubectl -n "${NAMESPACE}" apply -f kubernetes/rbac/svc-acc-cluster-role.yaml
kubectl -n "${NAMESPACE}" apply -f kubernetes/rbac/role-binding.yaml
log "rbac related yamls applied"
# Delete and recreate stockflow-controller microservice
kubectl -n "${NAMESPACE}" delete deployment kubesnap --ignore-not-found
kubectl -n "${NAMESPACE}" apply -f kubernetes/deployments/kubesnap-deployment.yaml
log "kubesnap deployment applied"
# Verifying if the stockflow-controller is in running status
check_deployment "kubesnap"
# Apply ingress service
kubectl -n "${NAMESPACE}" delete ingress kubesnap-ingress --ignore-not-found
sed -i "s|__NAMESPACE__|${NAMESPACE}|g" kubernetes/services/kubesnap-ingress.yaml
kubectl -n "${NAMESPACE}" apply -f kubernetes/services/kubesnap-ingress.yaml
log "kubesnap-ingress applied"