Kubernetes resources for ThingsBoard Microservices.
This commit is contained in:
parent
17067442ce
commit
087d5f8293
5
k8s/.env
Normal file
5
k8s/.env
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
# Database used by ThingsBoard, can be either postgres (PostgreSQL) or cassandra (Cassandra).
|
||||||
|
# According to the database type corresponding kubernetes resources will be deployed (see postgres.yml, cassandra.yml for details).
|
||||||
|
|
||||||
|
DATABASE=postgres
|
||||||
100
k8s/README.md
Normal file
100
k8s/README.md
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
# Kubernetes resources configuration for ThingsBoard Microservices
|
||||||
|
|
||||||
|
This folder containing scripts and Kubernetes resources configurations to run ThingsBoard in Microservices mode.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
ThingsBoard Microservices are running on 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 already have a cluster, 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/).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Before performing initial installation you can configure the type of database to be used with ThingsBoard.
|
||||||
|
In order to set database type change the value of `DATABASE` variable in `.env` file to one of the following:
|
||||||
|
|
||||||
|
- `postgres` - use PostgreSQL database;
|
||||||
|
- `cassandra` - use Cassandra database;
|
||||||
|
|
||||||
|
**NOTE**: According to the database type corresponding kubernetes resources will be deployed (see `postgres.yml`, `cassandra.yml` for details).
|
||||||
|
|
||||||
|
Execute the following command to run installation:
|
||||||
|
|
||||||
|
`
|
||||||
|
$ ./k8s-install-tb.sh --loadDemo
|
||||||
|
`
|
||||||
|
|
||||||
|
Where:
|
||||||
|
|
||||||
|
- `--loadDemo` - optional argument. Whether to load additional demo data.
|
||||||
|
|
||||||
|
## Running
|
||||||
|
|
||||||
|
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 you browser (for ex. `http://192.168.99.101`).
|
||||||
|
You should see 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 list of the running tb-node pods:
|
||||||
|
|
||||||
|
`
|
||||||
|
$ kubectl get pods -l app=tb-node
|
||||||
|
`
|
||||||
|
|
||||||
|
2) Fetch logs of 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 deployed microservices:
|
||||||
|
|
||||||
|
`
|
||||||
|
$ ./k8s-delete-resources.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.
|
||||||
164
k8s/cassandra.yml
Normal file
164
k8s/cassandra.yml
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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: "DC1-Thingsboard-Cluster"
|
||||||
|
- 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
|
||||||
|
---
|
||||||
43
k8s/database-setup.yml
Normal file
43
k8s/database-setup.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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 /install-finished ]; do sleep 2; done;']
|
||||||
|
restartPolicy: Never
|
||||||
18
k8s/k8s-delete-all.sh
Executable file
18
k8s/k8s-delete-all.sh
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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,pv,pvc,cm,po,ing --all --include-uninitialized
|
||||||
21
k8s/k8s-delete-resources.sh
Executable file
21
k8s/k8s-delete-resources.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright © 2016-2019 The Thingsboard Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard
|
||||||
|
kubectl delete -f thingsboard.yml
|
||||||
26
k8s/k8s-deploy-resources.sh
Executable file
26
k8s/k8s-deploy-resources.sh
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright © 2016-2019 The Thingsboard Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
kubectl apply -f tb-namespace.yml
|
||||||
|
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard
|
||||||
|
kubectl apply -f tb-node-configmap.yml
|
||||||
|
kubectl apply -f tb-mqtt-transport-configmap.yml
|
||||||
|
kubectl apply -f tb-http-transport-configmap.yml
|
||||||
|
kubectl apply -f tb-coap-transport-configmap.yml
|
||||||
|
kubectl apply -f thingsboard.yml
|
||||||
93
k8s/k8s-install-tb.sh
Executable file
93
k8s/k8s-install-tb.sh
Executable file
@ -0,0 +1,93 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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 tb-node-configmap.yml
|
||||||
|
kubectl apply -f 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 /install-finished;'
|
||||||
|
|
||||||
|
kubectl delete pod tb-db-setup
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function installPostgres() {
|
||||||
|
|
||||||
|
kubectl apply -f postgres.yml
|
||||||
|
kubectl apply -f tb-node-postgres-configmap.yml
|
||||||
|
|
||||||
|
kubectl rollout status deployment/postgres
|
||||||
|
}
|
||||||
|
|
||||||
|
function installCassandra() {
|
||||||
|
|
||||||
|
kubectl apply -f cassandra.yml
|
||||||
|
kubectl apply -f tb-node-cassandra-configmap.yml
|
||||||
|
|
||||||
|
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 tb-namespace.yml
|
||||||
|
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard
|
||||||
|
|
||||||
|
case $DATABASE in
|
||||||
|
postgres)
|
||||||
|
installPostgres
|
||||||
|
installTb ${loadDemo}
|
||||||
|
;;
|
||||||
|
cassandra)
|
||||||
|
installCassandra
|
||||||
|
installTb ${loadDemo}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or cassandra." >&2
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
43
k8s/k8s-upgrade-tb.sh
Executable file
43
k8s/k8s-upgrade-tb.sh
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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 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 /install-finished;'
|
||||||
|
|
||||||
|
kubectl delete pod tb-db-setup
|
||||||
95
k8s/postgres.yml
Normal file
95
k8s/postgres.yml
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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: extensions/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: postgres
|
||||||
|
namespace: thingsboard
|
||||||
|
labels:
|
||||||
|
app: postgres
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: postgres
|
||||||
|
spec:
|
||||||
|
volumes:
|
||||||
|
- name: postgres-data
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: postgres-pv-claim
|
||||||
|
containers:
|
||||||
|
- name: postgres
|
||||||
|
imagePullPolicy: Always
|
||||||
|
image: postgres:9.6
|
||||||
|
ports:
|
||||||
|
- containerPort: 5432
|
||||||
|
name: postgres
|
||||||
|
env:
|
||||||
|
- name: POSTGRES_DB
|
||||||
|
value: "thingsboard"
|
||||||
|
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
|
||||||
|
---
|
||||||
65
k8s/tb-coap-transport-configmap.yml
Normal file
65
k8s/tb-coap-transport-configmap.yml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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 -Xloggc:/var/log/tb-coap-transport/${TB_HOST}/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-coap-transport/${TB_HOST}/heapdump.bin -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -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_HOST}/tb-coap-transport.log</file>
|
||||||
|
<rollingPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>/var/log/tb-coap-transport/${TB_HOST}/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>
|
||||||
65
k8s/tb-http-transport-configmap.yml
Normal file
65
k8s/tb-http-transport-configmap.yml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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 -Xloggc:/var/log/tb-http-transport/${TB_HOST}/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-http-transport/${TB_HOST}/heapdump.bin -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -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_HOST}/tb-http-transport.log</file>
|
||||||
|
<rollingPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>/var/log/tb-http-transport/${TB_HOST}/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>
|
||||||
65
k8s/tb-mqtt-transport-configmap.yml
Normal file
65
k8s/tb-mqtt-transport-configmap.yml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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 -Xloggc:/var/log/tb-mqtt-transport/${TB_HOST}/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-mqtt-transport/${TB_HOST}/heapdump.bin -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -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_HOST}/tb-mqtt-transport.log</file>
|
||||||
|
<rollingPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>/var/log/tb-mqtt-transport/${TB_HOST}/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>
|
||||||
22
k8s/tb-namespace.yml
Normal file
22
k8s/tb-namespace.yml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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
|
||||||
28
k8s/tb-node-cassandra-configmap.yml
Normal file
28
k8s/tb-node-cassandra-configmap.yml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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: cassandra
|
||||||
|
DATABASE_ENTITIES_TYPE: cassandra
|
||||||
|
CASSANDRA_URL: cassandra:9042
|
||||||
|
CASSANDRA_SOCKET_READ_TIMEOUT: "60000"
|
||||||
67
k8s/tb-node-configmap.yml
Normal file
67
k8s/tb-node-configmap.yml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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 -Xloggc:/var/log/thingsboard/${TB_HOST}/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/thingsboard/${TB_HOST}/heapdump.bin -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -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_HOST}/thingsboard.log</file>
|
||||||
|
<rollingPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>/var/log/thingsboard/${TB_HOST}/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>
|
||||||
31
k8s/tb-node-postgres-configmap.yml
Normal file
31
k8s/tb-node-postgres-configmap.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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
|
||||||
|
DATABASE_ENTITIES_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
|
||||||
608
k8s/thingsboard.yml
Normal file
608
k8s/thingsboard.yml
Normal file
@ -0,0 +1,608 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2019 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: extensions/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: zookeeper
|
||||||
|
namespace: thingsboard
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: zookeeper
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: server
|
||||||
|
imagePullPolicy: Always
|
||||||
|
image: zookeeper:3.5
|
||||||
|
ports:
|
||||||
|
- containerPort: 2181
|
||||||
|
readinessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 2181
|
||||||
|
livenessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 2181
|
||||||
|
env:
|
||||||
|
- name: ZOO_MY_ID
|
||||||
|
value: "1"
|
||||||
|
- name: ZOO_SERVERS
|
||||||
|
value: "server.1=0.0.0.0:2888:3888;0.0.0.0:2181"
|
||||||
|
restartPolicy: Always
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: zookeeper
|
||||||
|
namespace: thingsboard
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: zookeeper
|
||||||
|
ports:
|
||||||
|
- name: zk-port
|
||||||
|
port: 2181
|
||||||
|
---
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: tb-kafka
|
||||||
|
namespace: thingsboard
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tb-kafka
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: server
|
||||||
|
imagePullPolicy: Always
|
||||||
|
image: wurstmeister/kafka
|
||||||
|
ports:
|
||||||
|
- containerPort: 9092
|
||||||
|
readinessProbe:
|
||||||
|
periodSeconds: 20
|
||||||
|
tcpSocket:
|
||||||
|
port: 9092
|
||||||
|
livenessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 9092
|
||||||
|
env:
|
||||||
|
- name: KAFKA_ZOOKEEPER_CONNECT
|
||||||
|
value: "zookeeper:2181"
|
||||||
|
- name: KAFKA_LISTENERS
|
||||||
|
value: "INSIDE://:9093,OUTSIDE://:9092"
|
||||||
|
- name: KAFKA_ADVERTISED_LISTENERS
|
||||||
|
value: "INSIDE://:9093,OUTSIDE://tb-kafka:9092"
|
||||||
|
- name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
|
||||||
|
value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"
|
||||||
|
- name: KAFKA_INTER_BROKER_LISTENER_NAME
|
||||||
|
value: "INSIDE"
|
||||||
|
- name: KAFKA_CREATE_TOPICS
|
||||||
|
value: "js.eval.requests:100:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb.transport.api.requests:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb.rule-engine:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600"
|
||||||
|
- name: KAFKA_AUTO_CREATE_TOPICS_ENABLE
|
||||||
|
value: "false"
|
||||||
|
- name: KAFKA_LOG_RETENTION_BYTES
|
||||||
|
value: "1073741824"
|
||||||
|
- name: KAFKA_LOG_SEGMENT_BYTES
|
||||||
|
value: "268435456"
|
||||||
|
- name: KAFKA_LOG_RETENTION_MS
|
||||||
|
value: "300000"
|
||||||
|
- name: KAFKA_LOG_CLEANUP_POLICY
|
||||||
|
value: "delete"
|
||||||
|
restartPolicy: Always
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: tb-kafka
|
||||||
|
namespace: thingsboard
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: tb-kafka
|
||||||
|
ports:
|
||||||
|
- name: tb-kafka-port
|
||||||
|
port: 9092
|
||||||
|
---
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: tb-redis
|
||||||
|
namespace: thingsboard
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: tb-redis
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: server
|
||||||
|
imagePullPolicy: Always
|
||||||
|
image: redis:4.0
|
||||||
|
ports:
|
||||||
|
- containerPort: 6379
|
||||||
|
readinessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 6379
|
||||||
|
livenessProbe:
|
||||||
|
periodSeconds: 5
|
||||||
|
tcpSocket:
|
||||||
|
port: 6379
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: redis-data
|
||||||
|
volumes:
|
||||||
|
- name: redis-data
|
||||||
|
emptyDir: {}
|
||||||
|
restartPolicy: Always
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: tb-redis
|
||||||
|
namespace: thingsboard
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: tb-redis
|
||||||
|
ports:
|
||||||
|
- name: tb-redis-port
|
||||||
|
port: 6379
|
||||||
|
---
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
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: extensions/v1beta1
|
||||||
|
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: RPC_HOST
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: status.podIP
|
||||||
|
- name: CLUSTER_NODE_ID
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: TB_HOST
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: ZOOKEEPER_ENABLED
|
||||||
|
value: "true"
|
||||||
|
- name: ZOOKEEPER_URL
|
||||||
|
value: "zookeeper:2181"
|
||||||
|
- name: TB_KAFKA_SERVERS
|
||||||
|
value: "tb-kafka:9092"
|
||||||
|
- name: JS_EVALUATOR
|
||||||
|
value: "remote"
|
||||||
|
- name: TRANSPORT_TYPE
|
||||||
|
value: "remote"
|
||||||
|
- name: CACHE_TYPE
|
||||||
|
value: "redis"
|
||||||
|
- name: REDIS_HOST
|
||||||
|
value: "tb-redis"
|
||||||
|
- name: HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE
|
||||||
|
value: "false"
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: tb-node-db-config
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: tb-node-config
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /login
|
||||||
|
port: http
|
||||||
|
initialDelaySeconds: 120
|
||||||
|
timeoutSeconds: 10
|
||||||
|
restartPolicy: Always
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: tb-node
|
||||||
|
namespace: thingsboard
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: tb-node
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
name: http
|
||||||
|
---
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
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: CLUSTER_NODE_ID
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: TB_HOST
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: MQTT_BIND_ADDRESS
|
||||||
|
value: "0.0.0.0"
|
||||||
|
- name: MQTT_BIND_PORT
|
||||||
|
value: "1883"
|
||||||
|
- name: MQTT_TIMEOUT
|
||||||
|
value: "10000"
|
||||||
|
- name: TB_KAFKA_SERVERS
|
||||||
|
value: "tb-kafka:9092"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: tb-mqtt-transport-config
|
||||||
|
readinessProbe:
|
||||||
|
periodSeconds: 20
|
||||||
|
tcpSocket:
|
||||||
|
port: 1883
|
||||||
|
livenessProbe:
|
||||||
|
periodSeconds: 20
|
||||||
|
tcpSocket:
|
||||||
|
port: 1883
|
||||||
|
restartPolicy: Always
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
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: extensions/v1beta1
|
||||||
|
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: CLUSTER_NODE_ID
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: TB_HOST
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: HTTP_BIND_ADDRESS
|
||||||
|
value: "0.0.0.0"
|
||||||
|
- name: HTTP_BIND_PORT
|
||||||
|
value: "8080"
|
||||||
|
- name: HTTP_REQUEST_TIMEOUT
|
||||||
|
value: "60000"
|
||||||
|
- name: TB_KAFKA_SERVERS
|
||||||
|
value: "tb-kafka:9092"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: tb-http-transport-config
|
||||||
|
readinessProbe:
|
||||||
|
periodSeconds: 20
|
||||||
|
tcpSocket:
|
||||||
|
port: 8080
|
||||||
|
livenessProbe:
|
||||||
|
periodSeconds: 20
|
||||||
|
tcpSocket:
|
||||||
|
port: 8080
|
||||||
|
restartPolicy: Always
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: tb-http-transport
|
||||||
|
namespace: thingsboard
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: tb-http-transport
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
name: http
|
||||||
|
---
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
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: CLUSTER_NODE_ID
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: TB_HOST
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: COAP_BIND_ADDRESS
|
||||||
|
value: "0.0.0.0"
|
||||||
|
- name: COAP_BIND_PORT
|
||||||
|
value: "5683"
|
||||||
|
- name: COAP_TIMEOUT
|
||||||
|
value: "10000"
|
||||||
|
- name: TB_KAFKA_SERVERS
|
||||||
|
value: "tb-kafka:9092"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: tb-coap-transport-config
|
||||||
|
restartPolicy: Always
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
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: extensions/v1beta1
|
||||||
|
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: extensions/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: /static/rulenode/.*
|
||||||
|
backend:
|
||||||
|
serviceName: tb-node
|
||||||
|
servicePort: 8080
|
||||||
|
- path: /static/.*
|
||||||
|
backend:
|
||||||
|
serviceName: tb-web-ui
|
||||||
|
servicePort: 8080
|
||||||
|
- path: /index.html.*
|
||||||
|
backend:
|
||||||
|
serviceName: tb-web-ui
|
||||||
|
servicePort: 8080
|
||||||
|
- path: /
|
||||||
|
backend:
|
||||||
|
serviceName: tb-web-ui
|
||||||
|
servicePort: 8080
|
||||||
|
- path: /.*
|
||||||
|
backend:
|
||||||
|
serviceName: tb-node
|
||||||
|
servicePort: 8080
|
||||||
|
---
|
||||||
Loading…
x
Reference in New Issue
Block a user