From c38b61bbd1388dad06f66b666923fd9744ec3e3a Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Fri, 6 Mar 2020 09:54:49 +0200 Subject: [PATCH] Added kafka, zookeeper and redis as stateful services --- application/pom.xml | 2 +- .../src/main/resources/thingsboard.yml | 2 +- common/dao-api/pom.xml | 2 +- common/data/pom.xml | 2 +- common/message/pom.xml | 2 +- common/pom.xml | 2 +- common/queue/pom.xml | 2 +- common/transport/coap/pom.xml | 2 +- common/transport/http/pom.xml | 2 +- common/transport/mqtt/pom.xml | 2 +- common/transport/pom.xml | 2 +- common/transport/transport-api/pom.xml | 2 +- common/util/pom.xml | 2 +- dao/pom.xml | 2 +- k8s/README.md | 20 + k8s/database-setup.yml | 4 +- k8s/k8s-delete-all.sh | 2 +- k8s/k8s-delete-thirdparty.sh | 21 + k8s/k8s-deploy-thirdparty.sh | 22 + k8s/postgres.yml | 7 +- k8s/thingsboard.yml | 629 +++++++----------- k8s/thirdparty.yml | 286 ++++++++ msa/black-box-tests/pom.xml | 2 +- msa/js-executor/package.json | 2 +- msa/js-executor/pom.xml | 2 +- msa/pom.xml | 2 +- msa/tb-node/pom.xml | 2 +- msa/tb/docker-cassandra/Dockerfile | 2 +- msa/tb/pom.xml | 2 +- msa/transport/coap/pom.xml | 2 +- msa/transport/http/pom.xml | 2 +- msa/transport/mqtt/pom.xml | 2 +- msa/transport/pom.xml | 2 +- msa/web-ui/package.json | 2 +- msa/web-ui/pom.xml | 2 +- netty-mqtt/pom.xml | 4 +- pom.xml | 2 +- rule-engine/pom.xml | 2 +- rule-engine/rule-engine-api/pom.xml | 2 +- rule-engine/rule-engine-components/pom.xml | 2 +- tools/pom.xml | 2 +- transport/coap/pom.xml | 2 +- transport/http/pom.xml | 2 +- transport/mqtt/pom.xml | 2 +- transport/pom.xml | 2 +- ui/package.json | 2 +- ui/pom.xml | 2 +- 47 files changed, 637 insertions(+), 434 deletions(-) create mode 100755 k8s/k8s-delete-thirdparty.sh create mode 100755 k8s/k8s-deploy-thirdparty.sh create mode 100644 k8s/thirdparty.yml diff --git a/application/pom.xml b/application/pom.xml index dca301ab4d..70f8a0c0c7 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard application diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index f374e1871e..d47f9e4d6b 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -298,7 +298,7 @@ caffeine: redis: # standalone or cluster connection: - type: standalone + type: "${REDIS_CONNECTION_TYPE:standalone}" standalone: host: "${REDIS_HOST:localhost}" port: "${REDIS_PORT:6379}" diff --git a/common/dao-api/pom.xml b/common/dao-api/pom.xml index 99f5548c09..4871cbdda1 100644 --- a/common/dao-api/pom.xml +++ b/common/dao-api/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 common org.thingsboard.common diff --git a/common/data/pom.xml b/common/data/pom.xml index f89af3cb0c..a1885c5354 100644 --- a/common/data/pom.xml +++ b/common/data/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 common org.thingsboard.common diff --git a/common/message/pom.xml b/common/message/pom.xml index 7e2b1c1489..8481247c94 100644 --- a/common/message/pom.xml +++ b/common/message/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 common org.thingsboard.common diff --git a/common/pom.xml b/common/pom.xml index 1b6b2349f5..f2eef8d3af 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard common diff --git a/common/queue/pom.xml b/common/queue/pom.xml index 1550c883da..ea4764a2d4 100644 --- a/common/queue/pom.xml +++ b/common/queue/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 common org.thingsboard.common diff --git a/common/transport/coap/pom.xml b/common/transport/coap/pom.xml index 93b3af4f17..a891b9faa6 100644 --- a/common/transport/coap/pom.xml +++ b/common/transport/coap/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard.common - 2.4.3 + 2.4.8 transport org.thingsboard.common.transport diff --git a/common/transport/http/pom.xml b/common/transport/http/pom.xml index 86bb44624f..f40fcf09db 100644 --- a/common/transport/http/pom.xml +++ b/common/transport/http/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard.common - 2.4.3 + 2.4.8 transport org.thingsboard.common.transport diff --git a/common/transport/mqtt/pom.xml b/common/transport/mqtt/pom.xml index 6b3b8d6996..890716bd69 100644 --- a/common/transport/mqtt/pom.xml +++ b/common/transport/mqtt/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard.common - 2.4.3 + 2.4.8 transport org.thingsboard.common.transport diff --git a/common/transport/pom.xml b/common/transport/pom.xml index cf271bcf28..0167555a89 100644 --- a/common/transport/pom.xml +++ b/common/transport/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 common org.thingsboard.common diff --git a/common/transport/transport-api/pom.xml b/common/transport/transport-api/pom.xml index 42a71ded8d..7c0825eca3 100644 --- a/common/transport/transport-api/pom.xml +++ b/common/transport/transport-api/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard.common - 2.4.3 + 2.4.8 transport org.thingsboard.common.transport diff --git a/common/util/pom.xml b/common/util/pom.xml index 96d7454b01..b05968d5b3 100644 --- a/common/util/pom.xml +++ b/common/util/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 common org.thingsboard.common diff --git a/dao/pom.xml b/dao/pom.xml index 4a50fbec5a..fa99fa2c48 100644 --- a/dao/pom.xml +++ b/dao/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard dao diff --git a/k8s/README.md b/k8s/README.md index e57790ffc4..512bf7ba1c 100644 --- a/k8s/README.md +++ b/k8s/README.md @@ -31,6 +31,26 @@ Where: ## Running +Execute the following command to deploy thirdparty resources: + +` +$ ./k8s-deploy-thirdparty.sh +` + +Get list of the running tb-redis pods and verify that all of them are in running state: + +` +$ kubectl get pods -l app=tb-redis +` + +Execute the following command to create redis cluster: + +` +$ 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 ') +` + +Type **'yes'** when prompted. + Execute the following command to deploy resources: ` diff --git a/k8s/database-setup.yml b/k8s/database-setup.yml index b48d6baf2b..d14b1adb92 100644 --- a/k8s/database-setup.yml +++ b/k8s/database-setup.yml @@ -31,8 +31,8 @@ spec: path: logback.xml containers: - name: tb-db-setup - imagePullPolicy: Always - image: thingsboard/tb-node:latest + imagePullPolicy: Never + image: thingsboard/tb-node:2.4.8 envFrom: - configMapRef: name: tb-node-db-config diff --git a/k8s/k8s-delete-all.sh b/k8s/k8s-delete-all.sh index 9df9fab1b7..b0373b42f3 100755 --- a/k8s/k8s-delete-all.sh +++ b/k8s/k8s-delete-all.sh @@ -15,4 +15,4 @@ # limitations under the License. # -kubectl -n thingsboard delete svc,sts,deploy,pv,pvc,cm,po,ing --all --include-uninitialized +kubectl -n thingsboard delete svc,sts,deploy,pv,pvc,cm,po,ing --all diff --git a/k8s/k8s-delete-thirdparty.sh b/k8s/k8s-delete-thirdparty.sh new file mode 100755 index 0000000000..a93b2b809e --- /dev/null +++ b/k8s/k8s-delete-thirdparty.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# +# Copyright © 2016-2020 The Thingsboard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +set -e + +kubectl config set-context $(kubectl config current-context) --namespace=thingsboard +kubectl delete -f thirdparty.yml diff --git a/k8s/k8s-deploy-thirdparty.sh b/k8s/k8s-deploy-thirdparty.sh new file mode 100755 index 0000000000..adc526506a --- /dev/null +++ b/k8s/k8s-deploy-thirdparty.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# +# Copyright © 2016-2020 The Thingsboard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +set -e + +kubectl apply -f tb-namespace.yml +kubectl config set-context $(kubectl config current-context) --namespace=thingsboard +kubectl apply -f thirdparty.yml diff --git a/k8s/postgres.yml b/k8s/postgres.yml index b991373a1b..6a527d1869 100644 --- a/k8s/postgres.yml +++ b/k8s/postgres.yml @@ -28,7 +28,7 @@ spec: requests: storage: 5Gi --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: postgres @@ -36,6 +36,9 @@ metadata: labels: app: postgres spec: + selector: + matchLabels: + app: postgres template: metadata: labels: @@ -55,6 +58,8 @@ spec: env: - name: POSTGRES_DB value: "thingsboard" + - name: POSTGRES_PASSWORD + value: "postgres" - name: PGDATA value: /var/lib/postgresql/data/pgdata volumeMounts: diff --git a/k8s/thingsboard.yml b/k8s/thingsboard.yml index 0e0ee75823..deea2d0773 100644 --- a/k8s/thingsboard.yml +++ b/k8s/thingsboard.yml @@ -13,162 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # - -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: zookeeper - namespace: thingsboard -spec: - template: - metadata: - labels: - app: zookeeper - spec: - containers: - - name: server - imagePullPolicy: Always - image: zookeeper:3.5 - ports: - - containerPort: 2181 - readinessProbe: - periodSeconds: 5 - tcpSocket: - port: 2181 - livenessProbe: - periodSeconds: 5 - tcpSocket: - port: 2181 - env: - - name: ZOO_MY_ID - value: "1" - - name: ZOO_SERVERS - value: "server.1=0.0.0.0:2888:3888;0.0.0.0:2181" - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: zookeeper - namespace: thingsboard -spec: - type: ClusterIP - selector: - app: zookeeper - ports: - - name: zk-port - port: 2181 ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: tb-kafka - namespace: thingsboard -spec: - template: - metadata: - labels: - app: tb-kafka - spec: - containers: - - name: server - imagePullPolicy: Always - image: wurstmeister/kafka:2.12-2.2.1 - ports: - - containerPort: 9092 - readinessProbe: - periodSeconds: 20 - tcpSocket: - port: 9092 - livenessProbe: - periodSeconds: 5 - tcpSocket: - port: 9092 - env: - - name: KAFKA_ZOOKEEPER_CONNECT - value: "zookeeper:2181" - - name: KAFKA_LISTENERS - value: "INSIDE://:9093,OUTSIDE://:9092" - - name: KAFKA_ADVERTISED_LISTENERS - value: "INSIDE://:9093,OUTSIDE://tb-kafka:9092" - - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP - value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" - - name: KAFKA_INTER_BROKER_LISTENER_NAME - value: "INSIDE" - - name: KAFKA_CREATE_TOPICS - 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" - - name: KAFKA_AUTO_CREATE_TOPICS_ENABLE - value: "false" - - name: KAFKA_LOG_RETENTION_BYTES - value: "1073741824" - - name: KAFKA_LOG_SEGMENT_BYTES - value: "268435456" - - name: KAFKA_LOG_RETENTION_MS - value: "300000" - - name: KAFKA_LOG_CLEANUP_POLICY - value: "delete" - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-kafka - namespace: thingsboard -spec: - type: ClusterIP - selector: - app: tb-kafka - ports: - - name: tb-kafka-port - port: 9092 ---- -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: tb-redis - namespace: thingsboard -spec: - template: - metadata: - labels: - app: tb-redis - spec: - containers: - - name: server - imagePullPolicy: Always - image: redis:4.0 - ports: - - containerPort: 6379 - readinessProbe: - periodSeconds: 5 - tcpSocket: - port: 6379 - livenessProbe: - periodSeconds: 5 - tcpSocket: - port: 6379 - volumeMounts: - - mountPath: /data - name: redis-data - volumes: - - name: redis-data - emptyDir: {} - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-redis - namespace: thingsboard -spec: - type: ClusterIP - selector: - app: tb-redis - ports: - - name: tb-redis-port - port: 6379 ---- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: tb-js-executor @@ -185,8 +30,8 @@ spec: spec: containers: - name: server - imagePullPolicy: Always - image: thingsboard/tb-js-executor:latest + imagePullPolicy: Never + image: thingsboard/tb-js-executor:2.4.8 env: - name: REMOTE_JS_EVAL_REQUEST_TOPIC value: "js.eval.requests" @@ -204,13 +49,13 @@ spec: value: "1000" restartPolicy: Always --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: tb-node namespace: thingsboard spec: - replicas: 2 + replicas: 1 selector: matchLabels: app: tb-node @@ -224,60 +69,64 @@ spec: configMap: name: tb-node-config items: - - key: conf - path: thingsboard.conf - - key: logback - path: logback.xml + - key: conf + path: thingsboard.conf + - key: logback + path: logback.xml containers: - - name: server - imagePullPolicy: Always - image: thingsboard/tb-node:latest - ports: - - containerPort: 8080 - name: http - - containerPort: 9001 - name: rpc - env: - - name: RPC_HOST - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: CLUSTER_NODE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_HOST - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: ZOOKEEPER_ENABLED - value: "true" - - name: ZOOKEEPER_URL - value: "zookeeper:2181" - - name: TB_KAFKA_SERVERS - value: "tb-kafka:9092" - - name: JS_EVALUATOR - value: "remote" - - name: TRANSPORT_TYPE - value: "remote" - - name: CACHE_TYPE - value: "redis" - - name: REDIS_HOST - value: "tb-redis" - - name: HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE - value: "false" - envFrom: - - configMapRef: - name: tb-node-db-config - volumeMounts: - - mountPath: /config - name: tb-node-config - livenessProbe: - httpGet: - path: /login - port: http - initialDelaySeconds: 120 - timeoutSeconds: 10 + - name: server + imagePullPolicy: Never + image: thingsboard/tb-node:2.4.8 + ports: + - containerPort: 8080 + name: http + - containerPort: 9001 + name: rpc + env: + - name: RPC_HOST + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: CLUSTER_NODE_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: TB_HOST + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: ZOOKEEPER_ENABLED + value: "true" + - name: ZOOKEEPER_URL + value: "zookeeper:2181" + - name: TB_KAFKA_SERVERS + value: "tb-kafka:9092" + - name: JS_EVALUATOR + value: "remote" + - name: TRANSPORT_TYPE + value: "remote" + - name: CACHE_TYPE + value: "redis" + - name: REDIS_HOST + value: "tb-redis" + - name: REDIS_CONNECTION_TYPE + value: "cluster" + - name: REDIS_NODES + value: "tb-redis:6379" + - name: HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE + value: "false" + envFrom: + - configMapRef: + name: tb-node-db-config + volumeMounts: + - mountPath: /config + name: tb-node-config + livenessProbe: + httpGet: + path: /login + port: http + initialDelaySeconds: 120 + timeoutSeconds: 10 restartPolicy: Always --- apiVersion: v1 @@ -290,10 +139,10 @@ spec: selector: app: tb-node ports: - - port: 8080 - name: http + - port: 8080 + name: http --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: tb-mqtt-transport @@ -313,45 +162,45 @@ spec: configMap: name: tb-mqtt-transport-config items: - - key: conf - path: tb-mqtt-transport.conf - - key: logback - path: logback.xml + - key: conf + path: tb-mqtt-transport.conf + - key: logback + path: logback.xml containers: - - name: server - imagePullPolicy: Always - image: thingsboard/tb-mqtt-transport:latest - ports: - - containerPort: 1883 - name: mqtt - env: - - name: CLUSTER_NODE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_HOST - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: MQTT_BIND_ADDRESS - value: "0.0.0.0" - - name: MQTT_BIND_PORT - value: "1883" - - name: MQTT_TIMEOUT - value: "10000" - - name: TB_KAFKA_SERVERS - value: "tb-kafka:9092" - volumeMounts: - - mountPath: /config - name: tb-mqtt-transport-config - readinessProbe: - periodSeconds: 20 - tcpSocket: - port: 1883 - livenessProbe: - periodSeconds: 20 - tcpSocket: - port: 1883 + - name: server + imagePullPolicy: Never + image: thingsboard/tb-mqtt-transport:2.4.8 + ports: + - containerPort: 1883 + name: mqtt + env: + - name: CLUSTER_NODE_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: TB_HOST + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MQTT_BIND_ADDRESS + value: "0.0.0.0" + - name: MQTT_BIND_PORT + value: "1883" + - name: MQTT_TIMEOUT + value: "10000" + - name: TB_KAFKA_SERVERS + value: "tb-kafka:9092" + volumeMounts: + - mountPath: /config + name: tb-mqtt-transport-config + readinessProbe: + periodSeconds: 20 + tcpSocket: + port: 1883 + livenessProbe: + periodSeconds: 20 + tcpSocket: + port: 1883 restartPolicy: Always --- apiVersion: v1 @@ -364,11 +213,11 @@ spec: selector: app: tb-mqtt-transport ports: - - port: 1883 - targetPort: 1883 - name: mqtt + - port: 1883 + targetPort: 1883 + name: mqtt --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: tb-http-transport @@ -388,45 +237,45 @@ spec: configMap: name: tb-http-transport-config items: - - key: conf - path: tb-http-transport.conf - - key: logback - path: logback.xml + - key: conf + path: tb-http-transport.conf + - key: logback + path: logback.xml containers: - - name: server - imagePullPolicy: Always - image: thingsboard/tb-http-transport:latest - ports: - - containerPort: 8080 - name: http - env: - - name: CLUSTER_NODE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_HOST - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: HTTP_BIND_ADDRESS - value: "0.0.0.0" - - name: HTTP_BIND_PORT - value: "8080" - - name: HTTP_REQUEST_TIMEOUT - value: "60000" - - name: TB_KAFKA_SERVERS - value: "tb-kafka:9092" - volumeMounts: - - mountPath: /config - name: tb-http-transport-config - readinessProbe: - periodSeconds: 20 - tcpSocket: - port: 8080 - livenessProbe: - periodSeconds: 20 - tcpSocket: - port: 8080 + - name: server + imagePullPolicy: Never + image: thingsboard/tb-http-transport:2.4.8 + ports: + - containerPort: 8080 + name: http + env: + - name: CLUSTER_NODE_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: TB_HOST + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: HTTP_BIND_ADDRESS + value: "0.0.0.0" + - name: HTTP_BIND_PORT + value: "8080" + - name: HTTP_REQUEST_TIMEOUT + value: "60000" + - name: TB_KAFKA_SERVERS + value: "tb-kafka:9092" + volumeMounts: + - mountPath: /config + name: tb-http-transport-config + readinessProbe: + periodSeconds: 20 + tcpSocket: + port: 8080 + livenessProbe: + periodSeconds: 20 + tcpSocket: + port: 8080 restartPolicy: Always --- apiVersion: v1 @@ -439,10 +288,10 @@ spec: selector: app: tb-http-transport ports: - - port: 8080 - name: http + - port: 8080 + name: http --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: tb-coap-transport @@ -462,38 +311,38 @@ spec: configMap: name: tb-coap-transport-config items: - - key: conf - path: tb-coap-transport.conf - - key: logback - path: logback.xml + - key: conf + path: tb-coap-transport.conf + - key: logback + path: logback.xml containers: - - name: server - imagePullPolicy: Always - image: thingsboard/tb-coap-transport:latest - ports: - - containerPort: 5683 - name: coap - protocol: UDP - env: - - name: CLUSTER_NODE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_HOST - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: COAP_BIND_ADDRESS - value: "0.0.0.0" - - name: COAP_BIND_PORT - value: "5683" - - name: COAP_TIMEOUT - value: "10000" - - name: TB_KAFKA_SERVERS - value: "tb-kafka:9092" - volumeMounts: - - mountPath: /config - name: tb-coap-transport-config + - name: server + imagePullPolicy: Never + image: thingsboard/tb-coap-transport:2.4.8 + ports: + - containerPort: 5683 + name: coap + protocol: UDP + env: + - name: CLUSTER_NODE_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: TB_HOST + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: COAP_BIND_ADDRESS + value: "0.0.0.0" + - name: COAP_BIND_PORT + value: "5683" + - name: COAP_TIMEOUT + value: "10000" + - name: TB_KAFKA_SERVERS + value: "tb-kafka:9092" + volumeMounts: + - mountPath: /config + name: tb-coap-transport-config restartPolicy: Always --- apiVersion: v1 @@ -506,11 +355,11 @@ spec: selector: app: tb-coap-transport ports: - - port: 5683 - name: coap - protocol: UDP + - port: 5683 + name: coap + protocol: UDP --- -apiVersion: extensions/v1beta1 +apiVersion: apps/v1 kind: Deployment metadata: name: tb-web-ui @@ -526,33 +375,33 @@ spec: app: tb-web-ui spec: containers: - - name: server - imagePullPolicy: Always - image: thingsboard/tb-web-ui:latest - ports: - - containerPort: 8080 - name: http - env: - - name: HTTP_BIND_ADDRESS - value: "0.0.0.0" - - name: HTTP_BIND_PORT - value: "8080" - - name: TB_ENABLE_PROXY - value: "false" - - name: LOGGER_LEVEL - value: "info" - - name: LOG_FOLDER - value: "logs" - - name: LOGGER_FILENAME - value: "tb-web-ui-%DATE%.log" - - name: DOCKER_MODE - value: "true" - livenessProbe: - httpGet: - path: /index.html - port: http - initialDelaySeconds: 120 - timeoutSeconds: 10 + - name: server + imagePullPolicy: Never + image: thingsboard/tb-web-ui:2.4.8 + ports: + - containerPort: 8080 + name: http + env: + - name: HTTP_BIND_ADDRESS + value: "0.0.0.0" + - name: HTTP_BIND_PORT + value: "8080" + - name: TB_ENABLE_PROXY + value: "false" + - name: LOGGER_LEVEL + value: "info" + - name: LOG_FOLDER + value: "logs" + - name: LOGGER_FILENAME + value: "tb-web-ui-%DATE%.log" + - name: DOCKER_MODE + value: "true" + livenessProbe: + httpGet: + path: /index.html + port: http + initialDelaySeconds: 120 + timeoutSeconds: 10 restartPolicy: Always --- apiVersion: v1 @@ -565,10 +414,10 @@ spec: selector: app: tb-web-ui ports: - - port: 8080 - name: http + - port: 8080 + name: http --- -apiVersion: extensions/v1beta1 +apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: tb-ingress @@ -579,30 +428,30 @@ metadata: nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" spec: rules: - - http: - paths: - - path: /api/v1/.* - backend: - serviceName: tb-http-transport - servicePort: 8080 - - path: /static/rulenode/.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /static/.* - backend: - serviceName: tb-web-ui - servicePort: 8080 - - path: /index.html.* - backend: - serviceName: tb-web-ui - servicePort: 8080 - - path: / - backend: - serviceName: tb-web-ui - servicePort: 8080 - - path: /.* - backend: - serviceName: tb-node - servicePort: 8080 + - http: + paths: + - path: /api/v1/.* + backend: + serviceName: tb-http-transport + servicePort: 8080 + - path: /static/rulenode/.* + backend: + serviceName: tb-node + servicePort: 8080 + - path: /static/.* + backend: + serviceName: tb-web-ui + servicePort: 8080 + - path: /index.html.* + backend: + serviceName: tb-web-ui + servicePort: 8080 + - path: / + backend: + serviceName: tb-web-ui + servicePort: 8080 + - path: /.* + backend: + serviceName: tb-node + servicePort: 8080 --- \ No newline at end of file diff --git a/k8s/thirdparty.yml b/k8s/thirdparty.yml new file mode 100644 index 0000000000..d08ae05f8c --- /dev/null +++ b/k8s/thirdparty.yml @@ -0,0 +1,286 @@ +# +# Copyright © 2016-2020 The Thingsboard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: zookeeper + namespace: thingsboard +spec: + serviceName: "zookeeper" + replicas: 3 + podManagementPolicy: Parallel + selector: + matchLabels: + app: zookeeper + template: + metadata: + labels: + app: zookeeper + spec: + containers: + - name: zookeeper + imagePullPolicy: Always + image: zookeeper:3.5 + ports: + - containerPort: 2181 + name: client + - containerPort: 2888 + name: server + - containerPort: 3888 + name: election + readinessProbe: + periodSeconds: 60 + tcpSocket: + port: 2181 + livenessProbe: + periodSeconds: 60 + tcpSocket: + port: 2181 + env: + - name: ZOO_SERVERS + 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" + - name: JVMFLAGS + value: "-Dzookeeper.electionPortBindRetry=0" + volumeMounts: + - name: data + mountPath: /data + readOnly: false + initContainers: + - command: + - /bin/bash + - -c + - |- + set -ex; + mkdir -p "$ZOO_DATA_LOG_DIR" "$ZOO_DATA_DIR" "$ZOO_CONF_DIR"; + chown "$ZOO_USER:$ZOO_USER" "$ZOO_DATA_LOG_DIR" "$ZOO_DATA_DIR" "$ZOO_CONF_DIR" + if [[ ! -f "$ZOO_DATA_DIR/myid" ]]; then + echo $HOSTNAME| rev | cut -d "-" -f1 | rev > "$ZOO_DATA_DIR/myid" + fi + env: + - name: HOSTNAME + valueFrom: + fieldRef: + fieldPath: metadata.name + image: zookeeper:3.5 + imagePullPolicy: IfNotPresent + name: zookeeper-init + securityContext: + runAsUser: 0 + volumeMounts: + - name: data + mountPath: /data + readOnly: false + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 1Gi +--- +apiVersion: v1 +kind: Service +metadata: + name: zookeeper + namespace: thingsboard +spec: + type: ClusterIP + ports: + - port: 2181 + targetPort: 2181 + name: client + - port: 2888 + targetPort: 2888 + name: server + - port: 3888 + targetPort: 3888 + name: election + selector: + app: zookeeper +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: tb-kafka + namespace: thingsboard + labels: + app: tb-kafka +spec: + replicas: 3 + podManagementPolicy: OrderedReady + serviceName: server + selector: + matchLabels: + app: tb-kafka + template: + metadata: + labels: + app: tb-kafka + spec: + containers: + - name: tb-kafka + imagePullPolicy: Always + image: wurstmeister/kafka:2.12-2.2.1 + ports: + - containerPort: 9092 + readinessProbe: + periodSeconds: 20 + tcpSocket: + port: 9092 + livenessProbe: + periodSeconds: 5 + tcpSocket: + port: 9092 + env: + - name: BROKER_ID_COMMAND + value: "hostname | cut -d'-' -f3" + - name: KAFKA_ZOOKEEPER_CONNECT + value: "zookeeper:2181" + - name: KAFKA_ADVERTISED_PORT + value: "9092" + - name: KAFKA_LISTENERS + value: "PLAINTEXT://:9092" + - name: KAFKA_CREATE_TOPICS + 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" + - name: KAFKA_AUTO_CREATE_TOPICS_ENABLE + value: "false" + - name: KAFKA_LOG_RETENTION_BYTES + value: "1073741824" + - name: KAFKA_LOG_SEGMENT_BYTES + value: "268435456" + - name: KAFKA_LOG_RETENTION_MS + value: "300000" + - name: KAFKA_LOG_CLEANUP_POLICY + value: "delete" + - name: KAFKA_PORT + value: "9092" + - name: KAFKA_LOG_DIRS + value: "/kafka-logs" + volumeMounts: + - name: logs + mountPath: /kafka-logs + subPath: logs + volumeClaimTemplates: + - metadata: + name: logs + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi +--- +apiVersion: v1 +kind: Service +metadata: + name: tb-kafka + namespace: thingsboard +spec: + type: ClusterIP + selector: + app: tb-kafka + ports: + - name: tb-kafka-port + port: 9092 +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: tb-redis + namespace: thingsboard +data: + update-node.sh: | + #!/bin/sh + REDIS_NODES="/data/nodes.conf" + 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} + exec "$@" + redis.conf: |+ + cluster-enabled yes + cluster-require-full-coverage no + cluster-node-timeout 15000 + cluster-config-file /data/nodes.conf + cluster-migration-barrier 1 + appendonly yes + protected-mode no +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: tb-redis + namespace: thingsboard +spec: + serviceName: server + replicas: 6 + selector: + matchLabels: + app: tb-redis + template: + metadata: + labels: + app: tb-redis + spec: + containers: + - name: redis + image: redis:5.0.1-alpine + ports: + - containerPort: 6379 + name: client + - containerPort: 16379 + name: gossip + command: ["/conf/update-node.sh", "redis-server", "/conf/redis.conf"] + env: + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + volumeMounts: + - name: conf + mountPath: /conf + readOnly: false + - name: data + mountPath: /data + readOnly: false + volumes: + - name: conf + configMap: + name: tb-redis + defaultMode: 0755 + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 1Gi +--- +apiVersion: v1 +kind: Service +metadata: + name: tb-redis + namespace: thingsboard +spec: + type: ClusterIP + ports: + - port: 6379 + targetPort: 6379 + name: client + - port: 16379 + targetPort: 16379 + name: gossip + selector: + app: tb-redis diff --git a/msa/black-box-tests/pom.xml b/msa/black-box-tests/pom.xml index ff6795787c..49f053f3ea 100644 --- a/msa/black-box-tests/pom.xml +++ b/msa/black-box-tests/pom.xml @@ -21,7 +21,7 @@ org.thingsboard - 2.4.3 + 2.4.8 msa org.thingsboard.msa diff --git a/msa/js-executor/package.json b/msa/js-executor/package.json index c87b62c6eb..0026bc15c8 100644 --- a/msa/js-executor/package.json +++ b/msa/js-executor/package.json @@ -1,7 +1,7 @@ { "name": "thingsboard-js-executor", "private": true, - "version": "2.4.3", + "version": "2.4.8", "description": "ThingsBoard JavaScript Executor Microservice", "main": "server.js", "bin": "server.js", diff --git a/msa/js-executor/pom.xml b/msa/js-executor/pom.xml index 1069bcf4e0..5cbcfabd00 100644 --- a/msa/js-executor/pom.xml +++ b/msa/js-executor/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 msa org.thingsboard.msa diff --git a/msa/pom.xml b/msa/pom.xml index 03b383e83c..9299f9a9c3 100644 --- a/msa/pom.xml +++ b/msa/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard msa diff --git a/msa/tb-node/pom.xml b/msa/tb-node/pom.xml index 9655cace85..990ea84a91 100644 --- a/msa/tb-node/pom.xml +++ b/msa/tb-node/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 msa org.thingsboard.msa diff --git a/msa/tb/docker-cassandra/Dockerfile b/msa/tb/docker-cassandra/Dockerfile index d1dfc21973..3a761398fd 100644 --- a/msa/tb/docker-cassandra/Dockerfile +++ b/msa/tb/docker-cassandra/Dockerfile @@ -19,7 +19,7 @@ FROM thingsboard/openjdk8 RUN apt-get update RUN apt-get install -y curl nmap procps RUN echo 'deb http://www.apache.org/dist/cassandra/debian 311x main' | tee --append /etc/apt/sources.list.d/cassandra.list > /dev/null -RUN curl https://www.apache.org/dist/cassandra/KEYS | apt-key add - +RUN curl -L https://www.apache.org/dist/cassandra/KEYS | apt-key add - RUN apt-get update RUN apt-get install -y cassandra cassandra-tools RUN update-rc.d cassandra disable diff --git a/msa/tb/pom.xml b/msa/tb/pom.xml index 3e15b6dcd4..59a69e5b87 100644 --- a/msa/tb/pom.xml +++ b/msa/tb/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 msa org.thingsboard.msa diff --git a/msa/transport/coap/pom.xml b/msa/transport/coap/pom.xml index 810d5dbc0a..ed3f014677 100644 --- a/msa/transport/coap/pom.xml +++ b/msa/transport/coap/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard.msa - 2.4.3 + 2.4.8 transport org.thingsboard.msa.transport diff --git a/msa/transport/http/pom.xml b/msa/transport/http/pom.xml index 41952681a0..b9b8ba1cf3 100644 --- a/msa/transport/http/pom.xml +++ b/msa/transport/http/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard.msa - 2.4.3 + 2.4.8 transport org.thingsboard.msa.transport diff --git a/msa/transport/mqtt/pom.xml b/msa/transport/mqtt/pom.xml index 2e43fff8d8..2bfc8bef95 100644 --- a/msa/transport/mqtt/pom.xml +++ b/msa/transport/mqtt/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard.msa - 2.4.3 + 2.4.8 transport org.thingsboard.msa.transport diff --git a/msa/transport/pom.xml b/msa/transport/pom.xml index da09650031..fc686e6e4b 100644 --- a/msa/transport/pom.xml +++ b/msa/transport/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 msa org.thingsboard.msa diff --git a/msa/web-ui/package.json b/msa/web-ui/package.json index 188084d375..d4d582bf93 100644 --- a/msa/web-ui/package.json +++ b/msa/web-ui/package.json @@ -1,7 +1,7 @@ { "name": "thingsboard-web-ui", "private": true, - "version": "2.4.3", + "version": "2.4.8", "description": "ThingsBoard Web UI Microservice", "main": "server.js", "bin": "server.js", diff --git a/msa/web-ui/pom.xml b/msa/web-ui/pom.xml index af5a315852..466da246d5 100644 --- a/msa/web-ui/pom.xml +++ b/msa/web-ui/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 msa org.thingsboard.msa diff --git a/netty-mqtt/pom.xml b/netty-mqtt/pom.xml index 7bdc0d9be5..f121fa8a38 100644 --- a/netty-mqtt/pom.xml +++ b/netty-mqtt/pom.xml @@ -19,12 +19,12 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard org.thingsboard netty-mqtt - 2.4.3 + 2.4.8 jar Netty MQTT Client diff --git a/pom.xml b/pom.xml index f016e03b78..62ad588e03 100755 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard thingsboard - 2.4.3 + 2.4.8 pom Thingsboard diff --git a/rule-engine/pom.xml b/rule-engine/pom.xml index 5d775b792f..0dd88cacdf 100644 --- a/rule-engine/pom.xml +++ b/rule-engine/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard rule-engine diff --git a/rule-engine/rule-engine-api/pom.xml b/rule-engine/rule-engine-api/pom.xml index 02e2291794..7733f2ab04 100644 --- a/rule-engine/rule-engine-api/pom.xml +++ b/rule-engine/rule-engine-api/pom.xml @@ -22,7 +22,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 rule-engine org.thingsboard.rule-engine diff --git a/rule-engine/rule-engine-components/pom.xml b/rule-engine/rule-engine-components/pom.xml index 7baebad00d..716c4759eb 100644 --- a/rule-engine/rule-engine-components/pom.xml +++ b/rule-engine/rule-engine-components/pom.xml @@ -22,7 +22,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 rule-engine org.thingsboard.rule-engine diff --git a/tools/pom.xml b/tools/pom.xml index 3a83ef2528..ae0b4e9c4d 100644 --- a/tools/pom.xml +++ b/tools/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard tools diff --git a/transport/coap/pom.xml b/transport/coap/pom.xml index 9deaf93889..a674c802b7 100644 --- a/transport/coap/pom.xml +++ b/transport/coap/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 transport org.thingsboard.transport diff --git a/transport/http/pom.xml b/transport/http/pom.xml index 5974ec0718..fce199b839 100644 --- a/transport/http/pom.xml +++ b/transport/http/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 transport org.thingsboard.transport diff --git a/transport/mqtt/pom.xml b/transport/mqtt/pom.xml index a362402d81..310583c8e6 100644 --- a/transport/mqtt/pom.xml +++ b/transport/mqtt/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 transport org.thingsboard.transport diff --git a/transport/pom.xml b/transport/pom.xml index 2d4cc1c02f..ec9919056a 100644 --- a/transport/pom.xml +++ b/transport/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard transport diff --git a/ui/package.json b/ui/package.json index f9f6083b31..ada167d8d3 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,7 +1,7 @@ { "name": "thingsboard", "private": true, - "version": "2.4.3", + "version": "2.4.8", "description": "ThingsBoard UI", "licenses": [ { diff --git a/ui/pom.xml b/ui/pom.xml index 6634460117..073ba165b8 100644 --- a/ui/pom.xml +++ b/ui/pom.xml @@ -20,7 +20,7 @@ 4.0.0 org.thingsboard - 2.4.3 + 2.4.8 thingsboard org.thingsboard