From f2974532c607ea239aff63bf0885628496f13bd4 Mon Sep 17 00:00:00 2001 From: Andrii Shvaika Date: Thu, 11 Nov 2021 14:05:27 +0200 Subject: [PATCH] K8S scripts moved to separate repository --- k8s/.env | 8 - k8s/README.md | 130 ----- k8s/basic/tb-node-cache-configmap.yml | 26 - k8s/basic/thirdparty.yml | 181 ------- k8s/common/cassandra.yml | 164 ------- k8s/common/database-setup.yml | 43 -- k8s/common/postgres.yml | 102 ---- k8s/common/tb-coap-transport-configmap.yml | 65 --- k8s/common/tb-http-transport-configmap.yml | 65 --- k8s/common/tb-mqtt-transport-configmap.yml | 65 --- k8s/common/tb-namespace.yml | 22 - k8s/common/tb-node-configmap.yml | 67 --- k8s/common/tb-node-hybrid-configmap.yml | 32 -- k8s/common/tb-node-postgres-configmap.yml | 30 -- k8s/common/tb-node.yml | 98 ---- k8s/common/thingsboard.yml | 451 ------------------ .../tb-node-cache-configmap.yml | 27 -- k8s/high-availability/thirdparty.yml | 301 ------------ k8s/k8s-delete-all.sh | 20 - k8s/k8s-delete-resources.sh | 25 - k8s/k8s-delete-thirdparty.sh | 23 - k8s/k8s-deploy-resources.sh | 30 -- k8s/k8s-deploy-thirdparty.sh | 45 -- k8s/k8s-install-tb.sh | 106 ---- k8s/k8s-upgrade-tb.sh | 43 -- 25 files changed, 2169 deletions(-) delete mode 100644 k8s/.env delete mode 100644 k8s/README.md delete mode 100644 k8s/basic/tb-node-cache-configmap.yml delete mode 100644 k8s/basic/thirdparty.yml delete mode 100644 k8s/common/cassandra.yml delete mode 100644 k8s/common/database-setup.yml delete mode 100644 k8s/common/postgres.yml delete mode 100644 k8s/common/tb-coap-transport-configmap.yml delete mode 100644 k8s/common/tb-http-transport-configmap.yml delete mode 100644 k8s/common/tb-mqtt-transport-configmap.yml delete mode 100644 k8s/common/tb-namespace.yml delete mode 100644 k8s/common/tb-node-configmap.yml delete mode 100644 k8s/common/tb-node-hybrid-configmap.yml delete mode 100644 k8s/common/tb-node-postgres-configmap.yml delete mode 100644 k8s/common/tb-node.yml delete mode 100644 k8s/common/thingsboard.yml delete mode 100644 k8s/high-availability/tb-node-cache-configmap.yml delete mode 100644 k8s/high-availability/thirdparty.yml delete mode 100755 k8s/k8s-delete-all.sh delete mode 100755 k8s/k8s-delete-resources.sh delete mode 100755 k8s/k8s-delete-thirdparty.sh delete mode 100755 k8s/k8s-deploy-resources.sh delete mode 100755 k8s/k8s-deploy-thirdparty.sh delete mode 100755 k8s/k8s-install-tb.sh delete mode 100755 k8s/k8s-upgrade-tb.sh diff --git a/k8s/.env b/k8s/.env deleted file mode 100644 index 4f0478683b..0000000000 --- a/k8s/.env +++ /dev/null @@ -1,8 +0,0 @@ -# Can be either basic (with single instance of Zookeeper, Kafka and Redis) or high-availability (with Zookeeper, Kafka and Redis in cluster modes). -# According to the deployment type corresponding kubernetes resources will be deployed (see content of the directories ./basic and ./high-availability for details). -DEPLOYMENT_TYPE=basic - -# Database used by ThingsBoard, can be either postgres (PostgreSQL) or hybrid (PostgreSQL for entities database and Cassandra for timeseries database). -# According to the database type corresponding kubernetes resources will be deployed (see postgres.yml, cassandra.yml for details). -DATABASE=postgres - diff --git a/k8s/README.md b/k8s/README.md deleted file mode 100644 index 9d91c8c0e8..0000000000 --- a/k8s/README.md +++ /dev/null @@ -1,130 +0,0 @@ -# Kubernetes resources configuration for ThingsBoard Microservices - -This folder containing scripts and Kubernetes resources configurations to run ThingsBoard in Microservices mode. - -## Prerequisites - -ThingsBoard Microservices run on the Kubernetes cluster. -You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. -If you do not have a cluster already, you can create one by using [Minikube](https://kubernetes.io/docs/setup/minikube), -or you can choose any other available [Kubernetes cluster deployment solutions](https://kubernetes.io/docs/setup/pick-right-solution/). - -### Enable ingress addon - -By default ingress addon is disabled in the Minikube, and available only in cluster providers. -To enable ingress, please execute the following command: - -` -$ minikube addons enable ingress -` - -## Installation - -Before performing initial installation you can configure the type of database to be used with ThingsBoard and the type of deployment. -To set database type change the value of `DATABASE` variable in `.env` file to one of the following: - -- `postgres` - use PostgreSQL database; -- `hybrid` - use PostgreSQL for entities database and Cassandra for timeseries database; - -**NOTE**: According to the database type corresponding kubernetes resources will be deployed (see `postgres.yml`, `cassandra.yml` for details). - -To set deployment type change the value of `DEPLOYMENT_TYPE` variable in `.env` file to one of the following: - -- `basic` - startup with a single instance of Zookeeper, Kafka and Redis; -- `high-availability` - startup with Zookeeper, Kafka, and Redis in cluster modes; - -**NOTE**: According to the deployment type corresponding kubernetes resources will be deployed (see the content of the directories `./basic` and `./high-availability` for details). - -Execute the following command to run the installation: - -` -$ ./k8s-install-tb.sh --loadDemo -` - -Where: - -- `--loadDemo` - optional argument. Whether to load additional demo data. - -## Running - -Execute the following command to deploy third-party resources: - -` -$ ./k8s-deploy-thirdparty.sh -` - -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. - -Execute the following command to deploy resources: - -` -$ ./k8s-deploy-resources.sh -` - -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`). -You should see the ThingsBoard login page. - -Use the following default credentials: - -- **System Administrator**: sysadmin@thingsboard.org / sysadmin - -If you installed DataBase with demo data (using `--loadDemo` flag) you can also use the following credentials: - -- **Tenant Administrator**: tenant@thingsboard.org / tenant -- **Customer User**: customer@thingsboard.org / customer - -In case of any issues, you can examine service logs for errors. -For example to see ThingsBoard node logs execute the following commands: - -1) Get the list of the running tb-node pods: - -` -$ kubectl get pods -l app=tb-node -` - -2) Fetch logs of the tb-node pod: - -` -$ kubectl logs -f [tb-node-pod-name] -` - -Where: - -- `tb-node-pod-name` - tb-node pod name obtained from the list of the running tb-node pods. - -Or use `kubectl get pods` to see the state of all the pods. -Or use `kubectl get services` to see the state of all the services. -Or use `kubectl get deployments` to see the state of all the deployments. -See [kubectl Cheat Sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/) command reference for details. - -Execute the following command to delete all ThingsBoard microservices: - -` -$ ./k8s-delete-resources.sh -` - -Execute the following command to delete all third-party microservices: - -` -$ ./k8s-delete-thirdparty.sh -` - -Execute the following command to delete all resources (including database): - -` -$ ./k8s-delete-all.sh -` - -## Upgrading - -In case when database upgrade is needed, execute the following commands: - -``` -$ ./k8s-delete-resources.sh -$ ./k8s-upgrade-tb.sh --fromVersion=[FROM_VERSION] -$ ./k8s-deploy-resources.sh -``` - -Where: - -- `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. diff --git a/k8s/basic/tb-node-cache-configmap.yml b/k8s/basic/tb-node-cache-configmap.yml deleted file mode 100644 index 3a81044f0a..0000000000 --- a/k8s/basic/tb-node-cache-configmap.yml +++ /dev/null @@ -1,26 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: ConfigMap -metadata: - name: tb-node-cache-config - namespace: thingsboard - labels: - name: tb-node-cache-config -data: - CACHE_TYPE: redis - REDIS_HOST: tb-redis \ No newline at end of file diff --git a/k8s/basic/thirdparty.yml b/k8s/basic/thirdparty.yml deleted file mode 100644 index edba32532e..0000000000 --- a/k8s/basic/thirdparty.yml +++ /dev/null @@ -1,181 +0,0 @@ -# -# Copyright © 2016-2021 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: Deployment -metadata: - name: zookeeper - namespace: thingsboard -spec: - selector: - matchLabels: - app: zookeeper - 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: - initialDelaySeconds: 15 - 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: apps/v1 -kind: Deployment -metadata: - name: tb-kafka - namespace: thingsboard -spec: - selector: - matchLabels: - app: tb-kafka - 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: - initialDelaySeconds: 25 - 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: apps/v1 -kind: Deployment -metadata: - name: tb-redis - namespace: thingsboard -spec: - selector: - matchLabels: - app: tb-redis - 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 ---- \ No newline at end of file diff --git a/k8s/common/cassandra.yml b/k8s/common/cassandra.yml deleted file mode 100644 index 056851242d..0000000000 --- a/k8s/common/cassandra.yml +++ /dev/null @@ -1,164 +0,0 @@ -# -# Copyright © 2016-2021 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: storage.k8s.io/v1 -kind: StorageClass -metadata: - name: fast - namespace: thingsboard -provisioner: k8s.io/minikube-hostpath -parameters: - type: pd-ssd ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: cassandra-probe-config - namespace: thingsboard - labels: - name: cassandra-probe-config -data: - probe: | - if [[ $(nodetool status | grep $POD_IP) == *"UN"* ]]; then - if [[ $DEBUG ]]; then - echo "UN"; - fi - exit 0; - else - if [[ $DEBUG ]]; then - echo "Not Up"; - fi - exit 1; - fi ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: cassandra - namespace: thingsboard - labels: - app: cassandra -spec: - serviceName: cassandra - replicas: 1 - selector: - matchLabels: - app: cassandra - template: - metadata: - labels: - app: cassandra - spec: - volumes: - - name: cassandra-probe-config - configMap: - name: cassandra-probe-config - items: - - key: probe - path: ready-probe.sh - mode: 0777 - terminationGracePeriodSeconds: 1800 - containers: - - name: cassandra - image: cassandra:3.11.3 - imagePullPolicy: Always - ports: - - containerPort: 7000 - name: intra-node - - containerPort: 7001 - name: tls-intra-node - - containerPort: 7199 - name: jmx - - containerPort: 9042 - name: cql - - containerPort: 9160 - name: thrift - resources: - limits: - cpu: "1000m" - memory: 2Gi - requests: - cpu: "1000m" - memory: 2Gi - securityContext: - capabilities: - add: - - IPC_LOCK - lifecycle: - preStop: - exec: - command: - - /bin/sh - - -c - - nodetool drain - env: - - name: CASSANDRA_SEEDS - value: "cassandra-0.cassandra.thingsboard.svc.cluster.local" - - name: MAX_HEAP_SIZE - value: 1024M - - name: HEAP_NEWSIZE - value: 256M - - name: CASSANDRA_CLUSTER_NAME - value: "Thingsboard Cluster" - - name: CASSANDRA_DC - value: "datacenter1" - - name: CASSANDRA_RACK - value: "Rack-Thingsboard-Cluster" - - name: CASSANDRA_AUTO_BOOTSTRAP - value: "false" - - name: CASSANDRA_ENDPOINT_SNITCH - value: GossipingPropertyFileSnitch - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - readinessProbe: - exec: - command: - - /bin/bash - - -c - - /probe/ready-probe.sh - initialDelaySeconds: 60 - timeoutSeconds: 5 - volumeMounts: - - name: cassandra-probe-config - mountPath: /probe - - name: cassandra-data - mountPath: /var/lib/cassandra - volumeClaimTemplates: - - metadata: - name: cassandra-data - spec: - accessModes: [ "ReadWriteOnce" ] - storageClassName: fast - resources: - requests: - storage: 1Gi ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: cassandra - name: cassandra - namespace: thingsboard -spec: - clusterIP: None - ports: - - port: 9042 - selector: - app: cassandra ---- diff --git a/k8s/common/database-setup.yml b/k8s/common/database-setup.yml deleted file mode 100644 index 1c7cd48a1b..0000000000 --- a/k8s/common/database-setup.yml +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: Pod -metadata: - name: tb-db-setup - namespace: thingsboard -spec: - volumes: - - name: tb-node-config - configMap: - name: tb-node-config - items: - - key: conf - path: thingsboard.conf - - key: logback - path: logback.xml - containers: - - name: tb-db-setup - imagePullPolicy: Always - image: thingsboard/tb-node:latest - envFrom: - - configMapRef: - name: tb-node-db-config - volumeMounts: - - mountPath: /config - name: tb-node-config - command: ['sh', '-c', 'while [ ! -f /tmp/install-finished ]; do sleep 2; done;'] - restartPolicy: Never diff --git a/k8s/common/postgres.yml b/k8s/common/postgres.yml deleted file mode 100644 index 40ed35d066..0000000000 --- a/k8s/common/postgres.yml +++ /dev/null @@ -1,102 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: PersistentVolumeClaim -metadata: - name: postgres-pv-claim - namespace: thingsboard - labels: - app: postgres -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 5Gi ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: postgres - namespace: thingsboard - labels: - app: postgres -spec: - selector: - matchLabels: - app: postgres - template: - metadata: - labels: - app: postgres - spec: - volumes: - - name: postgres-data - persistentVolumeClaim: - claimName: postgres-pv-claim - containers: - - name: postgres - imagePullPolicy: Always - image: postgres:12 - ports: - - containerPort: 5432 - name: postgres - env: - - name: POSTGRES_DB - value: "thingsboard" - - name: POSTGRES_PASSWORD - value: "postgres" - - name: PGDATA - value: /var/lib/postgresql/data/pgdata - volumeMounts: - - mountPath: /var/lib/postgresql/data - name: postgres-data - livenessProbe: - exec: - command: - - pg_isready - - -h - - localhost - - -U - - postgres - initialDelaySeconds: 60 - timeoutSeconds: 30 - readinessProbe: - exec: - command: - - pg_isready - - -h - - localhost - - -U - - postgres - initialDelaySeconds: 5 - timeoutSeconds: 1 - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-database - namespace: thingsboard -spec: - type: ClusterIP - selector: - app: postgres - ports: - - port: 5432 - name: postgres ---- diff --git a/k8s/common/tb-coap-transport-configmap.yml b/k8s/common/tb-coap-transport-configmap.yml deleted file mode 100644 index 0f0ea0a8e5..0000000000 --- a/k8s/common/tb-coap-transport-configmap.yml +++ /dev/null @@ -1,65 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: ConfigMap -metadata: - name: tb-coap-transport-config - namespace: thingsboard - labels: - name: tb-coap-transport-config -data: - conf: | - 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" - export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-coap-transport/${TB_SERVICE_ID}-heapdump.bin" - export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" - export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10" - export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError" - export LOG_FILENAME=tb-coap-transport.out - export LOADER_PATH=/usr/share/tb-coap-transport/conf - logback: | - - - - - /var/log/tb-coap-transport/${TB_SERVICE_ID}/tb-coap-transport.log - - /var/log/tb-coap-transport/${TB_SERVICE_ID}/tb-coap-transport.%d{yyyy-MM-dd}.%i.log - 100MB - 30 - 3GB - - - %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n - - - - - - %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - diff --git a/k8s/common/tb-http-transport-configmap.yml b/k8s/common/tb-http-transport-configmap.yml deleted file mode 100644 index 582df2e5e8..0000000000 --- a/k8s/common/tb-http-transport-configmap.yml +++ /dev/null @@ -1,65 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: ConfigMap -metadata: - name: tb-http-transport-config - namespace: thingsboard - labels: - name: tb-http-transport-config -data: - conf: | - 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" - export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-http-transport/${TB_SERVICE_ID}-heapdump.bin" - export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" - export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10" - export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError" - export LOG_FILENAME=tb-http-transport.out - export LOADER_PATH=/usr/share/tb-http-transport/conf - logback: | - - - - - /var/log/tb-http-transport/${TB_SERVICE_ID}/tb-http-transport.log - - /var/log/tb-http-transport/${TB_SERVICE_ID}/tb-http-transport.%d{yyyy-MM-dd}.%i.log - 100MB - 30 - 3GB - - - %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n - - - - - - %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - diff --git a/k8s/common/tb-mqtt-transport-configmap.yml b/k8s/common/tb-mqtt-transport-configmap.yml deleted file mode 100644 index 0d82938842..0000000000 --- a/k8s/common/tb-mqtt-transport-configmap.yml +++ /dev/null @@ -1,65 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: ConfigMap -metadata: - name: tb-mqtt-transport-config - namespace: thingsboard - labels: - name: tb-mqtt-transport-config -data: - conf: | - 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" - export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-mqtt-transport/${TB_SERVICE_ID}-heapdump.bin" - export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" - export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10" - export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError" - export LOG_FILENAME=tb-mqtt-transport.out - export LOADER_PATH=/usr/share/tb-mqtt-transport/conf - logback: | - - - - - /var/log/tb-mqtt-transport/${TB_SERVICE_ID}/tb-mqtt-transport.log - - /var/log/tb-mqtt-transport/${TB_SERVICE_ID}/tb-mqtt-transport.%d{yyyy-MM-dd}.%i.log - 100MB - 30 - 3GB - - - %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n - - - - - - %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - diff --git a/k8s/common/tb-namespace.yml b/k8s/common/tb-namespace.yml deleted file mode 100644 index c2056c7dd8..0000000000 --- a/k8s/common/tb-namespace.yml +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: Namespace -metadata: - name: thingsboard - labels: - name: thingsboard diff --git a/k8s/common/tb-node-configmap.yml b/k8s/common/tb-node-configmap.yml deleted file mode 100644 index 3e796215ab..0000000000 --- a/k8s/common/tb-node-configmap.yml +++ /dev/null @@ -1,67 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: ConfigMap -metadata: - name: tb-node-config - namespace: thingsboard - labels: - name: tb-node-config -data: - conf: | - export JAVA_OPTS="$JAVA_OPTS -Dplatform=deb -Dinstall.data_dir=/usr/share/thingsboard/data" - 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" - export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/thingsboard/${TB_SERVICE_ID}-heapdump.bin" - export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" - export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10" - export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError" - export LOG_FILENAME=thingsboard.out - export LOADER_PATH=/usr/share/thingsboard/conf,/usr/share/thingsboard/extensions - logback: | - - - - - /var/log/thingsboard/${TB_SERVICE_ID}/thingsboard.log - - /var/log/thingsboard/${TB_SERVICE_ID}/thingsboard.%d{yyyy-MM-dd}.%i.log - 100MB - 30 - 3GB - - - %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n - - - - - - %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - diff --git a/k8s/common/tb-node-hybrid-configmap.yml b/k8s/common/tb-node-hybrid-configmap.yml deleted file mode 100644 index 0ef6fc4dfb..0000000000 --- a/k8s/common/tb-node-hybrid-configmap.yml +++ /dev/null @@ -1,32 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: ConfigMap -metadata: - name: tb-node-db-config - namespace: thingsboard - labels: - name: tb-node-db-config -data: - SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect - SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver - SPRING_DATASOURCE_URL: jdbc:postgresql://tb-database:5432/thingsboard - SPRING_DATASOURCE_USERNAME: postgres - SPRING_DATASOURCE_PASSWORD: postgres - DATABASE_TS_TYPE: cassandra - CASSANDRA_URL: cassandra:9042 - CASSANDRA_SOCKET_READ_TIMEOUT: "60000" diff --git a/k8s/common/tb-node-postgres-configmap.yml b/k8s/common/tb-node-postgres-configmap.yml deleted file mode 100644 index 63cc0cb42c..0000000000 --- a/k8s/common/tb-node-postgres-configmap.yml +++ /dev/null @@ -1,30 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: ConfigMap -metadata: - name: tb-node-db-config - namespace: thingsboard - labels: - name: tb-node-db-config -data: - DATABASE_TS_TYPE: sql - SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect - SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver - SPRING_DATASOURCE_URL: jdbc:postgresql://tb-database:5432/thingsboard - SPRING_DATASOURCE_USERNAME: postgres - SPRING_DATASOURCE_PASSWORD: postgres diff --git a/k8s/common/tb-node.yml b/k8s/common/tb-node.yml deleted file mode 100644 index 2520bf8e76..0000000000 --- a/k8s/common/tb-node.yml +++ /dev/null @@ -1,98 +0,0 @@ -# -# Copyright © 2016-2021 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: Deployment -metadata: - name: tb-node - namespace: thingsboard -spec: - replicas: 2 - selector: - matchLabels: - app: tb-node - template: - metadata: - labels: - app: tb-node - spec: - volumes: - - name: tb-node-config - configMap: - name: tb-node-config - items: - - 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: TB_SERVICE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_SERVICE_TYPE - value: "monolith" - - name: TB_QUEUE_TYPE - value: "kafka" - - 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: HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE - value: "false" - envFrom: - - configMapRef: - name: tb-node-db-config - - configMapRef: - name: tb-node-cache-config - volumeMounts: - - mountPath: /config - name: tb-node-config - livenessProbe: - httpGet: - path: /login - port: http - initialDelaySeconds: 300 - timeoutSeconds: 10 - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-node - namespace: thingsboard -spec: - type: ClusterIP - selector: - app: tb-node - ports: - - port: 8080 - name: http \ No newline at end of file diff --git a/k8s/common/thingsboard.yml b/k8s/common/thingsboard.yml deleted file mode 100644 index 73b7133433..0000000000 --- a/k8s/common/thingsboard.yml +++ /dev/null @@ -1,451 +0,0 @@ -# -# Copyright © 2016-2021 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: Deployment -metadata: - name: tb-js-executor - namespace: thingsboard -spec: - replicas: 20 - selector: - matchLabels: - app: tb-js-executor - template: - metadata: - labels: - app: tb-js-executor - spec: - containers: - - name: server - imagePullPolicy: Always - image: thingsboard/tb-js-executor:latest - env: - - name: REMOTE_JS_EVAL_REQUEST_TOPIC - value: "js_eval.requests" - - name: TB_KAFKA_SERVERS - value: "tb-kafka:9092" - - name: LOGGER_LEVEL - value: "info" - - name: LOG_FOLDER - value: "logs" - - name: LOGGER_FILENAME - value: "tb-js-executor-%DATE%.log" - - name: DOCKER_MODE - value: "true" - - name: SCRIPT_BODY_TRACE_FREQUENCY - value: "1000" - restartPolicy: Always ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: tb-mqtt-transport - namespace: thingsboard -spec: - replicas: 2 - selector: - matchLabels: - app: tb-mqtt-transport - template: - metadata: - labels: - app: tb-mqtt-transport - spec: - volumes: - - name: tb-mqtt-transport-config - configMap: - name: tb-mqtt-transport-config - items: - - 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: TB_SERVICE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_QUEUE_TYPE - value: "kafka" - - 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: - initialDelaySeconds: 120 - periodSeconds: 20 - tcpSocket: - port: 1883 - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-mqtt-transport - namespace: thingsboard -spec: - type: LoadBalancer - selector: - app: tb-mqtt-transport - ports: - - port: 1883 - targetPort: 1883 - name: mqtt ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: tb-http-transport - namespace: thingsboard -spec: - replicas: 2 - selector: - matchLabels: - app: tb-http-transport - template: - metadata: - labels: - app: tb-http-transport - spec: - volumes: - - name: tb-http-transport-config - configMap: - name: tb-http-transport-config - items: - - 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: TB_SERVICE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_QUEUE_TYPE - value: "kafka" - - 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: - initialDelaySeconds: 120 - periodSeconds: 20 - tcpSocket: - port: 8080 - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-http-transport - namespace: thingsboard -spec: - type: ClusterIP - selector: - app: tb-http-transport - ports: - - port: 8080 - name: http ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: tb-coap-transport - namespace: thingsboard -spec: - replicas: 2 - selector: - matchLabels: - app: tb-coap-transport - template: - metadata: - labels: - app: tb-coap-transport - spec: - volumes: - - name: tb-coap-transport-config - configMap: - name: tb-coap-transport-config - items: - - 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: TB_SERVICE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_QUEUE_TYPE - value: "kafka" - - 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 -kind: Service -metadata: - name: tb-coap-transport - namespace: thingsboard -spec: - type: LoadBalancer - selector: - app: tb-coap-transport - ports: - - port: 5683 - name: coap - protocol: UDP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: tb-lwm2m-transport - namespace: thingsboard -spec: - replicas: 2 - selector: - matchLabels: - app: tb-lwm2m-transport - template: - metadata: - labels: - app: tb-lwm2m-transport - spec: - volumes: - - name: tb-lwm2m-transport-config - configMap: - name: tb-lwm2m-transport-config - items: - - key: conf - path: tb-lwm2m-transport.conf - - key: logback - path: logback.xml - containers: - - name: server - imagePullPolicy: Always - image: thingsboard/tb-lwm2m-transport:latest - ports: - - containerPort: 5685 - name: lwm2m - protocol: UDP - env: - - name: TB_SERVICE_ID - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: TB_QUEUE_TYPE - value: "kafka" - - name: LWM2M_BIND_ADDRESS - value: "0.0.0.0" - - name: LWM2M_BIND_PORT - value: "5685" - - name: LWM2M_TIMEOUT - value: "10000" - - name: TB_KAFKA_SERVERS - value: "tb-kafka:9092" - volumeMounts: - - mountPath: /config - name: tb-lwm2m-transport-config - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-lwm2m-transport - namespace: thingsboard -spec: - type: LoadBalancer - selector: - app: tb-lwm2m-transport - ports: - - port: 5685 - name: lwm2m - protocol: UDP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: tb-web-ui - namespace: thingsboard -spec: - replicas: 2 - selector: - matchLabels: - app: tb-web-ui - template: - metadata: - labels: - 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 - restartPolicy: Always ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-web-ui - namespace: thingsboard -spec: - type: ClusterIP - selector: - app: tb-web-ui - ports: - - port: 8080 - name: http ---- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: tb-ingress - namespace: thingsboard - annotations: - nginx.ingress.kubernetes.io/use-regex: "true" - nginx.ingress.kubernetes.io/ssl-redirect: "false" - nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" -spec: - rules: - - http: - paths: - - path: /api/v1/.* - backend: - serviceName: tb-http-transport - servicePort: 8080 - - path: /api/.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /swagger.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /webjars.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /v2/.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /v3/.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /static/rulenode/.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /assets/help/.*/rulenode/.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /oauth2/.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: /login/oauth2/.* - backend: - serviceName: tb-node - servicePort: 8080 - - path: / - backend: - serviceName: tb-web-ui - servicePort: 8080 - - path: /.* - backend: - serviceName: tb-web-ui - servicePort: 8080 ---- diff --git a/k8s/high-availability/tb-node-cache-configmap.yml b/k8s/high-availability/tb-node-cache-configmap.yml deleted file mode 100644 index 46800e4fe8..0000000000 --- a/k8s/high-availability/tb-node-cache-configmap.yml +++ /dev/null @@ -1,27 +0,0 @@ -# -# Copyright © 2016-2021 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: v1 -kind: ConfigMap -metadata: - name: tb-node-cache-config - namespace: thingsboard - labels: - name: tb-node-cache-config -data: - CACHE_TYPE: redis - REDIS_CONNECTION_TYPE: cluster - REDIS_NODES: tb-redis:6379 \ No newline at end of file diff --git a/k8s/high-availability/thirdparty.yml b/k8s/high-availability/thirdparty.yml deleted file mode 100644 index 61f1fa73ce..0000000000 --- a/k8s/high-availability/thirdparty.yml +++ /dev/null @@ -1,301 +0,0 @@ -# -# Copyright © 2016-2021 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: 100Mi ---- -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 -spec: - serviceName: "tb-kafka" - replicas: 3 - podManagementPolicy: Parallel - 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 - name: kafka-int - readinessProbe: - periodSeconds: 5 - timeoutSeconds: 5 - tcpSocket: - port: 9092 - initialDelaySeconds: 60 - livenessProbe: - timeoutSeconds: 5 - periodSeconds: 5 - tcpSocket: - port: 9092 - initialDelaySeconds: 80 - env: - - name: BROKER_ID_COMMAND - value: "hostname | cut -d'-' -f3" - - name: KAFKA_ZOOKEEPER_CONNECT - value: "zookeeper:2181" - - name: KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS - value: "60000" - - name: KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE - value: "true" - - name: KAFKA_LISTENERS - value: "INSIDE://:9092" - - name: KAFKA_ADVERTISED_LISTENERS - value: "INSIDE://:9092" - - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP - value: "INSIDE:PLAINTEXT" - - name: KAFKA_INTER_BROKER_LISTENER_NAME - value: "INSIDE" - - name: KAFKA_CONTROLLER_SHUTDOWN_ENABLE - value: "true" - - 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: 1Gi ---- -apiVersion: v1 -kind: Service -metadata: - name: tb-kafka - namespace: thingsboard -spec: - type: ClusterIP - ports: - - port: 9092 - targetPort: 9092 - name: kafka-int - selector: - app: tb-kafka ---- -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: 100Mi ---- -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/k8s/k8s-delete-all.sh b/k8s/k8s-delete-all.sh deleted file mode 100755 index 75dbd6fa60..0000000000 --- a/k8s/k8s-delete-all.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# -# Copyright © 2016-2021 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. -# - -kubectl -n thingsboard delete svc,sts,deploy,cm,po,ing --all - -kubectl -n thingsboard get pvc --no-headers=true | awk '//{print $1}' | xargs kubectl -n thingsboard delete --ignore-not-found=true pvc \ No newline at end of file diff --git a/k8s/k8s-delete-resources.sh b/k8s/k8s-delete-resources.sh deleted file mode 100755 index 3dea9a465d..0000000000 --- a/k8s/k8s-delete-resources.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -# -# Copyright © 2016-2021 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 - -source .env - -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard - -kubectl delete -f common/thingsboard.yml -kubectl delete -f common/tb-node.yml diff --git a/k8s/k8s-delete-thirdparty.sh b/k8s/k8s-delete-thirdparty.sh deleted file mode 100755 index fc5fd3ce16..0000000000 --- a/k8s/k8s-delete-thirdparty.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# -# Copyright © 2016-2021 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 - -source .env - -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard -kubectl delete -f $DEPLOYMENT_TYPE/thirdparty.yml diff --git a/k8s/k8s-deploy-resources.sh b/k8s/k8s-deploy-resources.sh deleted file mode 100755 index 899b2e399d..0000000000 --- a/k8s/k8s-deploy-resources.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# -# Copyright © 2016-2021 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 - -source .env - -kubectl apply -f common/tb-namespace.yml -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard -kubectl apply -f common/tb-node-configmap.yml -kubectl apply -f common/tb-mqtt-transport-configmap.yml -kubectl apply -f common/tb-http-transport-configmap.yml -kubectl apply -f common/tb-coap-transport-configmap.yml -kubectl apply -f common/thingsboard.yml -kubectl apply -f $DEPLOYMENT_TYPE/tb-node-cache-configmap.yml -kubectl apply -f common/tb-node.yml diff --git a/k8s/k8s-deploy-thirdparty.sh b/k8s/k8s-deploy-thirdparty.sh deleted file mode 100755 index 6fd94c3674..0000000000 --- a/k8s/k8s-deploy-thirdparty.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -# -# Copyright © 2016-2021 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 - -source .env - -kubectl apply -f common/tb-namespace.yml -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard - -kubectl apply -f $DEPLOYMENT_TYPE/thirdparty.yml - - -if [ "$DEPLOYMENT_TYPE" == "high-availability" ]; then - echo -n "waiting for all redis pods to be ready"; - while [[ $(kubectl get pods tb-redis-5 -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}' 2>/dev/null) != "True" ]]; - do - echo -n "." && sleep 5; - done - - if [[ $(kubectl exec -it tb-redis-0 -- redis-cli cluster info 2>&1 | head -n 1) =~ "cluster_state:ok" ]] - then - echo "redis cluster is already configured" - else - echo "starting redis cluster" - redisNodes=$(kubectl get pods -l app=tb-redis -o jsonpath='{range.items[*]}{.status.podIP}:6379 ') - kubectl exec -it tb-redis-0 -- redis-cli --cluster create --cluster-replicas 1 $redisNodes - fi - -fi - diff --git a/k8s/k8s-install-tb.sh b/k8s/k8s-install-tb.sh deleted file mode 100755 index 3dd714bac9..0000000000 --- a/k8s/k8s-install-tb.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash -# -# Copyright © 2016-2021 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. -# - -function installTb() { - - loadDemo=$1 - - kubectl apply -f common/tb-node-configmap.yml - kubectl apply -f common/database-setup.yml && - kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s && - kubectl exec tb-db-setup -- sh -c 'export INSTALL_TB=true; export LOAD_DEMO='"$loadDemo"'; start-tb-node.sh; touch /tmp/install-finished;' - - kubectl delete pod tb-db-setup - -} - -function installPostgres() { - - kubectl apply -f common/postgres.yml - kubectl apply -f common/tb-node-postgres-configmap.yml - - kubectl rollout status deployment/postgres -} - -function installHybrid() { - - kubectl apply -f common/postgres.yml - kubectl apply -f common/cassandra.yml - kubectl apply -f common/tb-node-hybrid-configmap.yml - - kubectl rollout status deployment/postgres - kubectl rollout status statefulset/cassandra - - kubectl exec -it cassandra-0 -- bash -c "cqlsh -e \ - \"CREATE KEYSPACE IF NOT EXISTS thingsboard \ - WITH replication = { \ - 'class' : 'SimpleStrategy', \ - 'replication_factor' : 1 \ - };\"" -} - -while [[ $# -gt 0 ]] -do -key="$1" - -case $key in - --loadDemo) - LOAD_DEMO=true - shift # past argument - ;; - *) - # unknown option - ;; -esac -shift # past argument or value -done - -if [ "$LOAD_DEMO" == "true" ]; then - loadDemo=true -else - loadDemo=false -fi - -source .env - -kubectl apply -f common/tb-namespace.yml -kubectl config set-context $(kubectl config current-context) --namespace=thingsboard - -case $DEPLOYMENT_TYPE in - basic) - ;; - high-availability) - ;; - *) - echo "Unknown DEPLOYMENT_TYPE value specified: '${DEPLOYMENT_TYPE}'. Should be either basic or high-availability." >&2 - exit 1 -esac - -case $DATABASE in - postgres) - installPostgres - installTb ${loadDemo} - ;; - hybrid) - installHybrid - installTb ${loadDemo} - ;; - *) - echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or hybrid." >&2 - exit 1 -esac - diff --git a/k8s/k8s-upgrade-tb.sh b/k8s/k8s-upgrade-tb.sh deleted file mode 100755 index 5e81e500a3..0000000000 --- a/k8s/k8s-upgrade-tb.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# -# Copyright © 2016-2021 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. -# - -for i in "$@" -do -case $i in - --fromVersion=*) - FROM_VERSION="${i#*=}" - shift - ;; - *) - # unknown option - ;; -esac -done - -if [[ -z "${FROM_VERSION// }" ]]; then - echo "--fromVersion parameter is invalid or unspecified!" - echo "Usage: k8s-upgrade-tb.sh --fromVersion={VERSION}" - exit 1 -else - fromVersion="${FROM_VERSION// }" -fi - -kubectl apply -f common/database-setup.yml && -kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s && -kubectl exec tb-db-setup -- sh -c 'export UPGRADE_TB=true; export FROM_VERSION='"$fromVersion"'; start-tb-node.sh; touch /tmp/install-finished;' - -kubectl delete pod tb-db-setup