19 changed files with 1559 additions and 7 deletions
@ -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 |
||||
@ -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. |
||||
@ -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 |
||||
|
--- |
||||
@ -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 |
||||
@ -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 |
||||
@ -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 |
||||
@ -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 |
||||
@ -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 |
||||
@ -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 |
||||
@ -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 |
||||
|
--- |
||||
@ -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> |
||||
@ -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> |
||||
@ -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> |
||||
@ -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 |
||||
@ -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" |
||||
@ -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> |
||||
@ -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 |
||||
@ -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…
Reference in new issue