Commit f2974532c607ea239aff63bf0885628496f13bd4

Authored by Andrii Shvaika
1 parent 397a97ce

K8S scripts moved to separate repository

k8s/.env deleted 100644 → 0
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 -# 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  
4 -  
5 -# Database used by ThingsBoard, can be either postgres (PostgreSQL) or hybrid (PostgreSQL for entities database and Cassandra for timeseries database).  
6 -# According to the database type corresponding kubernetes resources will be deployed (see postgres.yml, cassandra.yml for details).  
7 -DATABASE=postgres  
8 -  
1 -# Kubernetes resources configuration for ThingsBoard Microservices  
2 -  
3 -This folder containing scripts and Kubernetes resources configurations to run ThingsBoard in Microservices mode.  
4 -  
5 -## Prerequisites  
6 -  
7 -ThingsBoard Microservices run on the Kubernetes cluster.  
8 -You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster.  
9 -If you do not have a cluster already, you can create one by using [Minikube](https://kubernetes.io/docs/setup/minikube),  
10 -or you can choose any other available [Kubernetes cluster deployment solutions](https://kubernetes.io/docs/setup/pick-right-solution/).  
11 -  
12 -### Enable ingress addon  
13 -  
14 -By default ingress addon is disabled in the Minikube, and available only in cluster providers.  
15 -To enable ingress, please execute the following command:  
16 -  
17 -`  
18 -$ minikube addons enable ingress  
19 -`  
20 -  
21 -## Installation  
22 -  
23 -Before performing initial installation you can configure the type of database to be used with ThingsBoard and the type of deployment.  
24 -To set database type change the value of `DATABASE` variable in `.env` file to one of the following:  
25 -  
26 -- `postgres` - use PostgreSQL database;  
27 -- `hybrid` - use PostgreSQL for entities database and Cassandra for timeseries database;  
28 -  
29 -**NOTE**: According to the database type corresponding kubernetes resources will be deployed (see `postgres.yml`, `cassandra.yml` for details).  
30 -  
31 -To set deployment type change the value of `DEPLOYMENT_TYPE` variable in `.env` file to one of the following:  
32 -  
33 -- `basic` - startup with a single instance of Zookeeper, Kafka and Redis;  
34 -- `high-availability` - startup with Zookeeper, Kafka, and Redis in cluster modes;  
35 -  
36 -**NOTE**: According to the deployment type corresponding kubernetes resources will be deployed (see the content of the directories `./basic` and `./high-availability` for details).  
37 -  
38 -Execute the following command to run the installation:  
39 -  
40 -`  
41 -$ ./k8s-install-tb.sh --loadDemo  
42 -`  
43 -  
44 -Where:  
45 -  
46 -- `--loadDemo` - optional argument. Whether to load additional demo data.  
47 -  
48 -## Running  
49 -  
50 -Execute the following command to deploy third-party resources:  
51 -  
52 -`  
53 -$ ./k8s-deploy-thirdparty.sh  
54 -`  
55 -  
56 -Type **'yes'** when prompted, if you are running ThingsBoard in `high-availability` `DEPLOYMENT_TYPE` for the first time and don't have configured Redis cluster.  
57 -  
58 -Execute the following command to deploy resources:  
59 -  
60 -`  
61 -$ ./k8s-deploy-resources.sh  
62 -`  
63 -  
64 -After a while when all resources will be successfully started you can open `http://{your-cluster-ip}` in your browser (for ex. `http://192.168.99.101`).  
65 -You should see the ThingsBoard login page.  
66 -  
67 -Use the following default credentials:  
68 -  
69 -- **System Administrator**: sysadmin@thingsboard.org / sysadmin  
70 -  
71 -If you installed DataBase with demo data (using `--loadDemo` flag) you can also use the following credentials:  
72 -  
73 -- **Tenant Administrator**: tenant@thingsboard.org / tenant  
74 -- **Customer User**: customer@thingsboard.org / customer  
75 -  
76 -In case of any issues, you can examine service logs for errors.  
77 -For example to see ThingsBoard node logs execute the following commands:  
78 -  
79 -1) Get the list of the running tb-node pods:  
80 -  
81 -`  
82 -$ kubectl get pods -l app=tb-node  
83 -`  
84 -  
85 -2) Fetch logs of the tb-node pod:  
86 -  
87 -`  
88 -$ kubectl logs -f [tb-node-pod-name]  
89 -`  
90 -  
91 -Where:  
92 -  
93 -- `tb-node-pod-name` - tb-node pod name obtained from the list of the running tb-node pods.  
94 -  
95 -Or use `kubectl get pods` to see the state of all the pods.  
96 -Or use `kubectl get services` to see the state of all the services.  
97 -Or use `kubectl get deployments` to see the state of all the deployments.  
98 -See [kubectl Cheat Sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/) command reference for details.  
99 -  
100 -Execute the following command to delete all ThingsBoard microservices:  
101 -  
102 -`  
103 -$ ./k8s-delete-resources.sh  
104 -`  
105 -  
106 -Execute the following command to delete all third-party microservices:  
107 -  
108 -`  
109 -$ ./k8s-delete-thirdparty.sh  
110 -`  
111 -  
112 -Execute the following command to delete all resources (including database):  
113 -  
114 -`  
115 -$ ./k8s-delete-all.sh  
116 -`  
117 -  
118 -## Upgrading  
119 -  
120 -In case when database upgrade is needed, execute the following commands:  
121 -  
122 -```  
123 -$ ./k8s-delete-resources.sh  
124 -$ ./k8s-upgrade-tb.sh --fromVersion=[FROM_VERSION]  
125 -$ ./k8s-deploy-resources.sh  
126 -```  
127 -  
128 -Where:  
129 -  
130 -- `FROM_VERSION` - from which version upgrade should be started. See [Upgrade Instructions](https://thingsboard.io/docs/user-guide/install/upgrade-instructions) for valid `fromVersion` values.  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: ConfigMap  
19 -metadata:  
20 - name: tb-node-cache-config  
21 - namespace: thingsboard  
22 - labels:  
23 - name: tb-node-cache-config  
24 -data:  
25 - CACHE_TYPE: redis  
26 - REDIS_HOST: tb-redis  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: apps/v1  
18 -kind: Deployment  
19 -metadata:  
20 - name: zookeeper  
21 - namespace: thingsboard  
22 -spec:  
23 - selector:  
24 - matchLabels:  
25 - app: zookeeper  
26 - template:  
27 - metadata:  
28 - labels:  
29 - app: zookeeper  
30 - spec:  
31 - containers:  
32 - - name: server  
33 - imagePullPolicy: Always  
34 - image: zookeeper:3.5  
35 - ports:  
36 - - containerPort: 2181  
37 - readinessProbe:  
38 - periodSeconds: 5  
39 - tcpSocket:  
40 - port: 2181  
41 - livenessProbe:  
42 - initialDelaySeconds: 15  
43 - periodSeconds: 5  
44 - tcpSocket:  
45 - port: 2181  
46 - env:  
47 - - name: ZOO_MY_ID  
48 - value: "1"  
49 - - name: ZOO_SERVERS  
50 - value: "server.1=0.0.0.0:2888:3888;0.0.0.0:2181"  
51 - restartPolicy: Always  
52 ----  
53 -apiVersion: v1  
54 -kind: Service  
55 -metadata:  
56 - name: zookeeper  
57 - namespace: thingsboard  
58 -spec:  
59 - type: ClusterIP  
60 - selector:  
61 - app: zookeeper  
62 - ports:  
63 - - name: zk-port  
64 - port: 2181  
65 ----  
66 -apiVersion: apps/v1  
67 -kind: Deployment  
68 -metadata:  
69 - name: tb-kafka  
70 - namespace: thingsboard  
71 -spec:  
72 - selector:  
73 - matchLabels:  
74 - app: tb-kafka  
75 - template:  
76 - metadata:  
77 - labels:  
78 - app: tb-kafka  
79 - spec:  
80 - containers:  
81 - - name: server  
82 - imagePullPolicy: Always  
83 - image: wurstmeister/kafka:2.12-2.2.1  
84 - ports:  
85 - - containerPort: 9092  
86 - readinessProbe:  
87 - periodSeconds: 20  
88 - tcpSocket:  
89 - port: 9092  
90 - livenessProbe:  
91 - initialDelaySeconds: 25  
92 - periodSeconds: 5  
93 - tcpSocket:  
94 - port: 9092  
95 - env:  
96 - - name: KAFKA_ZOOKEEPER_CONNECT  
97 - value: "zookeeper:2181"  
98 - - name: KAFKA_LISTENERS  
99 - value: "INSIDE://:9093,OUTSIDE://:9092"  
100 - - name: KAFKA_ADVERTISED_LISTENERS  
101 - value: "INSIDE://:9093,OUTSIDE://tb-kafka:9092"  
102 - - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP  
103 - value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"  
104 - - name: KAFKA_INTER_BROKER_LISTENER_NAME  
105 - value: "INSIDE"  
106 - - name: KAFKA_CREATE_TOPICS  
107 - value: "js_eval.requests:100:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb_transport.api.requests:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb_rule_engine:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600"  
108 - - name: KAFKA_AUTO_CREATE_TOPICS_ENABLE  
109 - value: "false"  
110 - - name: KAFKA_LOG_RETENTION_BYTES  
111 - value: "1073741824"  
112 - - name: KAFKA_LOG_SEGMENT_BYTES  
113 - value: "268435456"  
114 - - name: KAFKA_LOG_RETENTION_MS  
115 - value: "300000"  
116 - - name: KAFKA_LOG_CLEANUP_POLICY  
117 - value: "delete"  
118 - restartPolicy: Always  
119 ----  
120 -apiVersion: v1  
121 -kind: Service  
122 -metadata:  
123 - name: tb-kafka  
124 - namespace: thingsboard  
125 -spec:  
126 - type: ClusterIP  
127 - selector:  
128 - app: tb-kafka  
129 - ports:  
130 - - name: tb-kafka-port  
131 - port: 9092  
132 ----  
133 -apiVersion: apps/v1  
134 -kind: Deployment  
135 -metadata:  
136 - name: tb-redis  
137 - namespace: thingsboard  
138 -spec:  
139 - selector:  
140 - matchLabels:  
141 - app: tb-redis  
142 - template:  
143 - metadata:  
144 - labels:  
145 - app: tb-redis  
146 - spec:  
147 - containers:  
148 - - name: server  
149 - imagePullPolicy: Always  
150 - image: redis:4.0  
151 - ports:  
152 - - containerPort: 6379  
153 - readinessProbe:  
154 - periodSeconds: 5  
155 - tcpSocket:  
156 - port: 6379  
157 - livenessProbe:  
158 - periodSeconds: 5  
159 - tcpSocket:  
160 - port: 6379  
161 - volumeMounts:  
162 - - mountPath: /data  
163 - name: redis-data  
164 - volumes:  
165 - - name: redis-data  
166 - emptyDir: {}  
167 - restartPolicy: Always  
168 ----  
169 -apiVersion: v1  
170 -kind: Service  
171 -metadata:  
172 - name: tb-redis  
173 - namespace: thingsboard  
174 -spec:  
175 - type: ClusterIP  
176 - selector:  
177 - app: tb-redis  
178 - ports:  
179 - - name: tb-redis-port  
180 - port: 6379  
181 ----  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: storage.k8s.io/v1  
18 -kind: StorageClass  
19 -metadata:  
20 - name: fast  
21 - namespace: thingsboard  
22 -provisioner: k8s.io/minikube-hostpath  
23 -parameters:  
24 - type: pd-ssd  
25 ----  
26 -apiVersion: v1  
27 -kind: ConfigMap  
28 -metadata:  
29 - name: cassandra-probe-config  
30 - namespace: thingsboard  
31 - labels:  
32 - name: cassandra-probe-config  
33 -data:  
34 - probe: |  
35 - if [[ $(nodetool status | grep $POD_IP) == *"UN"* ]]; then  
36 - if [[ $DEBUG ]]; then  
37 - echo "UN";  
38 - fi  
39 - exit 0;  
40 - else  
41 - if [[ $DEBUG ]]; then  
42 - echo "Not Up";  
43 - fi  
44 - exit 1;  
45 - fi  
46 ----  
47 -apiVersion: apps/v1  
48 -kind: StatefulSet  
49 -metadata:  
50 - name: cassandra  
51 - namespace: thingsboard  
52 - labels:  
53 - app: cassandra  
54 -spec:  
55 - serviceName: cassandra  
56 - replicas: 1  
57 - selector:  
58 - matchLabels:  
59 - app: cassandra  
60 - template:  
61 - metadata:  
62 - labels:  
63 - app: cassandra  
64 - spec:  
65 - volumes:  
66 - - name: cassandra-probe-config  
67 - configMap:  
68 - name: cassandra-probe-config  
69 - items:  
70 - - key: probe  
71 - path: ready-probe.sh  
72 - mode: 0777  
73 - terminationGracePeriodSeconds: 1800  
74 - containers:  
75 - - name: cassandra  
76 - image: cassandra:3.11.3  
77 - imagePullPolicy: Always  
78 - ports:  
79 - - containerPort: 7000  
80 - name: intra-node  
81 - - containerPort: 7001  
82 - name: tls-intra-node  
83 - - containerPort: 7199  
84 - name: jmx  
85 - - containerPort: 9042  
86 - name: cql  
87 - - containerPort: 9160  
88 - name: thrift  
89 - resources:  
90 - limits:  
91 - cpu: "1000m"  
92 - memory: 2Gi  
93 - requests:  
94 - cpu: "1000m"  
95 - memory: 2Gi  
96 - securityContext:  
97 - capabilities:  
98 - add:  
99 - - IPC_LOCK  
100 - lifecycle:  
101 - preStop:  
102 - exec:  
103 - command:  
104 - - /bin/sh  
105 - - -c  
106 - - nodetool drain  
107 - env:  
108 - - name: CASSANDRA_SEEDS  
109 - value: "cassandra-0.cassandra.thingsboard.svc.cluster.local"  
110 - - name: MAX_HEAP_SIZE  
111 - value: 1024M  
112 - - name: HEAP_NEWSIZE  
113 - value: 256M  
114 - - name: CASSANDRA_CLUSTER_NAME  
115 - value: "Thingsboard Cluster"  
116 - - name: CASSANDRA_DC  
117 - value: "datacenter1"  
118 - - name: CASSANDRA_RACK  
119 - value: "Rack-Thingsboard-Cluster"  
120 - - name: CASSANDRA_AUTO_BOOTSTRAP  
121 - value: "false"  
122 - - name: CASSANDRA_ENDPOINT_SNITCH  
123 - value: GossipingPropertyFileSnitch  
124 - - name: POD_IP  
125 - valueFrom:  
126 - fieldRef:  
127 - fieldPath: status.podIP  
128 - readinessProbe:  
129 - exec:  
130 - command:  
131 - - /bin/bash  
132 - - -c  
133 - - /probe/ready-probe.sh  
134 - initialDelaySeconds: 60  
135 - timeoutSeconds: 5  
136 - volumeMounts:  
137 - - name: cassandra-probe-config  
138 - mountPath: /probe  
139 - - name: cassandra-data  
140 - mountPath: /var/lib/cassandra  
141 - volumeClaimTemplates:  
142 - - metadata:  
143 - name: cassandra-data  
144 - spec:  
145 - accessModes: [ "ReadWriteOnce" ]  
146 - storageClassName: fast  
147 - resources:  
148 - requests:  
149 - storage: 1Gi  
150 ----  
151 -apiVersion: v1  
152 -kind: Service  
153 -metadata:  
154 - labels:  
155 - app: cassandra  
156 - name: cassandra  
157 - namespace: thingsboard  
158 -spec:  
159 - clusterIP: None  
160 - ports:  
161 - - port: 9042  
162 - selector:  
163 - app: cassandra  
164 ----  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: Pod  
19 -metadata:  
20 - name: tb-db-setup  
21 - namespace: thingsboard  
22 -spec:  
23 - volumes:  
24 - - name: tb-node-config  
25 - configMap:  
26 - name: tb-node-config  
27 - items:  
28 - - key: conf  
29 - path: thingsboard.conf  
30 - - key: logback  
31 - path: logback.xml  
32 - containers:  
33 - - name: tb-db-setup  
34 - imagePullPolicy: Always  
35 - image: thingsboard/tb-node:latest  
36 - envFrom:  
37 - - configMapRef:  
38 - name: tb-node-db-config  
39 - volumeMounts:  
40 - - mountPath: /config  
41 - name: tb-node-config  
42 - command: ['sh', '-c', 'while [ ! -f /tmp/install-finished ]; do sleep 2; done;']  
43 - restartPolicy: Never  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: PersistentVolumeClaim  
19 -metadata:  
20 - name: postgres-pv-claim  
21 - namespace: thingsboard  
22 - labels:  
23 - app: postgres  
24 -spec:  
25 - accessModes:  
26 - - ReadWriteOnce  
27 - resources:  
28 - requests:  
29 - storage: 5Gi  
30 ----  
31 -apiVersion: apps/v1  
32 -kind: Deployment  
33 -metadata:  
34 - name: postgres  
35 - namespace: thingsboard  
36 - labels:  
37 - app: postgres  
38 -spec:  
39 - selector:  
40 - matchLabels:  
41 - app: postgres  
42 - template:  
43 - metadata:  
44 - labels:  
45 - app: postgres  
46 - spec:  
47 - volumes:  
48 - - name: postgres-data  
49 - persistentVolumeClaim:  
50 - claimName: postgres-pv-claim  
51 - containers:  
52 - - name: postgres  
53 - imagePullPolicy: Always  
54 - image: postgres:12  
55 - ports:  
56 - - containerPort: 5432  
57 - name: postgres  
58 - env:  
59 - - name: POSTGRES_DB  
60 - value: "thingsboard"  
61 - - name: POSTGRES_PASSWORD  
62 - value: "postgres"  
63 - - name: PGDATA  
64 - value: /var/lib/postgresql/data/pgdata  
65 - volumeMounts:  
66 - - mountPath: /var/lib/postgresql/data  
67 - name: postgres-data  
68 - livenessProbe:  
69 - exec:  
70 - command:  
71 - - pg_isready  
72 - - -h  
73 - - localhost  
74 - - -U  
75 - - postgres  
76 - initialDelaySeconds: 60  
77 - timeoutSeconds: 30  
78 - readinessProbe:  
79 - exec:  
80 - command:  
81 - - pg_isready  
82 - - -h  
83 - - localhost  
84 - - -U  
85 - - postgres  
86 - initialDelaySeconds: 5  
87 - timeoutSeconds: 1  
88 - restartPolicy: Always  
89 ----  
90 -apiVersion: v1  
91 -kind: Service  
92 -metadata:  
93 - name: tb-database  
94 - namespace: thingsboard  
95 -spec:  
96 - type: ClusterIP  
97 - selector:  
98 - app: postgres  
99 - ports:  
100 - - port: 5432  
101 - name: postgres  
102 ----  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: ConfigMap  
19 -metadata:  
20 - name: tb-coap-transport-config  
21 - namespace: thingsboard  
22 - labels:  
23 - name: tb-coap-transport-config  
24 -data:  
25 - conf: |  
26 - export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=/var/log/tb-coap-transport/${TB_SERVICE_ID}-gc.log:time,uptime,level,tags:filecount=10,filesize=10M"  
27 - export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-coap-transport/${TB_SERVICE_ID}-heapdump.bin"  
28 - export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"  
29 - export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10"  
30 - export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError"  
31 - export LOG_FILENAME=tb-coap-transport.out  
32 - export LOADER_PATH=/usr/share/tb-coap-transport/conf  
33 - logback: |  
34 - <!DOCTYPE configuration>  
35 - <configuration scan="true" scanPeriod="10 seconds">  
36 -  
37 - <appender name="fileLogAppender"  
38 - class="ch.qos.logback.core.rolling.RollingFileAppender">  
39 - <file>/var/log/tb-coap-transport/${TB_SERVICE_ID}/tb-coap-transport.log</file>  
40 - <rollingPolicy  
41 - class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">  
42 - <fileNamePattern>/var/log/tb-coap-transport/${TB_SERVICE_ID}/tb-coap-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern>  
43 - <maxFileSize>100MB</maxFileSize>  
44 - <maxHistory>30</maxHistory>  
45 - <totalSizeCap>3GB</totalSizeCap>  
46 - </rollingPolicy>  
47 - <encoder>  
48 - <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>  
49 - </encoder>  
50 - </appender>  
51 -  
52 - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
53 - <encoder>  
54 - <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>  
55 - </encoder>  
56 - </appender>  
57 -  
58 - <logger name="org.thingsboard.server" level="INFO" />  
59 -  
60 - <root level="INFO">  
61 - <appender-ref ref="fileLogAppender"/>  
62 - <appender-ref ref="STDOUT"/>  
63 - </root>  
64 -  
65 - </configuration>  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: ConfigMap  
19 -metadata:  
20 - name: tb-http-transport-config  
21 - namespace: thingsboard  
22 - labels:  
23 - name: tb-http-transport-config  
24 -data:  
25 - conf: |  
26 - export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=/var/log/tb-http-transport/${TB_SERVICE_ID}-gc.log:time,uptime,level,tags:filecount=10,filesize=10M"  
27 - export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-http-transport/${TB_SERVICE_ID}-heapdump.bin"  
28 - export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"  
29 - export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10"  
30 - export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError"  
31 - export LOG_FILENAME=tb-http-transport.out  
32 - export LOADER_PATH=/usr/share/tb-http-transport/conf  
33 - logback: |  
34 - <!DOCTYPE configuration>  
35 - <configuration scan="true" scanPeriod="10 seconds">  
36 -  
37 - <appender name="fileLogAppender"  
38 - class="ch.qos.logback.core.rolling.RollingFileAppender">  
39 - <file>/var/log/tb-http-transport/${TB_SERVICE_ID}/tb-http-transport.log</file>  
40 - <rollingPolicy  
41 - class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">  
42 - <fileNamePattern>/var/log/tb-http-transport/${TB_SERVICE_ID}/tb-http-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern>  
43 - <maxFileSize>100MB</maxFileSize>  
44 - <maxHistory>30</maxHistory>  
45 - <totalSizeCap>3GB</totalSizeCap>  
46 - </rollingPolicy>  
47 - <encoder>  
48 - <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>  
49 - </encoder>  
50 - </appender>  
51 -  
52 - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
53 - <encoder>  
54 - <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>  
55 - </encoder>  
56 - </appender>  
57 -  
58 - <logger name="org.thingsboard.server" level="INFO" />  
59 -  
60 - <root level="INFO">  
61 - <appender-ref ref="fileLogAppender"/>  
62 - <appender-ref ref="STDOUT"/>  
63 - </root>  
64 -  
65 - </configuration>  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: ConfigMap  
19 -metadata:  
20 - name: tb-mqtt-transport-config  
21 - namespace: thingsboard  
22 - labels:  
23 - name: tb-mqtt-transport-config  
24 -data:  
25 - conf: |  
26 - export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=/var/log/tb-mqtt-transport/${TB_SERVICE_ID}-gc.log:time,uptime,level,tags:filecount=10,filesize=10M"  
27 - export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-mqtt-transport/${TB_SERVICE_ID}-heapdump.bin"  
28 - export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"  
29 - export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10"  
30 - export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError"  
31 - export LOG_FILENAME=tb-mqtt-transport.out  
32 - export LOADER_PATH=/usr/share/tb-mqtt-transport/conf  
33 - logback: |  
34 - <!DOCTYPE configuration>  
35 - <configuration scan="true" scanPeriod="10 seconds">  
36 -  
37 - <appender name="fileLogAppender"  
38 - class="ch.qos.logback.core.rolling.RollingFileAppender">  
39 - <file>/var/log/tb-mqtt-transport/${TB_SERVICE_ID}/tb-mqtt-transport.log</file>  
40 - <rollingPolicy  
41 - class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">  
42 - <fileNamePattern>/var/log/tb-mqtt-transport/${TB_SERVICE_ID}/tb-mqtt-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern>  
43 - <maxFileSize>100MB</maxFileSize>  
44 - <maxHistory>30</maxHistory>  
45 - <totalSizeCap>3GB</totalSizeCap>  
46 - </rollingPolicy>  
47 - <encoder>  
48 - <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>  
49 - </encoder>  
50 - </appender>  
51 -  
52 - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
53 - <encoder>  
54 - <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>  
55 - </encoder>  
56 - </appender>  
57 -  
58 - <logger name="org.thingsboard.server" level="INFO" />  
59 -  
60 - <root level="INFO">  
61 - <appender-ref ref="fileLogAppender"/>  
62 - <appender-ref ref="STDOUT"/>  
63 - </root>  
64 -  
65 - </configuration>  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: Namespace  
19 -metadata:  
20 - name: thingsboard  
21 - labels:  
22 - name: thingsboard  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: ConfigMap  
19 -metadata:  
20 - name: tb-node-config  
21 - namespace: thingsboard  
22 - labels:  
23 - name: tb-node-config  
24 -data:  
25 - conf: |  
26 - export JAVA_OPTS="$JAVA_OPTS -Dplatform=deb -Dinstall.data_dir=/usr/share/thingsboard/data"  
27 - export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=/var/log/thingsboard/${TB_SERVICE_ID}-gc.log:time,uptime,level,tags:filecount=10,filesize=10M"  
28 - export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/thingsboard/${TB_SERVICE_ID}-heapdump.bin"  
29 - export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"  
30 - export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10"  
31 - export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError"  
32 - export LOG_FILENAME=thingsboard.out  
33 - export LOADER_PATH=/usr/share/thingsboard/conf,/usr/share/thingsboard/extensions  
34 - logback: |  
35 - <!DOCTYPE configuration>  
36 - <configuration scan="true" scanPeriod="10 seconds">  
37 -  
38 - <appender name="fileLogAppender"  
39 - class="ch.qos.logback.core.rolling.RollingFileAppender">  
40 - <file>/var/log/thingsboard/${TB_SERVICE_ID}/thingsboard.log</file>  
41 - <rollingPolicy  
42 - class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">  
43 - <fileNamePattern>/var/log/thingsboard/${TB_SERVICE_ID}/thingsboard.%d{yyyy-MM-dd}.%i.log</fileNamePattern>  
44 - <maxFileSize>100MB</maxFileSize>  
45 - <maxHistory>30</maxHistory>  
46 - <totalSizeCap>3GB</totalSizeCap>  
47 - </rollingPolicy>  
48 - <encoder>  
49 - <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>  
50 - </encoder>  
51 - </appender>  
52 -  
53 - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
54 - <encoder>  
55 - <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>  
56 - </encoder>  
57 - </appender>  
58 -  
59 - <logger name="org.thingsboard.server" level="INFO" />  
60 - <logger name="com.google.common.util.concurrent.AggregateFuture" level="OFF" />  
61 -  
62 - <root level="INFO">  
63 - <appender-ref ref="fileLogAppender"/>  
64 - <appender-ref ref="STDOUT"/>  
65 - </root>  
66 -  
67 - </configuration>  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: ConfigMap  
19 -metadata:  
20 - name: tb-node-db-config  
21 - namespace: thingsboard  
22 - labels:  
23 - name: tb-node-db-config  
24 -data:  
25 - SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect  
26 - SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver  
27 - SPRING_DATASOURCE_URL: jdbc:postgresql://tb-database:5432/thingsboard  
28 - SPRING_DATASOURCE_USERNAME: postgres  
29 - SPRING_DATASOURCE_PASSWORD: postgres  
30 - DATABASE_TS_TYPE: cassandra  
31 - CASSANDRA_URL: cassandra:9042  
32 - CASSANDRA_SOCKET_READ_TIMEOUT: "60000"  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: ConfigMap  
19 -metadata:  
20 - name: tb-node-db-config  
21 - namespace: thingsboard  
22 - labels:  
23 - name: tb-node-db-config  
24 -data:  
25 - DATABASE_TS_TYPE: sql  
26 - SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect  
27 - SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver  
28 - SPRING_DATASOURCE_URL: jdbc:postgresql://tb-database:5432/thingsboard  
29 - SPRING_DATASOURCE_USERNAME: postgres  
30 - SPRING_DATASOURCE_PASSWORD: postgres  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: apps/v1  
18 -kind: Deployment  
19 -metadata:  
20 - name: tb-node  
21 - namespace: thingsboard  
22 -spec:  
23 - replicas: 2  
24 - selector:  
25 - matchLabels:  
26 - app: tb-node  
27 - template:  
28 - metadata:  
29 - labels:  
30 - app: tb-node  
31 - spec:  
32 - volumes:  
33 - - name: tb-node-config  
34 - configMap:  
35 - name: tb-node-config  
36 - items:  
37 - - key: conf  
38 - path: thingsboard.conf  
39 - - key: logback  
40 - path: logback.xml  
41 - containers:  
42 - - name: server  
43 - imagePullPolicy: Always  
44 - image: thingsboard/tb-node:latest  
45 - ports:  
46 - - containerPort: 8080  
47 - name: http  
48 - - containerPort: 9001  
49 - name: rpc  
50 - env:  
51 - - name: TB_SERVICE_ID  
52 - valueFrom:  
53 - fieldRef:  
54 - fieldPath: metadata.name  
55 - - name: TB_SERVICE_TYPE  
56 - value: "monolith"  
57 - - name: TB_QUEUE_TYPE  
58 - value: "kafka"  
59 - - name: ZOOKEEPER_ENABLED  
60 - value: "true"  
61 - - name: ZOOKEEPER_URL  
62 - value: "zookeeper:2181"  
63 - - name: TB_KAFKA_SERVERS  
64 - value: "tb-kafka:9092"  
65 - - name: JS_EVALUATOR  
66 - value: "remote"  
67 - - name: TRANSPORT_TYPE  
68 - value: "remote"  
69 - - name: HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE  
70 - value: "false"  
71 - envFrom:  
72 - - configMapRef:  
73 - name: tb-node-db-config  
74 - - configMapRef:  
75 - name: tb-node-cache-config  
76 - volumeMounts:  
77 - - mountPath: /config  
78 - name: tb-node-config  
79 - livenessProbe:  
80 - httpGet:  
81 - path: /login  
82 - port: http  
83 - initialDelaySeconds: 300  
84 - timeoutSeconds: 10  
85 - restartPolicy: Always  
86 ----  
87 -apiVersion: v1  
88 -kind: Service  
89 -metadata:  
90 - name: tb-node  
91 - namespace: thingsboard  
92 -spec:  
93 - type: ClusterIP  
94 - selector:  
95 - app: tb-node  
96 - ports:  
97 - - port: 8080  
98 - name: http  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: apps/v1  
18 -kind: Deployment  
19 -metadata:  
20 - name: tb-js-executor  
21 - namespace: thingsboard  
22 -spec:  
23 - replicas: 20  
24 - selector:  
25 - matchLabels:  
26 - app: tb-js-executor  
27 - template:  
28 - metadata:  
29 - labels:  
30 - app: tb-js-executor  
31 - spec:  
32 - containers:  
33 - - name: server  
34 - imagePullPolicy: Always  
35 - image: thingsboard/tb-js-executor:latest  
36 - env:  
37 - - name: REMOTE_JS_EVAL_REQUEST_TOPIC  
38 - value: "js_eval.requests"  
39 - - name: TB_KAFKA_SERVERS  
40 - value: "tb-kafka:9092"  
41 - - name: LOGGER_LEVEL  
42 - value: "info"  
43 - - name: LOG_FOLDER  
44 - value: "logs"  
45 - - name: LOGGER_FILENAME  
46 - value: "tb-js-executor-%DATE%.log"  
47 - - name: DOCKER_MODE  
48 - value: "true"  
49 - - name: SCRIPT_BODY_TRACE_FREQUENCY  
50 - value: "1000"  
51 - restartPolicy: Always  
52 ----  
53 -apiVersion: apps/v1  
54 -kind: Deployment  
55 -metadata:  
56 - name: tb-mqtt-transport  
57 - namespace: thingsboard  
58 -spec:  
59 - replicas: 2  
60 - selector:  
61 - matchLabels:  
62 - app: tb-mqtt-transport  
63 - template:  
64 - metadata:  
65 - labels:  
66 - app: tb-mqtt-transport  
67 - spec:  
68 - volumes:  
69 - - name: tb-mqtt-transport-config  
70 - configMap:  
71 - name: tb-mqtt-transport-config  
72 - items:  
73 - - key: conf  
74 - path: tb-mqtt-transport.conf  
75 - - key: logback  
76 - path: logback.xml  
77 - containers:  
78 - - name: server  
79 - imagePullPolicy: Always  
80 - image: thingsboard/tb-mqtt-transport:latest  
81 - ports:  
82 - - containerPort: 1883  
83 - name: mqtt  
84 - env:  
85 - - name: TB_SERVICE_ID  
86 - valueFrom:  
87 - fieldRef:  
88 - fieldPath: metadata.name  
89 - - name: TB_QUEUE_TYPE  
90 - value: "kafka"  
91 - - name: MQTT_BIND_ADDRESS  
92 - value: "0.0.0.0"  
93 - - name: MQTT_BIND_PORT  
94 - value: "1883"  
95 - - name: MQTT_TIMEOUT  
96 - value: "10000"  
97 - - name: TB_KAFKA_SERVERS  
98 - value: "tb-kafka:9092"  
99 - volumeMounts:  
100 - - mountPath: /config  
101 - name: tb-mqtt-transport-config  
102 - readinessProbe:  
103 - periodSeconds: 20  
104 - tcpSocket:  
105 - port: 1883  
106 - livenessProbe:  
107 - initialDelaySeconds: 120  
108 - periodSeconds: 20  
109 - tcpSocket:  
110 - port: 1883  
111 - restartPolicy: Always  
112 ----  
113 -apiVersion: v1  
114 -kind: Service  
115 -metadata:  
116 - name: tb-mqtt-transport  
117 - namespace: thingsboard  
118 -spec:  
119 - type: LoadBalancer  
120 - selector:  
121 - app: tb-mqtt-transport  
122 - ports:  
123 - - port: 1883  
124 - targetPort: 1883  
125 - name: mqtt  
126 ----  
127 -apiVersion: apps/v1  
128 -kind: Deployment  
129 -metadata:  
130 - name: tb-http-transport  
131 - namespace: thingsboard  
132 -spec:  
133 - replicas: 2  
134 - selector:  
135 - matchLabels:  
136 - app: tb-http-transport  
137 - template:  
138 - metadata:  
139 - labels:  
140 - app: tb-http-transport  
141 - spec:  
142 - volumes:  
143 - - name: tb-http-transport-config  
144 - configMap:  
145 - name: tb-http-transport-config  
146 - items:  
147 - - key: conf  
148 - path: tb-http-transport.conf  
149 - - key: logback  
150 - path: logback.xml  
151 - containers:  
152 - - name: server  
153 - imagePullPolicy: Always  
154 - image: thingsboard/tb-http-transport:latest  
155 - ports:  
156 - - containerPort: 8080  
157 - name: http  
158 - env:  
159 - - name: TB_SERVICE_ID  
160 - valueFrom:  
161 - fieldRef:  
162 - fieldPath: metadata.name  
163 - - name: TB_QUEUE_TYPE  
164 - value: "kafka"  
165 - - name: HTTP_BIND_ADDRESS  
166 - value: "0.0.0.0"  
167 - - name: HTTP_BIND_PORT  
168 - value: "8080"  
169 - - name: HTTP_REQUEST_TIMEOUT  
170 - value: "60000"  
171 - - name: TB_KAFKA_SERVERS  
172 - value: "tb-kafka:9092"  
173 - volumeMounts:  
174 - - mountPath: /config  
175 - name: tb-http-transport-config  
176 - readinessProbe:  
177 - periodSeconds: 20  
178 - tcpSocket:  
179 - port: 8080  
180 - livenessProbe:  
181 - initialDelaySeconds: 120  
182 - periodSeconds: 20  
183 - tcpSocket:  
184 - port: 8080  
185 - restartPolicy: Always  
186 ----  
187 -apiVersion: v1  
188 -kind: Service  
189 -metadata:  
190 - name: tb-http-transport  
191 - namespace: thingsboard  
192 -spec:  
193 - type: ClusterIP  
194 - selector:  
195 - app: tb-http-transport  
196 - ports:  
197 - - port: 8080  
198 - name: http  
199 ----  
200 -apiVersion: apps/v1  
201 -kind: Deployment  
202 -metadata:  
203 - name: tb-coap-transport  
204 - namespace: thingsboard  
205 -spec:  
206 - replicas: 2  
207 - selector:  
208 - matchLabels:  
209 - app: tb-coap-transport  
210 - template:  
211 - metadata:  
212 - labels:  
213 - app: tb-coap-transport  
214 - spec:  
215 - volumes:  
216 - - name: tb-coap-transport-config  
217 - configMap:  
218 - name: tb-coap-transport-config  
219 - items:  
220 - - key: conf  
221 - path: tb-coap-transport.conf  
222 - - key: logback  
223 - path: logback.xml  
224 - containers:  
225 - - name: server  
226 - imagePullPolicy: Always  
227 - image: thingsboard/tb-coap-transport:latest  
228 - ports:  
229 - - containerPort: 5683  
230 - name: coap  
231 - protocol: UDP  
232 - env:  
233 - - name: TB_SERVICE_ID  
234 - valueFrom:  
235 - fieldRef:  
236 - fieldPath: metadata.name  
237 - - name: TB_QUEUE_TYPE  
238 - value: "kafka"  
239 - - name: COAP_BIND_ADDRESS  
240 - value: "0.0.0.0"  
241 - - name: COAP_BIND_PORT  
242 - value: "5683"  
243 - - name: COAP_TIMEOUT  
244 - value: "10000"  
245 - - name: TB_KAFKA_SERVERS  
246 - value: "tb-kafka:9092"  
247 - volumeMounts:  
248 - - mountPath: /config  
249 - name: tb-coap-transport-config  
250 - restartPolicy: Always  
251 ----  
252 -apiVersion: v1  
253 -kind: Service  
254 -metadata:  
255 - name: tb-coap-transport  
256 - namespace: thingsboard  
257 -spec:  
258 - type: LoadBalancer  
259 - selector:  
260 - app: tb-coap-transport  
261 - ports:  
262 - - port: 5683  
263 - name: coap  
264 - protocol: UDP  
265 ----  
266 -apiVersion: apps/v1  
267 -kind: Deployment  
268 -metadata:  
269 - name: tb-lwm2m-transport  
270 - namespace: thingsboard  
271 -spec:  
272 - replicas: 2  
273 - selector:  
274 - matchLabels:  
275 - app: tb-lwm2m-transport  
276 - template:  
277 - metadata:  
278 - labels:  
279 - app: tb-lwm2m-transport  
280 - spec:  
281 - volumes:  
282 - - name: tb-lwm2m-transport-config  
283 - configMap:  
284 - name: tb-lwm2m-transport-config  
285 - items:  
286 - - key: conf  
287 - path: tb-lwm2m-transport.conf  
288 - - key: logback  
289 - path: logback.xml  
290 - containers:  
291 - - name: server  
292 - imagePullPolicy: Always  
293 - image: thingsboard/tb-lwm2m-transport:latest  
294 - ports:  
295 - - containerPort: 5685  
296 - name: lwm2m  
297 - protocol: UDP  
298 - env:  
299 - - name: TB_SERVICE_ID  
300 - valueFrom:  
301 - fieldRef:  
302 - fieldPath: metadata.name  
303 - - name: TB_QUEUE_TYPE  
304 - value: "kafka"  
305 - - name: LWM2M_BIND_ADDRESS  
306 - value: "0.0.0.0"  
307 - - name: LWM2M_BIND_PORT  
308 - value: "5685"  
309 - - name: LWM2M_TIMEOUT  
310 - value: "10000"  
311 - - name: TB_KAFKA_SERVERS  
312 - value: "tb-kafka:9092"  
313 - volumeMounts:  
314 - - mountPath: /config  
315 - name: tb-lwm2m-transport-config  
316 - restartPolicy: Always  
317 ----  
318 -apiVersion: v1  
319 -kind: Service  
320 -metadata:  
321 - name: tb-lwm2m-transport  
322 - namespace: thingsboard  
323 -spec:  
324 - type: LoadBalancer  
325 - selector:  
326 - app: tb-lwm2m-transport  
327 - ports:  
328 - - port: 5685  
329 - name: lwm2m  
330 - protocol: UDP  
331 ----  
332 -apiVersion: apps/v1  
333 -kind: Deployment  
334 -metadata:  
335 - name: tb-web-ui  
336 - namespace: thingsboard  
337 -spec:  
338 - replicas: 2  
339 - selector:  
340 - matchLabels:  
341 - app: tb-web-ui  
342 - template:  
343 - metadata:  
344 - labels:  
345 - app: tb-web-ui  
346 - spec:  
347 - containers:  
348 - - name: server  
349 - imagePullPolicy: Always  
350 - image: thingsboard/tb-web-ui:latest  
351 - ports:  
352 - - containerPort: 8080  
353 - name: http  
354 - env:  
355 - - name: HTTP_BIND_ADDRESS  
356 - value: "0.0.0.0"  
357 - - name: HTTP_BIND_PORT  
358 - value: "8080"  
359 - - name: TB_ENABLE_PROXY  
360 - value: "false"  
361 - - name: LOGGER_LEVEL  
362 - value: "info"  
363 - - name: LOG_FOLDER  
364 - value: "logs"  
365 - - name: LOGGER_FILENAME  
366 - value: "tb-web-ui-%DATE%.log"  
367 - - name: DOCKER_MODE  
368 - value: "true"  
369 - livenessProbe:  
370 - httpGet:  
371 - path: /index.html  
372 - port: http  
373 - initialDelaySeconds: 120  
374 - timeoutSeconds: 10  
375 - restartPolicy: Always  
376 ----  
377 -apiVersion: v1  
378 -kind: Service  
379 -metadata:  
380 - name: tb-web-ui  
381 - namespace: thingsboard  
382 -spec:  
383 - type: ClusterIP  
384 - selector:  
385 - app: tb-web-ui  
386 - ports:  
387 - - port: 8080  
388 - name: http  
389 ----  
390 -apiVersion: networking.k8s.io/v1beta1  
391 -kind: Ingress  
392 -metadata:  
393 - name: tb-ingress  
394 - namespace: thingsboard  
395 - annotations:  
396 - nginx.ingress.kubernetes.io/use-regex: "true"  
397 - nginx.ingress.kubernetes.io/ssl-redirect: "false"  
398 - nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"  
399 -spec:  
400 - rules:  
401 - - http:  
402 - paths:  
403 - - path: /api/v1/.*  
404 - backend:  
405 - serviceName: tb-http-transport  
406 - servicePort: 8080  
407 - - path: /api/.*  
408 - backend:  
409 - serviceName: tb-node  
410 - servicePort: 8080  
411 - - path: /swagger.*  
412 - backend:  
413 - serviceName: tb-node  
414 - servicePort: 8080  
415 - - path: /webjars.*  
416 - backend:  
417 - serviceName: tb-node  
418 - servicePort: 8080  
419 - - path: /v2/.*  
420 - backend:  
421 - serviceName: tb-node  
422 - servicePort: 8080  
423 - - path: /v3/.*  
424 - backend:  
425 - serviceName: tb-node  
426 - servicePort: 8080  
427 - - path: /static/rulenode/.*  
428 - backend:  
429 - serviceName: tb-node  
430 - servicePort: 8080  
431 - - path: /assets/help/.*/rulenode/.*  
432 - backend:  
433 - serviceName: tb-node  
434 - servicePort: 8080  
435 - - path: /oauth2/.*  
436 - backend:  
437 - serviceName: tb-node  
438 - servicePort: 8080  
439 - - path: /login/oauth2/.*  
440 - backend:  
441 - serviceName: tb-node  
442 - servicePort: 8080  
443 - - path: /  
444 - backend:  
445 - serviceName: tb-web-ui  
446 - servicePort: 8080  
447 - - path: /.*  
448 - backend:  
449 - serviceName: tb-web-ui  
450 - servicePort: 8080  
451 ----  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: v1  
18 -kind: ConfigMap  
19 -metadata:  
20 - name: tb-node-cache-config  
21 - namespace: thingsboard  
22 - labels:  
23 - name: tb-node-cache-config  
24 -data:  
25 - CACHE_TYPE: redis  
26 - REDIS_CONNECTION_TYPE: cluster  
27 - REDIS_NODES: tb-redis:6379  
1 -#  
2 -# Copyright © 2016-2021 The Thingsboard Authors  
3 -#  
4 -# Licensed under the Apache License, Version 2.0 (the "License");  
5 -# you may not use this file except in compliance with the License.  
6 -# You may obtain a copy of the License at  
7 -#  
8 -# http://www.apache.org/licenses/LICENSE-2.0  
9 -#  
10 -# Unless required by applicable law or agreed to in writing, software  
11 -# distributed under the License is distributed on an "AS IS" BASIS,  
12 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
13 -# See the License for the specific language governing permissions and  
14 -# limitations under the License.  
15 -#  
16 -  
17 -apiVersion: apps/v1  
18 -kind: StatefulSet  
19 -metadata:  
20 - name: zookeeper  
21 - namespace: thingsboard  
22 -spec:  
23 - serviceName: "zookeeper"  
24 - replicas: 3  
25 - podManagementPolicy: Parallel  
26 - selector:  
27 - matchLabels:  
28 - app: zookeeper  
29 - template:  
30 - metadata:  
31 - labels:  
32 - app: zookeeper  
33 - spec:  
34 - containers:  
35 - - name: zookeeper  
36 - imagePullPolicy: Always  
37 - image: zookeeper:3.5  
38 - ports:  
39 - - containerPort: 2181  
40 - name: client  
41 - - containerPort: 2888  
42 - name: server  
43 - - containerPort: 3888  
44 - name: election  
45 - readinessProbe:  
46 - periodSeconds: 60  
47 - tcpSocket:  
48 - port: 2181  
49 - livenessProbe:  
50 - periodSeconds: 60  
51 - tcpSocket:  
52 - port: 2181  
53 - env:  
54 - - name: ZOO_SERVERS  
55 - value: "server.0=zookeeper-0.zookeeper:2888:3888;2181 server.1=zookeeper-1.zookeeper:2888:3888;2181 server.2=zookeeper-2.zookeeper:2888:3888;2181"  
56 - - name: JVMFLAGS  
57 - value: "-Dzookeeper.electionPortBindRetry=0"  
58 - volumeMounts:  
59 - - name: data  
60 - mountPath: /data  
61 - readOnly: false  
62 - initContainers:  
63 - - command:  
64 - - /bin/bash  
65 - - -c  
66 - - |-  
67 - set -ex;  
68 - mkdir -p "$ZOO_DATA_LOG_DIR" "$ZOO_DATA_DIR" "$ZOO_CONF_DIR";  
69 - chown "$ZOO_USER:$ZOO_USER" "$ZOO_DATA_LOG_DIR" "$ZOO_DATA_DIR" "$ZOO_CONF_DIR"  
70 - if [[ ! -f "$ZOO_DATA_DIR/myid" ]]; then  
71 - echo $HOSTNAME| rev | cut -d "-" -f1 | rev > "$ZOO_DATA_DIR/myid"  
72 - fi  
73 - env:  
74 - - name: HOSTNAME  
75 - valueFrom:  
76 - fieldRef:  
77 - fieldPath: metadata.name  
78 - image: zookeeper:3.5  
79 - imagePullPolicy: IfNotPresent  
80 - name: zookeeper-init  
81 - securityContext:  
82 - runAsUser: 0  
83 - volumeMounts:  
84 - - name: data  
85 - mountPath: /data  
86 - readOnly: false  
87 - volumeClaimTemplates:  
88 - - metadata:  
89 - name: data  
90 - spec:  
91 - accessModes: [ "ReadWriteOnce" ]  
92 - resources:  
93 - requests:  
94 - storage: 100Mi  
95 ----  
96 -apiVersion: v1  
97 -kind: Service  
98 -metadata:  
99 - name: zookeeper  
100 - namespace: thingsboard  
101 -spec:  
102 - type: ClusterIP  
103 - ports:  
104 - - port: 2181  
105 - targetPort: 2181  
106 - name: client  
107 - - port: 2888  
108 - targetPort: 2888  
109 - name: server  
110 - - port: 3888  
111 - targetPort: 3888  
112 - name: election  
113 - selector:  
114 - app: zookeeper  
115 ----  
116 -apiVersion: apps/v1  
117 -kind: StatefulSet  
118 -metadata:  
119 - name: tb-kafka  
120 - namespace: thingsboard  
121 -spec:  
122 - serviceName: "tb-kafka"  
123 - replicas: 3  
124 - podManagementPolicy: Parallel  
125 - selector:  
126 - matchLabels:  
127 - app: tb-kafka  
128 - template:  
129 - metadata:  
130 - labels:  
131 - app: tb-kafka  
132 - spec:  
133 - containers:  
134 - - name: tb-kafka  
135 - imagePullPolicy: Always  
136 - image: wurstmeister/kafka:2.12-2.2.1  
137 - ports:  
138 - - containerPort: 9092  
139 - name: kafka-int  
140 - readinessProbe:  
141 - periodSeconds: 5  
142 - timeoutSeconds: 5  
143 - tcpSocket:  
144 - port: 9092  
145 - initialDelaySeconds: 60  
146 - livenessProbe:  
147 - timeoutSeconds: 5  
148 - periodSeconds: 5  
149 - tcpSocket:  
150 - port: 9092  
151 - initialDelaySeconds: 80  
152 - env:  
153 - - name: BROKER_ID_COMMAND  
154 - value: "hostname | cut -d'-' -f3"  
155 - - name: KAFKA_ZOOKEEPER_CONNECT  
156 - value: "zookeeper:2181"  
157 - - name: KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS  
158 - value: "60000"  
159 - - name: KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE  
160 - value: "true"  
161 - - name: KAFKA_LISTENERS  
162 - value: "INSIDE://:9092"  
163 - - name: KAFKA_ADVERTISED_LISTENERS  
164 - value: "INSIDE://:9092"  
165 - - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP  
166 - value: "INSIDE:PLAINTEXT"  
167 - - name: KAFKA_INTER_BROKER_LISTENER_NAME  
168 - value: "INSIDE"  
169 - - name: KAFKA_CONTROLLER_SHUTDOWN_ENABLE  
170 - value: "true"  
171 - - name: KAFKA_CREATE_TOPICS  
172 - value: "js_eval.requests:100:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb_transport.api.requests:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb_rule_engine:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600"  
173 - - name: KAFKA_AUTO_CREATE_TOPICS_ENABLE  
174 - value: "false"  
175 - - name: KAFKA_LOG_RETENTION_BYTES  
176 - value: "1073741824"  
177 - - name: KAFKA_LOG_SEGMENT_BYTES  
178 - value: "268435456"  
179 - - name: KAFKA_LOG_RETENTION_MS  
180 - value: "300000"  
181 - - name: KAFKA_LOG_CLEANUP_POLICY  
182 - value: "delete"  
183 - - name: KAFKA_PORT  
184 - value: "9092"  
185 - - name: KAFKA_LOG_DIRS  
186 - value: "/kafka-logs"  
187 - volumeMounts:  
188 - - name: logs  
189 - mountPath: /kafka-logs  
190 - subPath: logs  
191 - volumeClaimTemplates:  
192 - - metadata:  
193 - name: logs  
194 - spec:  
195 - accessModes:  
196 - - ReadWriteOnce  
197 - resources:  
198 - requests:  
199 - storage: 1Gi  
200 ----  
201 -apiVersion: v1  
202 -kind: Service  
203 -metadata:  
204 - name: tb-kafka  
205 - namespace: thingsboard  
206 -spec:  
207 - type: ClusterIP  
208 - ports:  
209 - - port: 9092  
210 - targetPort: 9092  
211 - name: kafka-int  
212 - selector:  
213 - app: tb-kafka  
214 ----  
215 -apiVersion: v1  
216 -kind: ConfigMap  
217 -metadata:  
218 - name: tb-redis  
219 - namespace: thingsboard  
220 -data:  
221 - update-node.sh: |  
222 - #!/bin/sh  
223 - REDIS_NODES="/data/nodes.conf"  
224 - sed -i -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES}  
225 - exec "$@"  
226 - redis.conf: |+  
227 - cluster-enabled yes  
228 - cluster-require-full-coverage no  
229 - cluster-node-timeout 15000  
230 - cluster-config-file /data/nodes.conf  
231 - cluster-migration-barrier 1  
232 - appendonly yes  
233 - protected-mode no  
234 ----  
235 -apiVersion: apps/v1  
236 -kind: StatefulSet  
237 -metadata:  
238 - name: tb-redis  
239 - namespace: thingsboard  
240 -spec:  
241 - serviceName: server  
242 - replicas: 6  
243 - selector:  
244 - matchLabels:  
245 - app: tb-redis  
246 - template:  
247 - metadata:  
248 - labels:  
249 - app: tb-redis  
250 - spec:  
251 - containers:  
252 - - name: redis  
253 - image: redis:5.0.1-alpine  
254 - ports:  
255 - - containerPort: 6379  
256 - name: client  
257 - - containerPort: 16379  
258 - name: gossip  
259 - command: ["/conf/update-node.sh", "redis-server", "/conf/redis.conf"]  
260 - env:  
261 - - name: POD_IP  
262 - valueFrom:  
263 - fieldRef:  
264 - fieldPath: status.podIP  
265 - volumeMounts:  
266 - - name: conf  
267 - mountPath: /conf  
268 - readOnly: false  
269 - - name: data  
270 - mountPath: /data  
271 - readOnly: false  
272 - volumes:  
273 - - name: conf  
274 - configMap:  
275 - name: tb-redis  
276 - defaultMode: 0755  
277 - volumeClaimTemplates:  
278 - - metadata:  
279 - name: data  
280 - spec:  
281 - accessModes: [ "ReadWriteOnce" ]  
282 - resources:  
283 - requests:  
284 - storage: 100Mi  
285 ----  
286 -apiVersion: v1  
287 -kind: Service  
288 -metadata:  
289 - name: tb-redis  
290 - namespace: thingsboard  
291 -spec:  
292 - type: ClusterIP  
293 - ports:  
294 - - port: 6379  
295 - targetPort: 6379  
296 - name: client  
297 - - port: 16379  
298 - targetPort: 16379  
299 - name: gossip  
300 - selector:  
301 - app: tb-redis  
1 -#!/bin/bash  
2 -#  
3 -# Copyright © 2016-2021 The Thingsboard Authors  
4 -#  
5 -# Licensed under the Apache License, Version 2.0 (the "License");  
6 -# you may not use this file except in compliance with the License.  
7 -# You may obtain a copy of the License at  
8 -#  
9 -# http://www.apache.org/licenses/LICENSE-2.0  
10 -#  
11 -# Unless required by applicable law or agreed to in writing, software  
12 -# distributed under the License is distributed on an "AS IS" BASIS,  
13 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
14 -# See the License for the specific language governing permissions and  
15 -# limitations under the License.  
16 -#  
17 -  
18 -kubectl -n thingsboard delete svc,sts,deploy,cm,po,ing --all  
19 -  
20 -kubectl -n thingsboard get pvc --no-headers=true | awk '//{print $1}' | xargs kubectl -n thingsboard delete --ignore-not-found=true pvc  
1 -#!/bin/bash  
2 -#  
3 -# Copyright © 2016-2021 The Thingsboard Authors  
4 -#  
5 -# Licensed under the Apache License, Version 2.0 (the "License");  
6 -# you may not use this file except in compliance with the License.  
7 -# You may obtain a copy of the License at  
8 -#  
9 -# http://www.apache.org/licenses/LICENSE-2.0  
10 -#  
11 -# Unless required by applicable law or agreed to in writing, software  
12 -# distributed under the License is distributed on an "AS IS" BASIS,  
13 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
14 -# See the License for the specific language governing permissions and  
15 -# limitations under the License.  
16 -#  
17 -  
18 -set -e  
19 -  
20 -source .env  
21 -  
22 -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard  
23 -  
24 -kubectl delete -f common/thingsboard.yml  
25 -kubectl delete -f common/tb-node.yml  
1 -#!/bin/bash  
2 -#  
3 -# Copyright © 2016-2021 The Thingsboard Authors  
4 -#  
5 -# Licensed under the Apache License, Version 2.0 (the "License");  
6 -# you may not use this file except in compliance with the License.  
7 -# You may obtain a copy of the License at  
8 -#  
9 -# http://www.apache.org/licenses/LICENSE-2.0  
10 -#  
11 -# Unless required by applicable law or agreed to in writing, software  
12 -# distributed under the License is distributed on an "AS IS" BASIS,  
13 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
14 -# See the License for the specific language governing permissions and  
15 -# limitations under the License.  
16 -#  
17 -  
18 -set -e  
19 -  
20 -source .env  
21 -  
22 -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard  
23 -kubectl delete -f $DEPLOYMENT_TYPE/thirdparty.yml  
1 -#!/bin/bash  
2 -#  
3 -# Copyright © 2016-2021 The Thingsboard Authors  
4 -#  
5 -# Licensed under the Apache License, Version 2.0 (the "License");  
6 -# you may not use this file except in compliance with the License.  
7 -# You may obtain a copy of the License at  
8 -#  
9 -# http://www.apache.org/licenses/LICENSE-2.0  
10 -#  
11 -# Unless required by applicable law or agreed to in writing, software  
12 -# distributed under the License is distributed on an "AS IS" BASIS,  
13 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
14 -# See the License for the specific language governing permissions and  
15 -# limitations under the License.  
16 -#  
17 -  
18 -set -e  
19 -  
20 -source .env  
21 -  
22 -kubectl apply -f common/tb-namespace.yml  
23 -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard  
24 -kubectl apply -f common/tb-node-configmap.yml  
25 -kubectl apply -f common/tb-mqtt-transport-configmap.yml  
26 -kubectl apply -f common/tb-http-transport-configmap.yml  
27 -kubectl apply -f common/tb-coap-transport-configmap.yml  
28 -kubectl apply -f common/thingsboard.yml  
29 -kubectl apply -f $DEPLOYMENT_TYPE/tb-node-cache-configmap.yml  
30 -kubectl apply -f common/tb-node.yml  
1 -#!/bin/bash  
2 -#  
3 -# Copyright © 2016-2021 The Thingsboard Authors  
4 -#  
5 -# Licensed under the Apache License, Version 2.0 (the "License");  
6 -# you may not use this file except in compliance with the License.  
7 -# You may obtain a copy of the License at  
8 -#  
9 -# http://www.apache.org/licenses/LICENSE-2.0  
10 -#  
11 -# Unless required by applicable law or agreed to in writing, software  
12 -# distributed under the License is distributed on an "AS IS" BASIS,  
13 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
14 -# See the License for the specific language governing permissions and  
15 -# limitations under the License.  
16 -#  
17 -  
18 -set -e  
19 -  
20 -source .env  
21 -  
22 -kubectl apply -f common/tb-namespace.yml  
23 -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard  
24 -  
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 -  
1 -#!/bin/bash  
2 -#  
3 -# Copyright © 2016-2021 The Thingsboard Authors  
4 -#  
5 -# Licensed under the Apache License, Version 2.0 (the "License");  
6 -# you may not use this file except in compliance with the License.  
7 -# You may obtain a copy of the License at  
8 -#  
9 -# http://www.apache.org/licenses/LICENSE-2.0  
10 -#  
11 -# Unless required by applicable law or agreed to in writing, software  
12 -# distributed under the License is distributed on an "AS IS" BASIS,  
13 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
14 -# See the License for the specific language governing permissions and  
15 -# limitations under the License.  
16 -#  
17 -  
18 -function installTb() {  
19 -  
20 - loadDemo=$1  
21 -  
22 - kubectl apply -f common/tb-node-configmap.yml  
23 - kubectl apply -f common/database-setup.yml &&  
24 - kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s &&  
25 - kubectl exec tb-db-setup -- sh -c 'export INSTALL_TB=true; export LOAD_DEMO='"$loadDemo"'; start-tb-node.sh; touch /tmp/install-finished;'  
26 -  
27 - kubectl delete pod tb-db-setup  
28 -  
29 -}  
30 -  
31 -function installPostgres() {  
32 -  
33 - kubectl apply -f common/postgres.yml  
34 - kubectl apply -f common/tb-node-postgres-configmap.yml  
35 -  
36 - kubectl rollout status deployment/postgres  
37 -}  
38 -  
39 -function installHybrid() {  
40 -  
41 - kubectl apply -f common/postgres.yml  
42 - kubectl apply -f common/cassandra.yml  
43 - kubectl apply -f common/tb-node-hybrid-configmap.yml  
44 -  
45 - kubectl rollout status deployment/postgres  
46 - kubectl rollout status statefulset/cassandra  
47 -  
48 - kubectl exec -it cassandra-0 -- bash -c "cqlsh -e \  
49 - \"CREATE KEYSPACE IF NOT EXISTS thingsboard \  
50 - WITH replication = { \  
51 - 'class' : 'SimpleStrategy', \  
52 - 'replication_factor' : 1 \  
53 - };\""  
54 -}  
55 -  
56 -while [[ $# -gt 0 ]]  
57 -do  
58 -key="$1"  
59 -  
60 -case $key in  
61 - --loadDemo)  
62 - LOAD_DEMO=true  
63 - shift # past argument  
64 - ;;  
65 - *)  
66 - # unknown option  
67 - ;;  
68 -esac  
69 -shift # past argument or value  
70 -done  
71 -  
72 -if [ "$LOAD_DEMO" == "true" ]; then  
73 - loadDemo=true  
74 -else  
75 - loadDemo=false  
76 -fi  
77 -  
78 -source .env  
79 -  
80 -kubectl apply -f common/tb-namespace.yml  
81 -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard  
82 -  
83 -case $DEPLOYMENT_TYPE in  
84 - basic)  
85 - ;;  
86 - high-availability)  
87 - ;;  
88 - *)  
89 - echo "Unknown DEPLOYMENT_TYPE value specified: '${DEPLOYMENT_TYPE}'. Should be either basic or high-availability." >&2  
90 - exit 1  
91 -esac  
92 -  
93 -case $DATABASE in  
94 - postgres)  
95 - installPostgres  
96 - installTb ${loadDemo}  
97 - ;;  
98 - hybrid)  
99 - installHybrid  
100 - installTb ${loadDemo}  
101 - ;;  
102 - *)  
103 - echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or hybrid." >&2  
104 - exit 1  
105 -esac  
106 -  
1 -#!/bin/bash  
2 -#  
3 -# Copyright © 2016-2021 The Thingsboard Authors  
4 -#  
5 -# Licensed under the Apache License, Version 2.0 (the "License");  
6 -# you may not use this file except in compliance with the License.  
7 -# You may obtain a copy of the License at  
8 -#  
9 -# http://www.apache.org/licenses/LICENSE-2.0  
10 -#  
11 -# Unless required by applicable law or agreed to in writing, software  
12 -# distributed under the License is distributed on an "AS IS" BASIS,  
13 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
14 -# See the License for the specific language governing permissions and  
15 -# limitations under the License.  
16 -#  
17 -  
18 -for i in "$@"  
19 -do  
20 -case $i in  
21 - --fromVersion=*)  
22 - FROM_VERSION="${i#*=}"  
23 - shift  
24 - ;;  
25 - *)  
26 - # unknown option  
27 - ;;  
28 -esac  
29 -done  
30 -  
31 -if [[ -z "${FROM_VERSION// }" ]]; then  
32 - echo "--fromVersion parameter is invalid or unspecified!"  
33 - echo "Usage: k8s-upgrade-tb.sh --fromVersion={VERSION}"  
34 - exit 1  
35 -else  
36 - fromVersion="${FROM_VERSION// }"  
37 -fi  
38 -  
39 -kubectl apply -f common/database-setup.yml &&  
40 -kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s &&  
41 -kubectl exec tb-db-setup -- sh -c 'export UPGRADE_TB=true; export FROM_VERSION='"$fromVersion"'; start-tb-node.sh; touch /tmp/install-finished;'  
42 -  
43 -kubectl delete pod tb-db-setup