Commit 7c72233387a3ad52f461a743d9a3926e3e153e9e

Authored by viktor
1 parent 53b240a7

Added commands for creating Redis cluster in k8s-deploy-thirdparty.sh

1 1 # Can be either basic (with single instance of Zookeeper, Kafka and Redis) or high-availability (with Zookeeper, Kafka and Redis in cluster modes).
2 2 # According to the deployment type corresponding kubernetes resources will be deployed (see content of the directories ./basic and ./high-availability for details).
3   -DEPLOYMENT_TYPE=basic
  3 +DEPLOYMENT_TYPE=high-availability
4 4
5 5 # Database used by ThingsBoard, can be either postgres (PostgreSQL) or cassandra (Cassandra).
6 6 # According to the database type corresponding kubernetes resources will be deployed (see postgres.yml, cassandra.yml for details).
... ...
... ... @@ -53,19 +53,7 @@ Execute the following command to deploy thirdparty resources:
53 53 $ ./k8s-deploy-thirdparty.sh
54 54 `
55 55
56   -Get list of the running tb-redis pods and verify that all of them are in running state:
57   -
58   -`
59   -$ kubectl get pods -l app=tb-redis
60   -`
61   -
62   -If you are running ThingsBoard in `high-availability` `DEPLOYMENT_TYPE` execute the following command to create redis cluster:
63   -
64   -`
65   -$ kubectl exec -it tb-redis-0 -- redis-cli --cluster create --cluster-replicas 1 $(kubectl get pods -l app=tb-redis -o jsonpath='{range.items[*]}{.status.podIP}:6379 ')
66   -`
67   -
68   -Type **'yes'** when prompted.
  56 +Type **'yes'** when prompted, if you are running ThingsBoard in `high-availability` `DEPLOYMENT_TYPE` for the first time and don't configured Redis cluster.
69 57
70 58 Execute the following command to deploy resources:
71 59
... ...
... ... @@ -23,3 +23,23 @@ kubectl apply -f common/tb-namespace.yml
23 23 kubectl config set-context $(kubectl config current-context) --namespace=thingsboard
24 24
25 25 kubectl apply -f $DEPLOYMENT_TYPE/thirdparty.yml
  26 +
  27 +
  28 +if [ "$DEPLOYMENT_TYPE" == "high-availability" ]; then
  29 + echo -n "waiting for all redis pods to be ready";
  30 + while [[ $(kubectl get pods tb-redis-5 -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}' 2>/dev/null) != "True" ]];
  31 + do
  32 + echo -n "." && sleep 5;
  33 + done
  34 +
  35 + if [[ $(kubectl exec -it tb-redis-0 -- redis-cli cluster info 2>&1 | head -n 1) =~ "cluster_state:ok" ]]
  36 + then
  37 + echo "redis cluster is already configured"
  38 + else
  39 + echo "starting redis cluster"
  40 + redisNodes=$(kubectl get pods -l app=tb-redis -o jsonpath='{range.items[*]}{.status.podIP}:6379 ')
  41 + kubectl exec -it tb-redis-0 -- redis-cli --cluster create --cluster-replicas 1 $redisNodes
  42 + fi
  43 +
  44 +fi
  45 +
... ...