K8S scripts moved to separate repository
This commit is contained in:
		
							parent
							
								
									397a97ce7e
								
							
						
					
					
						commit
						f2974532c6
					
				
							
								
								
									
										8
									
								
								k8s/.env
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								k8s/.env
									
									
									
									
									
								
							@ -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
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										130
									
								
								k8s/README.md
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								k8s/README.md
									
									
									
									
									
								
							@ -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.
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
---
 | 
			
		||||
@ -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
 | 
			
		||||
---
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
---
 | 
			
		||||
@ -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: |
 | 
			
		||||
      <!DOCTYPE configuration>
 | 
			
		||||
      <configuration scan="true" scanPeriod="10 seconds">
 | 
			
		||||
 | 
			
		||||
          <appender name="fileLogAppender"
 | 
			
		||||
                    class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
			
		||||
              <file>/var/log/tb-coap-transport/${TB_SERVICE_ID}/tb-coap-transport.log</file>
 | 
			
		||||
              <rollingPolicy
 | 
			
		||||
                      class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
			
		||||
                  <fileNamePattern>/var/log/tb-coap-transport/${TB_SERVICE_ID}/tb-coap-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
 | 
			
		||||
                  <maxFileSize>100MB</maxFileSize>
 | 
			
		||||
                  <maxHistory>30</maxHistory>
 | 
			
		||||
                  <totalSizeCap>3GB</totalSizeCap>
 | 
			
		||||
              </rollingPolicy>
 | 
			
		||||
              <encoder>
 | 
			
		||||
                  <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
			
		||||
              </encoder>
 | 
			
		||||
          </appender>
 | 
			
		||||
 | 
			
		||||
          <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 | 
			
		||||
              <encoder>
 | 
			
		||||
                  <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
			
		||||
              </encoder>
 | 
			
		||||
          </appender>
 | 
			
		||||
 | 
			
		||||
          <logger name="org.thingsboard.server" level="INFO" />
 | 
			
		||||
 | 
			
		||||
          <root level="INFO">
 | 
			
		||||
              <appender-ref ref="fileLogAppender"/>
 | 
			
		||||
              <appender-ref ref="STDOUT"/>
 | 
			
		||||
          </root>
 | 
			
		||||
 | 
			
		||||
      </configuration>
 | 
			
		||||
@ -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: |
 | 
			
		||||
      <!DOCTYPE configuration>
 | 
			
		||||
      <configuration scan="true" scanPeriod="10 seconds">
 | 
			
		||||
 | 
			
		||||
          <appender name="fileLogAppender"
 | 
			
		||||
                    class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
			
		||||
              <file>/var/log/tb-http-transport/${TB_SERVICE_ID}/tb-http-transport.log</file>
 | 
			
		||||
              <rollingPolicy
 | 
			
		||||
                      class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
			
		||||
                  <fileNamePattern>/var/log/tb-http-transport/${TB_SERVICE_ID}/tb-http-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
 | 
			
		||||
                  <maxFileSize>100MB</maxFileSize>
 | 
			
		||||
                  <maxHistory>30</maxHistory>
 | 
			
		||||
                  <totalSizeCap>3GB</totalSizeCap>
 | 
			
		||||
              </rollingPolicy>
 | 
			
		||||
              <encoder>
 | 
			
		||||
                  <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
			
		||||
              </encoder>
 | 
			
		||||
          </appender>
 | 
			
		||||
 | 
			
		||||
          <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 | 
			
		||||
              <encoder>
 | 
			
		||||
                  <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
			
		||||
              </encoder>
 | 
			
		||||
          </appender>
 | 
			
		||||
 | 
			
		||||
          <logger name="org.thingsboard.server" level="INFO" />
 | 
			
		||||
 | 
			
		||||
          <root level="INFO">
 | 
			
		||||
              <appender-ref ref="fileLogAppender"/>
 | 
			
		||||
              <appender-ref ref="STDOUT"/>
 | 
			
		||||
          </root>
 | 
			
		||||
 | 
			
		||||
      </configuration>
 | 
			
		||||
@ -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: |
 | 
			
		||||
      <!DOCTYPE configuration>
 | 
			
		||||
      <configuration scan="true" scanPeriod="10 seconds">
 | 
			
		||||
 | 
			
		||||
          <appender name="fileLogAppender"
 | 
			
		||||
                    class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
			
		||||
              <file>/var/log/tb-mqtt-transport/${TB_SERVICE_ID}/tb-mqtt-transport.log</file>
 | 
			
		||||
              <rollingPolicy
 | 
			
		||||
                      class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
			
		||||
                  <fileNamePattern>/var/log/tb-mqtt-transport/${TB_SERVICE_ID}/tb-mqtt-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
 | 
			
		||||
                  <maxFileSize>100MB</maxFileSize>
 | 
			
		||||
                  <maxHistory>30</maxHistory>
 | 
			
		||||
                  <totalSizeCap>3GB</totalSizeCap>
 | 
			
		||||
              </rollingPolicy>
 | 
			
		||||
              <encoder>
 | 
			
		||||
                  <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
			
		||||
              </encoder>
 | 
			
		||||
          </appender>
 | 
			
		||||
 | 
			
		||||
          <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 | 
			
		||||
              <encoder>
 | 
			
		||||
                  <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
			
		||||
              </encoder>
 | 
			
		||||
          </appender>
 | 
			
		||||
 | 
			
		||||
          <logger name="org.thingsboard.server" level="INFO" />
 | 
			
		||||
 | 
			
		||||
          <root level="INFO">
 | 
			
		||||
              <appender-ref ref="fileLogAppender"/>
 | 
			
		||||
              <appender-ref ref="STDOUT"/>
 | 
			
		||||
          </root>
 | 
			
		||||
 | 
			
		||||
      </configuration>
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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: |
 | 
			
		||||
      <!DOCTYPE configuration>
 | 
			
		||||
      <configuration scan="true" scanPeriod="10 seconds">
 | 
			
		||||
 | 
			
		||||
          <appender name="fileLogAppender"
 | 
			
		||||
                    class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
			
		||||
              <file>/var/log/thingsboard/${TB_SERVICE_ID}/thingsboard.log</file>
 | 
			
		||||
              <rollingPolicy
 | 
			
		||||
                      class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
			
		||||
                  <fileNamePattern>/var/log/thingsboard/${TB_SERVICE_ID}/thingsboard.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
 | 
			
		||||
                  <maxFileSize>100MB</maxFileSize>
 | 
			
		||||
                  <maxHistory>30</maxHistory>
 | 
			
		||||
                  <totalSizeCap>3GB</totalSizeCap>
 | 
			
		||||
              </rollingPolicy>
 | 
			
		||||
              <encoder>
 | 
			
		||||
                  <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
			
		||||
              </encoder>
 | 
			
		||||
          </appender>
 | 
			
		||||
 | 
			
		||||
          <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
 | 
			
		||||
              <encoder>
 | 
			
		||||
                  <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
			
		||||
              </encoder>
 | 
			
		||||
          </appender>
 | 
			
		||||
 | 
			
		||||
          <logger name="org.thingsboard.server" level="INFO" />
 | 
			
		||||
          <logger name="com.google.common.util.concurrent.AggregateFuture" level="OFF" />
 | 
			
		||||
 | 
			
		||||
          <root level="INFO">
 | 
			
		||||
              <appender-ref ref="fileLogAppender"/>
 | 
			
		||||
              <appender-ref ref="STDOUT"/>
 | 
			
		||||
          </root>
 | 
			
		||||
 | 
			
		||||
      </configuration>
 | 
			
		||||
@ -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"
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
---
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user