Commit 087d5f829343b18fc325c3c942e2076d7aebefd1
1 parent
17067442
Kubernetes resources for ThingsBoard Microservices.
Showing
18 changed files
with
1559 additions
and
0 deletions
k8s/.env
0 → 100644
k8s/README.md
0 → 100644
1 | +# Kubernetes resources configuration for ThingsBoard Microservices | |
2 | + | |
3 | +This folder containing scripts and Kubernetes resources configurations to run ThingsBoard in Microservices mode. | |
4 | + | |
5 | +## Prerequisites | |
6 | + | |
7 | +ThingsBoard Microservices are running on Kubernetes cluster. | |
8 | +You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. | |
9 | +If you do not already have a cluster, you can create one by using [Minikube](https://kubernetes.io/docs/setup/minikube), | |
10 | +or you can choose any other available [Kubernetes cluster deployment solutions](https://kubernetes.io/docs/setup/pick-right-solution/). | |
11 | + | |
12 | +## Installation | |
13 | + | |
14 | +Before performing initial installation you can configure the type of database to be used with ThingsBoard. | |
15 | +In order to set database type change the value of `DATABASE` variable in `.env` file to one of the following: | |
16 | + | |
17 | +- `postgres` - use PostgreSQL database; | |
18 | +- `cassandra` - use Cassandra database; | |
19 | + | |
20 | +**NOTE**: According to the database type corresponding kubernetes resources will be deployed (see `postgres.yml`, `cassandra.yml` for details). | |
21 | + | |
22 | +Execute the following command to run installation: | |
23 | + | |
24 | +` | |
25 | +$ ./k8s-install-tb.sh --loadDemo | |
26 | +` | |
27 | + | |
28 | +Where: | |
29 | + | |
30 | +- `--loadDemo` - optional argument. Whether to load additional demo data. | |
31 | + | |
32 | +## Running | |
33 | + | |
34 | +Execute the following command to deploy resources: | |
35 | + | |
36 | +` | |
37 | +$ ./k8s-deploy-resources.sh | |
38 | +` | |
39 | + | |
40 | +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`). | |
41 | +You should see ThingsBoard login page. | |
42 | + | |
43 | +Use the following default credentials: | |
44 | + | |
45 | +- **System Administrator**: sysadmin@thingsboard.org / sysadmin | |
46 | + | |
47 | +If you installed DataBase with demo data (using `--loadDemo` flag) you can also use the following credentials: | |
48 | + | |
49 | +- **Tenant Administrator**: tenant@thingsboard.org / tenant | |
50 | +- **Customer User**: customer@thingsboard.org / customer | |
51 | + | |
52 | +In case of any issues you can examine service logs for errors. | |
53 | +For example to see ThingsBoard node logs execute the following commands: | |
54 | + | |
55 | +1) Get list of the running tb-node pods: | |
56 | + | |
57 | +` | |
58 | +$ kubectl get pods -l app=tb-node | |
59 | +` | |
60 | + | |
61 | +2) Fetch logs of tb-node pod: | |
62 | + | |
63 | +` | |
64 | +$ kubectl logs -f [tb-node-pod-name] | |
65 | +` | |
66 | + | |
67 | +Where: | |
68 | + | |
69 | +- `tb-node-pod-name` - tb-node pod name obtained from the list of the running tb-node pods. | |
70 | + | |
71 | +Or use `kubectl get pods` to see the state of all the pods. | |
72 | +Or use `kubectl get services` to see the state of all the services. | |
73 | +Or use `kubectl get deployments` to see the state of all the deployments. | |
74 | +See [kubectl Cheat Sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/) command reference for details. | |
75 | + | |
76 | +Execute the following command to delete all deployed microservices: | |
77 | + | |
78 | +` | |
79 | +$ ./k8s-delete-resources.sh | |
80 | +` | |
81 | + | |
82 | +Execute the following command to delete all resources (including database): | |
83 | + | |
84 | +` | |
85 | +$ ./k8s-delete-all.sh | |
86 | +` | |
87 | + | |
88 | +## Upgrading | |
89 | + | |
90 | +In case when database upgrade is needed, execute the following commands: | |
91 | + | |
92 | +``` | |
93 | +$ ./k8s-delete-resources.sh | |
94 | +$ ./k8s-upgrade-tb.sh --fromVersion=[FROM_VERSION] | |
95 | +$ ./k8s-deploy-resources.sh | |
96 | +``` | |
97 | + | |
98 | +Where: | |
99 | + | |
100 | +- `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. | ... | ... |
k8s/cassandra.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: storage.k8s.io/v1 | |
18 | +kind: StorageClass | |
19 | +metadata: | |
20 | + name: fast | |
21 | + namespace: thingsboard | |
22 | +provisioner: k8s.io/minikube-hostpath | |
23 | +parameters: | |
24 | + type: pd-ssd | |
25 | +--- | |
26 | +apiVersion: v1 | |
27 | +kind: ConfigMap | |
28 | +metadata: | |
29 | + name: cassandra-probe-config | |
30 | + namespace: thingsboard | |
31 | + labels: | |
32 | + name: cassandra-probe-config | |
33 | +data: | |
34 | + probe: | | |
35 | + if [[ $(nodetool status | grep $POD_IP) == *"UN"* ]]; then | |
36 | + if [[ $DEBUG ]]; then | |
37 | + echo "UN"; | |
38 | + fi | |
39 | + exit 0; | |
40 | + else | |
41 | + if [[ $DEBUG ]]; then | |
42 | + echo "Not Up"; | |
43 | + fi | |
44 | + exit 1; | |
45 | + fi | |
46 | +--- | |
47 | +apiVersion: apps/v1 | |
48 | +kind: StatefulSet | |
49 | +metadata: | |
50 | + name: cassandra | |
51 | + namespace: thingsboard | |
52 | + labels: | |
53 | + app: cassandra | |
54 | +spec: | |
55 | + serviceName: cassandra | |
56 | + replicas: 1 | |
57 | + selector: | |
58 | + matchLabels: | |
59 | + app: cassandra | |
60 | + template: | |
61 | + metadata: | |
62 | + labels: | |
63 | + app: cassandra | |
64 | + spec: | |
65 | + volumes: | |
66 | + - name: cassandra-probe-config | |
67 | + configMap: | |
68 | + name: cassandra-probe-config | |
69 | + items: | |
70 | + - key: probe | |
71 | + path: ready-probe.sh | |
72 | + mode: 0777 | |
73 | + terminationGracePeriodSeconds: 1800 | |
74 | + containers: | |
75 | + - name: cassandra | |
76 | + image: cassandra:3.11.3 | |
77 | + imagePullPolicy: Always | |
78 | + ports: | |
79 | + - containerPort: 7000 | |
80 | + name: intra-node | |
81 | + - containerPort: 7001 | |
82 | + name: tls-intra-node | |
83 | + - containerPort: 7199 | |
84 | + name: jmx | |
85 | + - containerPort: 9042 | |
86 | + name: cql | |
87 | + - containerPort: 9160 | |
88 | + name: thrift | |
89 | + resources: | |
90 | + limits: | |
91 | + cpu: "1000m" | |
92 | + memory: 2Gi | |
93 | + requests: | |
94 | + cpu: "1000m" | |
95 | + memory: 2Gi | |
96 | + securityContext: | |
97 | + capabilities: | |
98 | + add: | |
99 | + - IPC_LOCK | |
100 | + lifecycle: | |
101 | + preStop: | |
102 | + exec: | |
103 | + command: | |
104 | + - /bin/sh | |
105 | + - -c | |
106 | + - nodetool drain | |
107 | + env: | |
108 | + - name: CASSANDRA_SEEDS | |
109 | + value: "cassandra-0.cassandra.thingsboard.svc.cluster.local" | |
110 | + - name: MAX_HEAP_SIZE | |
111 | + value: 1024M | |
112 | + - name: HEAP_NEWSIZE | |
113 | + value: 256M | |
114 | + - name: CASSANDRA_CLUSTER_NAME | |
115 | + value: "Thingsboard Cluster" | |
116 | + - name: CASSANDRA_DC | |
117 | + value: "DC1-Thingsboard-Cluster" | |
118 | + - name: CASSANDRA_RACK | |
119 | + value: "Rack-Thingsboard-Cluster" | |
120 | + - name: CASSANDRA_AUTO_BOOTSTRAP | |
121 | + value: "false" | |
122 | + - name: CASSANDRA_ENDPOINT_SNITCH | |
123 | + value: GossipingPropertyFileSnitch | |
124 | + - name: POD_IP | |
125 | + valueFrom: | |
126 | + fieldRef: | |
127 | + fieldPath: status.podIP | |
128 | + readinessProbe: | |
129 | + exec: | |
130 | + command: | |
131 | + - /bin/bash | |
132 | + - -c | |
133 | + - /probe/ready-probe.sh | |
134 | + initialDelaySeconds: 60 | |
135 | + timeoutSeconds: 5 | |
136 | + volumeMounts: | |
137 | + - name: cassandra-probe-config | |
138 | + mountPath: /probe | |
139 | + - name: cassandra-data | |
140 | + mountPath: /var/lib/cassandra | |
141 | + volumeClaimTemplates: | |
142 | + - metadata: | |
143 | + name: cassandra-data | |
144 | + spec: | |
145 | + accessModes: [ "ReadWriteOnce" ] | |
146 | + storageClassName: fast | |
147 | + resources: | |
148 | + requests: | |
149 | + storage: 1Gi | |
150 | +--- | |
151 | +apiVersion: v1 | |
152 | +kind: Service | |
153 | +metadata: | |
154 | + labels: | |
155 | + app: cassandra | |
156 | + name: cassandra | |
157 | + namespace: thingsboard | |
158 | +spec: | |
159 | + clusterIP: None | |
160 | + ports: | |
161 | + - port: 9042 | |
162 | + selector: | |
163 | + app: cassandra | |
164 | +--- | ... | ... |
k8s/database-setup.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: Pod | |
19 | +metadata: | |
20 | + name: tb-db-setup | |
21 | + namespace: thingsboard | |
22 | +spec: | |
23 | + volumes: | |
24 | + - name: tb-node-config | |
25 | + configMap: | |
26 | + name: tb-node-config | |
27 | + items: | |
28 | + - key: conf | |
29 | + path: thingsboard.conf | |
30 | + - key: logback | |
31 | + path: logback.xml | |
32 | + containers: | |
33 | + - name: tb-db-setup | |
34 | + imagePullPolicy: Always | |
35 | + image: thingsboard/tb-node:latest | |
36 | + envFrom: | |
37 | + - configMapRef: | |
38 | + name: tb-node-db-config | |
39 | + volumeMounts: | |
40 | + - mountPath: /config | |
41 | + name: tb-node-config | |
42 | + command: ['sh', '-c', 'while [ ! -f /install-finished ]; do sleep 2; done;'] | |
43 | + restartPolicy: Never | ... | ... |
k8s/k8s-delete-all.sh
0 → 100755
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2019 The Thingsboard Authors | |
4 | +# | |
5 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | +# you may not use this file except in compliance with the License. | |
7 | +# You may obtain a copy of the License at | |
8 | +# | |
9 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
10 | +# | |
11 | +# Unless required by applicable law or agreed to in writing, software | |
12 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | +# See the License for the specific language governing permissions and | |
15 | +# limitations under the License. | |
16 | +# | |
17 | + | |
18 | +kubectl -n thingsboard delete svc,sts,deploy,pv,pvc,cm,po,ing --all --include-uninitialized | ... | ... |
k8s/k8s-delete-resources.sh
0 → 100755
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2019 The Thingsboard Authors | |
4 | +# | |
5 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | +# you may not use this file except in compliance with the License. | |
7 | +# You may obtain a copy of the License at | |
8 | +# | |
9 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
10 | +# | |
11 | +# Unless required by applicable law or agreed to in writing, software | |
12 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | +# See the License for the specific language governing permissions and | |
15 | +# limitations under the License. | |
16 | +# | |
17 | + | |
18 | +set -e | |
19 | + | |
20 | +kubectl config set-context $(kubectl config current-context) --namespace=thingsboard | |
21 | +kubectl delete -f thingsboard.yml | ... | ... |
k8s/k8s-deploy-resources.sh
0 → 100755
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2019 The Thingsboard Authors | |
4 | +# | |
5 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | +# you may not use this file except in compliance with the License. | |
7 | +# You may obtain a copy of the License at | |
8 | +# | |
9 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
10 | +# | |
11 | +# Unless required by applicable law or agreed to in writing, software | |
12 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | +# See the License for the specific language governing permissions and | |
15 | +# limitations under the License. | |
16 | +# | |
17 | + | |
18 | +set -e | |
19 | + | |
20 | +kubectl apply -f tb-namespace.yml | |
21 | +kubectl config set-context $(kubectl config current-context) --namespace=thingsboard | |
22 | +kubectl apply -f tb-node-configmap.yml | |
23 | +kubectl apply -f tb-mqtt-transport-configmap.yml | |
24 | +kubectl apply -f tb-http-transport-configmap.yml | |
25 | +kubectl apply -f tb-coap-transport-configmap.yml | |
26 | +kubectl apply -f thingsboard.yml | ... | ... |
k8s/k8s-install-tb.sh
0 → 100755
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2019 The Thingsboard Authors | |
4 | +# | |
5 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | +# you may not use this file except in compliance with the License. | |
7 | +# You may obtain a copy of the License at | |
8 | +# | |
9 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
10 | +# | |
11 | +# Unless required by applicable law or agreed to in writing, software | |
12 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | +# See the License for the specific language governing permissions and | |
15 | +# limitations under the License. | |
16 | +# | |
17 | + | |
18 | +function installTb() { | |
19 | + | |
20 | + loadDemo=$1 | |
21 | + | |
22 | + kubectl apply -f tb-node-configmap.yml | |
23 | + kubectl apply -f database-setup.yml && | |
24 | + kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s && | |
25 | + kubectl exec tb-db-setup -- sh -c 'export INSTALL_TB=true; export LOAD_DEMO='"$loadDemo"'; start-tb-node.sh; touch /install-finished;' | |
26 | + | |
27 | + kubectl delete pod tb-db-setup | |
28 | + | |
29 | +} | |
30 | + | |
31 | +function installPostgres() { | |
32 | + | |
33 | + kubectl apply -f postgres.yml | |
34 | + kubectl apply -f tb-node-postgres-configmap.yml | |
35 | + | |
36 | + kubectl rollout status deployment/postgres | |
37 | +} | |
38 | + | |
39 | +function installCassandra() { | |
40 | + | |
41 | + kubectl apply -f cassandra.yml | |
42 | + kubectl apply -f tb-node-cassandra-configmap.yml | |
43 | + | |
44 | + kubectl rollout status statefulset/cassandra | |
45 | + | |
46 | + kubectl exec -it cassandra-0 -- bash -c "cqlsh -e \ | |
47 | + \"CREATE KEYSPACE IF NOT EXISTS thingsboard \ | |
48 | + WITH replication = { \ | |
49 | + 'class' : 'SimpleStrategy', \ | |
50 | + 'replication_factor' : 1 \ | |
51 | + };\"" | |
52 | +} | |
53 | + | |
54 | +while [[ $# -gt 0 ]] | |
55 | +do | |
56 | +key="$1" | |
57 | + | |
58 | +case $key in | |
59 | + --loadDemo) | |
60 | + LOAD_DEMO=true | |
61 | + shift # past argument | |
62 | + ;; | |
63 | + *) | |
64 | + # unknown option | |
65 | + ;; | |
66 | +esac | |
67 | +shift # past argument or value | |
68 | +done | |
69 | + | |
70 | +if [ "$LOAD_DEMO" == "true" ]; then | |
71 | + loadDemo=true | |
72 | +else | |
73 | + loadDemo=false | |
74 | +fi | |
75 | + | |
76 | +source .env | |
77 | + | |
78 | +kubectl apply -f tb-namespace.yml | |
79 | +kubectl config set-context $(kubectl config current-context) --namespace=thingsboard | |
80 | + | |
81 | +case $DATABASE in | |
82 | + postgres) | |
83 | + installPostgres | |
84 | + installTb ${loadDemo} | |
85 | + ;; | |
86 | + cassandra) | |
87 | + installCassandra | |
88 | + installTb ${loadDemo} | |
89 | + ;; | |
90 | + *) | |
91 | + echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or cassandra." >&2 | |
92 | + exit 1 | |
93 | +esac | ... | ... |
k8s/k8s-upgrade-tb.sh
0 → 100755
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2019 The Thingsboard Authors | |
4 | +# | |
5 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | +# you may not use this file except in compliance with the License. | |
7 | +# You may obtain a copy of the License at | |
8 | +# | |
9 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
10 | +# | |
11 | +# Unless required by applicable law or agreed to in writing, software | |
12 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | +# See the License for the specific language governing permissions and | |
15 | +# limitations under the License. | |
16 | +# | |
17 | + | |
18 | +for i in "$@" | |
19 | +do | |
20 | +case $i in | |
21 | + --fromVersion=*) | |
22 | + FROM_VERSION="${i#*=}" | |
23 | + shift | |
24 | + ;; | |
25 | + *) | |
26 | + # unknown option | |
27 | + ;; | |
28 | +esac | |
29 | +done | |
30 | + | |
31 | +if [[ -z "${FROM_VERSION// }" ]]; then | |
32 | + echo "--fromVersion parameter is invalid or unspecified!" | |
33 | + echo "Usage: k8s-upgrade-tb.sh --fromVersion={VERSION}" | |
34 | + exit 1 | |
35 | +else | |
36 | + fromVersion="${FROM_VERSION// }" | |
37 | +fi | |
38 | + | |
39 | +kubectl apply -f database-setup.yml && | |
40 | +kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s && | |
41 | +kubectl exec tb-db-setup -- sh -c 'export UPGRADE_TB=true; export FROM_VERSION='"$fromVersion"'; start-tb-node.sh; touch /install-finished;' | |
42 | + | |
43 | +kubectl delete pod tb-db-setup | ... | ... |
k8s/postgres.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: PersistentVolumeClaim | |
19 | +metadata: | |
20 | + name: postgres-pv-claim | |
21 | + namespace: thingsboard | |
22 | + labels: | |
23 | + app: postgres | |
24 | +spec: | |
25 | + accessModes: | |
26 | + - ReadWriteOnce | |
27 | + resources: | |
28 | + requests: | |
29 | + storage: 5Gi | |
30 | +--- | |
31 | +apiVersion: extensions/v1beta1 | |
32 | +kind: Deployment | |
33 | +metadata: | |
34 | + name: postgres | |
35 | + namespace: thingsboard | |
36 | + labels: | |
37 | + app: postgres | |
38 | +spec: | |
39 | + template: | |
40 | + metadata: | |
41 | + labels: | |
42 | + app: postgres | |
43 | + spec: | |
44 | + volumes: | |
45 | + - name: postgres-data | |
46 | + persistentVolumeClaim: | |
47 | + claimName: postgres-pv-claim | |
48 | + containers: | |
49 | + - name: postgres | |
50 | + imagePullPolicy: Always | |
51 | + image: postgres:9.6 | |
52 | + ports: | |
53 | + - containerPort: 5432 | |
54 | + name: postgres | |
55 | + env: | |
56 | + - name: POSTGRES_DB | |
57 | + value: "thingsboard" | |
58 | + volumeMounts: | |
59 | + - mountPath: /var/lib/postgresql/data | |
60 | + name: postgres-data | |
61 | + livenessProbe: | |
62 | + exec: | |
63 | + command: | |
64 | + - pg_isready | |
65 | + - -h | |
66 | + - localhost | |
67 | + - -U | |
68 | + - postgres | |
69 | + initialDelaySeconds: 60 | |
70 | + timeoutSeconds: 30 | |
71 | + readinessProbe: | |
72 | + exec: | |
73 | + command: | |
74 | + - pg_isready | |
75 | + - -h | |
76 | + - localhost | |
77 | + - -U | |
78 | + - postgres | |
79 | + initialDelaySeconds: 5 | |
80 | + timeoutSeconds: 1 | |
81 | + restartPolicy: Always | |
82 | +--- | |
83 | +apiVersion: v1 | |
84 | +kind: Service | |
85 | +metadata: | |
86 | + name: tb-database | |
87 | + namespace: thingsboard | |
88 | +spec: | |
89 | + type: ClusterIP | |
90 | + selector: | |
91 | + app: postgres | |
92 | + ports: | |
93 | + - port: 5432 | |
94 | + name: postgres | |
95 | +--- | ... | ... |
k8s/tb-coap-transport-configmap.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: ConfigMap | |
19 | +metadata: | |
20 | + name: tb-coap-transport-config | |
21 | + namespace: thingsboard | |
22 | + labels: | |
23 | + name: tb-coap-transport-config | |
24 | +data: | |
25 | + conf: | | |
26 | + 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" | |
27 | + export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10" | |
28 | + export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" | |
29 | + export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled" | |
30 | + export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError" | |
31 | + export LOG_FILENAME=tb-coap-transport.out | |
32 | + export LOADER_PATH=/usr/share/tb-coap-transport/conf | |
33 | + logback: | | |
34 | + <!DOCTYPE configuration> | |
35 | + <configuration scan="true" scanPeriod="10 seconds"> | |
36 | + | |
37 | + <appender name="fileLogAppender" | |
38 | + class="ch.qos.logback.core.rolling.RollingFileAppender"> | |
39 | + <file>/var/log/tb-coap-transport/${TB_HOST}/tb-coap-transport.log</file> | |
40 | + <rollingPolicy | |
41 | + class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | |
42 | + <fileNamePattern>/var/log/tb-coap-transport/${TB_HOST}/tb-coap-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern> | |
43 | + <maxFileSize>100MB</maxFileSize> | |
44 | + <maxHistory>30</maxHistory> | |
45 | + <totalSizeCap>3GB</totalSizeCap> | |
46 | + </rollingPolicy> | |
47 | + <encoder> | |
48 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
49 | + </encoder> | |
50 | + </appender> | |
51 | + | |
52 | + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | |
53 | + <encoder> | |
54 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
55 | + </encoder> | |
56 | + </appender> | |
57 | + | |
58 | + <logger name="org.thingsboard.server" level="INFO" /> | |
59 | + | |
60 | + <root level="INFO"> | |
61 | + <appender-ref ref="fileLogAppender"/> | |
62 | + <appender-ref ref="STDOUT"/> | |
63 | + </root> | |
64 | + | |
65 | + </configuration> | ... | ... |
k8s/tb-http-transport-configmap.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: ConfigMap | |
19 | +metadata: | |
20 | + name: tb-http-transport-config | |
21 | + namespace: thingsboard | |
22 | + labels: | |
23 | + name: tb-http-transport-config | |
24 | +data: | |
25 | + conf: | | |
26 | + 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" | |
27 | + export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10" | |
28 | + export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" | |
29 | + export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled" | |
30 | + export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError" | |
31 | + export LOG_FILENAME=tb-http-transport.out | |
32 | + export LOADER_PATH=/usr/share/tb-http-transport/conf | |
33 | + logback: | | |
34 | + <!DOCTYPE configuration> | |
35 | + <configuration scan="true" scanPeriod="10 seconds"> | |
36 | + | |
37 | + <appender name="fileLogAppender" | |
38 | + class="ch.qos.logback.core.rolling.RollingFileAppender"> | |
39 | + <file>/var/log/tb-http-transport/${TB_HOST}/tb-http-transport.log</file> | |
40 | + <rollingPolicy | |
41 | + class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | |
42 | + <fileNamePattern>/var/log/tb-http-transport/${TB_HOST}/tb-http-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern> | |
43 | + <maxFileSize>100MB</maxFileSize> | |
44 | + <maxHistory>30</maxHistory> | |
45 | + <totalSizeCap>3GB</totalSizeCap> | |
46 | + </rollingPolicy> | |
47 | + <encoder> | |
48 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
49 | + </encoder> | |
50 | + </appender> | |
51 | + | |
52 | + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | |
53 | + <encoder> | |
54 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
55 | + </encoder> | |
56 | + </appender> | |
57 | + | |
58 | + <logger name="org.thingsboard.server" level="INFO" /> | |
59 | + | |
60 | + <root level="INFO"> | |
61 | + <appender-ref ref="fileLogAppender"/> | |
62 | + <appender-ref ref="STDOUT"/> | |
63 | + </root> | |
64 | + | |
65 | + </configuration> | ... | ... |
k8s/tb-mqtt-transport-configmap.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: ConfigMap | |
19 | +metadata: | |
20 | + name: tb-mqtt-transport-config | |
21 | + namespace: thingsboard | |
22 | + labels: | |
23 | + name: tb-mqtt-transport-config | |
24 | +data: | |
25 | + conf: | | |
26 | + 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" | |
27 | + export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10" | |
28 | + export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" | |
29 | + export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled" | |
30 | + export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError" | |
31 | + export LOG_FILENAME=tb-mqtt-transport.out | |
32 | + export LOADER_PATH=/usr/share/tb-mqtt-transport/conf | |
33 | + logback: | | |
34 | + <!DOCTYPE configuration> | |
35 | + <configuration scan="true" scanPeriod="10 seconds"> | |
36 | + | |
37 | + <appender name="fileLogAppender" | |
38 | + class="ch.qos.logback.core.rolling.RollingFileAppender"> | |
39 | + <file>/var/log/tb-mqtt-transport/${TB_HOST}/tb-mqtt-transport.log</file> | |
40 | + <rollingPolicy | |
41 | + class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | |
42 | + <fileNamePattern>/var/log/tb-mqtt-transport/${TB_HOST}/tb-mqtt-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern> | |
43 | + <maxFileSize>100MB</maxFileSize> | |
44 | + <maxHistory>30</maxHistory> | |
45 | + <totalSizeCap>3GB</totalSizeCap> | |
46 | + </rollingPolicy> | |
47 | + <encoder> | |
48 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
49 | + </encoder> | |
50 | + </appender> | |
51 | + | |
52 | + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | |
53 | + <encoder> | |
54 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
55 | + </encoder> | |
56 | + </appender> | |
57 | + | |
58 | + <logger name="org.thingsboard.server" level="INFO" /> | |
59 | + | |
60 | + <root level="INFO"> | |
61 | + <appender-ref ref="fileLogAppender"/> | |
62 | + <appender-ref ref="STDOUT"/> | |
63 | + </root> | |
64 | + | |
65 | + </configuration> | ... | ... |
k8s/tb-namespace.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: Namespace | |
19 | +metadata: | |
20 | + name: thingsboard | |
21 | + labels: | |
22 | + name: thingsboard | ... | ... |
k8s/tb-node-cassandra-configmap.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: ConfigMap | |
19 | +metadata: | |
20 | + name: tb-node-db-config | |
21 | + namespace: thingsboard | |
22 | + labels: | |
23 | + name: tb-node-db-config | |
24 | +data: | |
25 | + DATABASE_TS_TYPE: cassandra | |
26 | + DATABASE_ENTITIES_TYPE: cassandra | |
27 | + CASSANDRA_URL: cassandra:9042 | |
28 | + CASSANDRA_SOCKET_READ_TIMEOUT: "60000" | ... | ... |
k8s/tb-node-configmap.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: ConfigMap | |
19 | +metadata: | |
20 | + name: tb-node-config | |
21 | + namespace: thingsboard | |
22 | + labels: | |
23 | + name: tb-node-config | |
24 | +data: | |
25 | + conf: | | |
26 | + export JAVA_OPTS="$JAVA_OPTS -Dplatform=deb -Dinstall.data_dir=/usr/share/thingsboard/data" | |
27 | + 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" | |
28 | + export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10" | |
29 | + export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" | |
30 | + export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled" | |
31 | + export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError" | |
32 | + export LOG_FILENAME=thingsboard.out | |
33 | + export LOADER_PATH=/usr/share/thingsboard/conf,/usr/share/thingsboard/extensions | |
34 | + logback: | | |
35 | + <!DOCTYPE configuration> | |
36 | + <configuration scan="true" scanPeriod="10 seconds"> | |
37 | + | |
38 | + <appender name="fileLogAppender" | |
39 | + class="ch.qos.logback.core.rolling.RollingFileAppender"> | |
40 | + <file>/var/log/thingsboard/${TB_HOST}/thingsboard.log</file> | |
41 | + <rollingPolicy | |
42 | + class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | |
43 | + <fileNamePattern>/var/log/thingsboard/${TB_HOST}/thingsboard.%d{yyyy-MM-dd}.%i.log</fileNamePattern> | |
44 | + <maxFileSize>100MB</maxFileSize> | |
45 | + <maxHistory>30</maxHistory> | |
46 | + <totalSizeCap>3GB</totalSizeCap> | |
47 | + </rollingPolicy> | |
48 | + <encoder> | |
49 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
50 | + </encoder> | |
51 | + </appender> | |
52 | + | |
53 | + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | |
54 | + <encoder> | |
55 | + <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> | |
56 | + </encoder> | |
57 | + </appender> | |
58 | + | |
59 | + <logger name="org.thingsboard.server" level="INFO" /> | |
60 | + <logger name="com.google.common.util.concurrent.AggregateFuture" level="OFF" /> | |
61 | + | |
62 | + <root level="INFO"> | |
63 | + <appender-ref ref="fileLogAppender"/> | |
64 | + <appender-ref ref="STDOUT"/> | |
65 | + </root> | |
66 | + | |
67 | + </configuration> | ... | ... |
k8s/tb-node-postgres-configmap.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: v1 | |
18 | +kind: ConfigMap | |
19 | +metadata: | |
20 | + name: tb-node-db-config | |
21 | + namespace: thingsboard | |
22 | + labels: | |
23 | + name: tb-node-db-config | |
24 | +data: | |
25 | + DATABASE_TS_TYPE: sql | |
26 | + DATABASE_ENTITIES_TYPE: sql | |
27 | + SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect | |
28 | + SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver | |
29 | + SPRING_DATASOURCE_URL: jdbc:postgresql://tb-database:5432/thingsboard | |
30 | + SPRING_DATASOURCE_USERNAME: postgres | |
31 | + SPRING_DATASOURCE_PASSWORD: postgres | ... | ... |
k8s/thingsboard.yml
0 → 100644
1 | +# | |
2 | +# Copyright © 2016-2019 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +apiVersion: extensions/v1beta1 | |
18 | +kind: Deployment | |
19 | +metadata: | |
20 | + name: zookeeper | |
21 | + namespace: thingsboard | |
22 | +spec: | |
23 | + template: | |
24 | + metadata: | |
25 | + labels: | |
26 | + app: zookeeper | |
27 | + spec: | |
28 | + containers: | |
29 | + - name: server | |
30 | + imagePullPolicy: Always | |
31 | + image: zookeeper:3.5 | |
32 | + ports: | |
33 | + - containerPort: 2181 | |
34 | + readinessProbe: | |
35 | + periodSeconds: 5 | |
36 | + tcpSocket: | |
37 | + port: 2181 | |
38 | + livenessProbe: | |
39 | + periodSeconds: 5 | |
40 | + tcpSocket: | |
41 | + port: 2181 | |
42 | + env: | |
43 | + - name: ZOO_MY_ID | |
44 | + value: "1" | |
45 | + - name: ZOO_SERVERS | |
46 | + value: "server.1=0.0.0.0:2888:3888;0.0.0.0:2181" | |
47 | + restartPolicy: Always | |
48 | +--- | |
49 | +apiVersion: v1 | |
50 | +kind: Service | |
51 | +metadata: | |
52 | + name: zookeeper | |
53 | + namespace: thingsboard | |
54 | +spec: | |
55 | + type: ClusterIP | |
56 | + selector: | |
57 | + app: zookeeper | |
58 | + ports: | |
59 | + - name: zk-port | |
60 | + port: 2181 | |
61 | +--- | |
62 | +apiVersion: extensions/v1beta1 | |
63 | +kind: Deployment | |
64 | +metadata: | |
65 | + name: tb-kafka | |
66 | + namespace: thingsboard | |
67 | +spec: | |
68 | + template: | |
69 | + metadata: | |
70 | + labels: | |
71 | + app: tb-kafka | |
72 | + spec: | |
73 | + containers: | |
74 | + - name: server | |
75 | + imagePullPolicy: Always | |
76 | + image: wurstmeister/kafka | |
77 | + ports: | |
78 | + - containerPort: 9092 | |
79 | + readinessProbe: | |
80 | + periodSeconds: 20 | |
81 | + tcpSocket: | |
82 | + port: 9092 | |
83 | + livenessProbe: | |
84 | + periodSeconds: 5 | |
85 | + tcpSocket: | |
86 | + port: 9092 | |
87 | + env: | |
88 | + - name: KAFKA_ZOOKEEPER_CONNECT | |
89 | + value: "zookeeper:2181" | |
90 | + - name: KAFKA_LISTENERS | |
91 | + value: "INSIDE://:9093,OUTSIDE://:9092" | |
92 | + - name: KAFKA_ADVERTISED_LISTENERS | |
93 | + value: "INSIDE://:9093,OUTSIDE://tb-kafka:9092" | |
94 | + - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP | |
95 | + value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" | |
96 | + - name: KAFKA_INTER_BROKER_LISTENER_NAME | |
97 | + value: "INSIDE" | |
98 | + - name: KAFKA_CREATE_TOPICS | |
99 | + 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" | |
100 | + - name: KAFKA_AUTO_CREATE_TOPICS_ENABLE | |
101 | + value: "false" | |
102 | + - name: KAFKA_LOG_RETENTION_BYTES | |
103 | + value: "1073741824" | |
104 | + - name: KAFKA_LOG_SEGMENT_BYTES | |
105 | + value: "268435456" | |
106 | + - name: KAFKA_LOG_RETENTION_MS | |
107 | + value: "300000" | |
108 | + - name: KAFKA_LOG_CLEANUP_POLICY | |
109 | + value: "delete" | |
110 | + restartPolicy: Always | |
111 | +--- | |
112 | +apiVersion: v1 | |
113 | +kind: Service | |
114 | +metadata: | |
115 | + name: tb-kafka | |
116 | + namespace: thingsboard | |
117 | +spec: | |
118 | + type: ClusterIP | |
119 | + selector: | |
120 | + app: tb-kafka | |
121 | + ports: | |
122 | + - name: tb-kafka-port | |
123 | + port: 9092 | |
124 | +--- | |
125 | +apiVersion: extensions/v1beta1 | |
126 | +kind: Deployment | |
127 | +metadata: | |
128 | + name: tb-redis | |
129 | + namespace: thingsboard | |
130 | +spec: | |
131 | + template: | |
132 | + metadata: | |
133 | + labels: | |
134 | + app: tb-redis | |
135 | + spec: | |
136 | + containers: | |
137 | + - name: server | |
138 | + imagePullPolicy: Always | |
139 | + image: redis:4.0 | |
140 | + ports: | |
141 | + - containerPort: 6379 | |
142 | + readinessProbe: | |
143 | + periodSeconds: 5 | |
144 | + tcpSocket: | |
145 | + port: 6379 | |
146 | + livenessProbe: | |
147 | + periodSeconds: 5 | |
148 | + tcpSocket: | |
149 | + port: 6379 | |
150 | + volumeMounts: | |
151 | + - mountPath: /data | |
152 | + name: redis-data | |
153 | + volumes: | |
154 | + - name: redis-data | |
155 | + emptyDir: {} | |
156 | + restartPolicy: Always | |
157 | +--- | |
158 | +apiVersion: v1 | |
159 | +kind: Service | |
160 | +metadata: | |
161 | + name: tb-redis | |
162 | + namespace: thingsboard | |
163 | +spec: | |
164 | + type: ClusterIP | |
165 | + selector: | |
166 | + app: tb-redis | |
167 | + ports: | |
168 | + - name: tb-redis-port | |
169 | + port: 6379 | |
170 | +--- | |
171 | +apiVersion: extensions/v1beta1 | |
172 | +kind: Deployment | |
173 | +metadata: | |
174 | + name: tb-js-executor | |
175 | + namespace: thingsboard | |
176 | +spec: | |
177 | + replicas: 20 | |
178 | + selector: | |
179 | + matchLabels: | |
180 | + app: tb-js-executor | |
181 | + template: | |
182 | + metadata: | |
183 | + labels: | |
184 | + app: tb-js-executor | |
185 | + spec: | |
186 | + containers: | |
187 | + - name: server | |
188 | + imagePullPolicy: Always | |
189 | + image: thingsboard/tb-js-executor:latest | |
190 | + env: | |
191 | + - name: REMOTE_JS_EVAL_REQUEST_TOPIC | |
192 | + value: "js.eval.requests" | |
193 | + - name: TB_KAFKA_SERVERS | |
194 | + value: "tb-kafka:9092" | |
195 | + - name: LOGGER_LEVEL | |
196 | + value: "info" | |
197 | + - name: LOG_FOLDER | |
198 | + value: "logs" | |
199 | + - name: LOGGER_FILENAME | |
200 | + value: "tb-js-executor-%DATE%.log" | |
201 | + - name: DOCKER_MODE | |
202 | + value: "true" | |
203 | + - name: SCRIPT_BODY_TRACE_FREQUENCY | |
204 | + value: "1000" | |
205 | + restartPolicy: Always | |
206 | +--- | |
207 | +apiVersion: extensions/v1beta1 | |
208 | +kind: Deployment | |
209 | +metadata: | |
210 | + name: tb-node | |
211 | + namespace: thingsboard | |
212 | +spec: | |
213 | + replicas: 2 | |
214 | + selector: | |
215 | + matchLabels: | |
216 | + app: tb-node | |
217 | + template: | |
218 | + metadata: | |
219 | + labels: | |
220 | + app: tb-node | |
221 | + spec: | |
222 | + volumes: | |
223 | + - name: tb-node-config | |
224 | + configMap: | |
225 | + name: tb-node-config | |
226 | + items: | |
227 | + - key: conf | |
228 | + path: thingsboard.conf | |
229 | + - key: logback | |
230 | + path: logback.xml | |
231 | + containers: | |
232 | + - name: server | |
233 | + imagePullPolicy: Always | |
234 | + image: thingsboard/tb-node:latest | |
235 | + ports: | |
236 | + - containerPort: 8080 | |
237 | + name: http | |
238 | + - containerPort: 9001 | |
239 | + name: rpc | |
240 | + env: | |
241 | + - name: RPC_HOST | |
242 | + valueFrom: | |
243 | + fieldRef: | |
244 | + fieldPath: status.podIP | |
245 | + - name: CLUSTER_NODE_ID | |
246 | + valueFrom: | |
247 | + fieldRef: | |
248 | + fieldPath: metadata.name | |
249 | + - name: TB_HOST | |
250 | + valueFrom: | |
251 | + fieldRef: | |
252 | + fieldPath: metadata.name | |
253 | + - name: ZOOKEEPER_ENABLED | |
254 | + value: "true" | |
255 | + - name: ZOOKEEPER_URL | |
256 | + value: "zookeeper:2181" | |
257 | + - name: TB_KAFKA_SERVERS | |
258 | + value: "tb-kafka:9092" | |
259 | + - name: JS_EVALUATOR | |
260 | + value: "remote" | |
261 | + - name: TRANSPORT_TYPE | |
262 | + value: "remote" | |
263 | + - name: CACHE_TYPE | |
264 | + value: "redis" | |
265 | + - name: REDIS_HOST | |
266 | + value: "tb-redis" | |
267 | + - name: HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE | |
268 | + value: "false" | |
269 | + envFrom: | |
270 | + - configMapRef: | |
271 | + name: tb-node-db-config | |
272 | + volumeMounts: | |
273 | + - mountPath: /config | |
274 | + name: tb-node-config | |
275 | + livenessProbe: | |
276 | + httpGet: | |
277 | + path: /login | |
278 | + port: http | |
279 | + initialDelaySeconds: 120 | |
280 | + timeoutSeconds: 10 | |
281 | + restartPolicy: Always | |
282 | +--- | |
283 | +apiVersion: v1 | |
284 | +kind: Service | |
285 | +metadata: | |
286 | + name: tb-node | |
287 | + namespace: thingsboard | |
288 | +spec: | |
289 | + type: ClusterIP | |
290 | + selector: | |
291 | + app: tb-node | |
292 | + ports: | |
293 | + - port: 8080 | |
294 | + name: http | |
295 | +--- | |
296 | +apiVersion: extensions/v1beta1 | |
297 | +kind: Deployment | |
298 | +metadata: | |
299 | + name: tb-mqtt-transport | |
300 | + namespace: thingsboard | |
301 | +spec: | |
302 | + replicas: 2 | |
303 | + selector: | |
304 | + matchLabels: | |
305 | + app: tb-mqtt-transport | |
306 | + template: | |
307 | + metadata: | |
308 | + labels: | |
309 | + app: tb-mqtt-transport | |
310 | + spec: | |
311 | + volumes: | |
312 | + - name: tb-mqtt-transport-config | |
313 | + configMap: | |
314 | + name: tb-mqtt-transport-config | |
315 | + items: | |
316 | + - key: conf | |
317 | + path: tb-mqtt-transport.conf | |
318 | + - key: logback | |
319 | + path: logback.xml | |
320 | + containers: | |
321 | + - name: server | |
322 | + imagePullPolicy: Always | |
323 | + image: thingsboard/tb-mqtt-transport:latest | |
324 | + ports: | |
325 | + - containerPort: 1883 | |
326 | + name: mqtt | |
327 | + env: | |
328 | + - name: CLUSTER_NODE_ID | |
329 | + valueFrom: | |
330 | + fieldRef: | |
331 | + fieldPath: metadata.name | |
332 | + - name: TB_HOST | |
333 | + valueFrom: | |
334 | + fieldRef: | |
335 | + fieldPath: metadata.name | |
336 | + - name: MQTT_BIND_ADDRESS | |
337 | + value: "0.0.0.0" | |
338 | + - name: MQTT_BIND_PORT | |
339 | + value: "1883" | |
340 | + - name: MQTT_TIMEOUT | |
341 | + value: "10000" | |
342 | + - name: TB_KAFKA_SERVERS | |
343 | + value: "tb-kafka:9092" | |
344 | + volumeMounts: | |
345 | + - mountPath: /config | |
346 | + name: tb-mqtt-transport-config | |
347 | + readinessProbe: | |
348 | + periodSeconds: 20 | |
349 | + tcpSocket: | |
350 | + port: 1883 | |
351 | + livenessProbe: | |
352 | + periodSeconds: 20 | |
353 | + tcpSocket: | |
354 | + port: 1883 | |
355 | + restartPolicy: Always | |
356 | +--- | |
357 | +apiVersion: v1 | |
358 | +kind: Service | |
359 | +metadata: | |
360 | + name: tb-mqtt-transport | |
361 | + namespace: thingsboard | |
362 | +spec: | |
363 | + type: LoadBalancer | |
364 | + selector: | |
365 | + app: tb-mqtt-transport | |
366 | + ports: | |
367 | + - port: 1883 | |
368 | + targetPort: 1883 | |
369 | + name: mqtt | |
370 | +--- | |
371 | +apiVersion: extensions/v1beta1 | |
372 | +kind: Deployment | |
373 | +metadata: | |
374 | + name: tb-http-transport | |
375 | + namespace: thingsboard | |
376 | +spec: | |
377 | + replicas: 2 | |
378 | + selector: | |
379 | + matchLabels: | |
380 | + app: tb-http-transport | |
381 | + template: | |
382 | + metadata: | |
383 | + labels: | |
384 | + app: tb-http-transport | |
385 | + spec: | |
386 | + volumes: | |
387 | + - name: tb-http-transport-config | |
388 | + configMap: | |
389 | + name: tb-http-transport-config | |
390 | + items: | |
391 | + - key: conf | |
392 | + path: tb-http-transport.conf | |
393 | + - key: logback | |
394 | + path: logback.xml | |
395 | + containers: | |
396 | + - name: server | |
397 | + imagePullPolicy: Always | |
398 | + image: thingsboard/tb-http-transport:latest | |
399 | + ports: | |
400 | + - containerPort: 8080 | |
401 | + name: http | |
402 | + env: | |
403 | + - name: CLUSTER_NODE_ID | |
404 | + valueFrom: | |
405 | + fieldRef: | |
406 | + fieldPath: metadata.name | |
407 | + - name: TB_HOST | |
408 | + valueFrom: | |
409 | + fieldRef: | |
410 | + fieldPath: metadata.name | |
411 | + - name: HTTP_BIND_ADDRESS | |
412 | + value: "0.0.0.0" | |
413 | + - name: HTTP_BIND_PORT | |
414 | + value: "8080" | |
415 | + - name: HTTP_REQUEST_TIMEOUT | |
416 | + value: "60000" | |
417 | + - name: TB_KAFKA_SERVERS | |
418 | + value: "tb-kafka:9092" | |
419 | + volumeMounts: | |
420 | + - mountPath: /config | |
421 | + name: tb-http-transport-config | |
422 | + readinessProbe: | |
423 | + periodSeconds: 20 | |
424 | + tcpSocket: | |
425 | + port: 8080 | |
426 | + livenessProbe: | |
427 | + periodSeconds: 20 | |
428 | + tcpSocket: | |
429 | + port: 8080 | |
430 | + restartPolicy: Always | |
431 | +--- | |
432 | +apiVersion: v1 | |
433 | +kind: Service | |
434 | +metadata: | |
435 | + name: tb-http-transport | |
436 | + namespace: thingsboard | |
437 | +spec: | |
438 | + type: ClusterIP | |
439 | + selector: | |
440 | + app: tb-http-transport | |
441 | + ports: | |
442 | + - port: 8080 | |
443 | + name: http | |
444 | +--- | |
445 | +apiVersion: extensions/v1beta1 | |
446 | +kind: Deployment | |
447 | +metadata: | |
448 | + name: tb-coap-transport | |
449 | + namespace: thingsboard | |
450 | +spec: | |
451 | + replicas: 2 | |
452 | + selector: | |
453 | + matchLabels: | |
454 | + app: tb-coap-transport | |
455 | + template: | |
456 | + metadata: | |
457 | + labels: | |
458 | + app: tb-coap-transport | |
459 | + spec: | |
460 | + volumes: | |
461 | + - name: tb-coap-transport-config | |
462 | + configMap: | |
463 | + name: tb-coap-transport-config | |
464 | + items: | |
465 | + - key: conf | |
466 | + path: tb-coap-transport.conf | |
467 | + - key: logback | |
468 | + path: logback.xml | |
469 | + containers: | |
470 | + - name: server | |
471 | + imagePullPolicy: Always | |
472 | + image: thingsboard/tb-coap-transport:latest | |
473 | + ports: | |
474 | + - containerPort: 5683 | |
475 | + name: coap | |
476 | + protocol: UDP | |
477 | + env: | |
478 | + - name: CLUSTER_NODE_ID | |
479 | + valueFrom: | |
480 | + fieldRef: | |
481 | + fieldPath: metadata.name | |
482 | + - name: TB_HOST | |
483 | + valueFrom: | |
484 | + fieldRef: | |
485 | + fieldPath: metadata.name | |
486 | + - name: COAP_BIND_ADDRESS | |
487 | + value: "0.0.0.0" | |
488 | + - name: COAP_BIND_PORT | |
489 | + value: "5683" | |
490 | + - name: COAP_TIMEOUT | |
491 | + value: "10000" | |
492 | + - name: TB_KAFKA_SERVERS | |
493 | + value: "tb-kafka:9092" | |
494 | + volumeMounts: | |
495 | + - mountPath: /config | |
496 | + name: tb-coap-transport-config | |
497 | + restartPolicy: Always | |
498 | +--- | |
499 | +apiVersion: v1 | |
500 | +kind: Service | |
501 | +metadata: | |
502 | + name: tb-coap-transport | |
503 | + namespace: thingsboard | |
504 | +spec: | |
505 | + type: LoadBalancer | |
506 | + selector: | |
507 | + app: tb-coap-transport | |
508 | + ports: | |
509 | + - port: 5683 | |
510 | + name: coap | |
511 | + protocol: UDP | |
512 | +--- | |
513 | +apiVersion: extensions/v1beta1 | |
514 | +kind: Deployment | |
515 | +metadata: | |
516 | + name: tb-web-ui | |
517 | + namespace: thingsboard | |
518 | +spec: | |
519 | + replicas: 2 | |
520 | + selector: | |
521 | + matchLabels: | |
522 | + app: tb-web-ui | |
523 | + template: | |
524 | + metadata: | |
525 | + labels: | |
526 | + app: tb-web-ui | |
527 | + spec: | |
528 | + containers: | |
529 | + - name: server | |
530 | + imagePullPolicy: Always | |
531 | + image: thingsboard/tb-web-ui:latest | |
532 | + ports: | |
533 | + - containerPort: 8080 | |
534 | + name: http | |
535 | + env: | |
536 | + - name: HTTP_BIND_ADDRESS | |
537 | + value: "0.0.0.0" | |
538 | + - name: HTTP_BIND_PORT | |
539 | + value: "8080" | |
540 | + - name: TB_ENABLE_PROXY | |
541 | + value: "false" | |
542 | + - name: LOGGER_LEVEL | |
543 | + value: "info" | |
544 | + - name: LOG_FOLDER | |
545 | + value: "logs" | |
546 | + - name: LOGGER_FILENAME | |
547 | + value: "tb-web-ui-%DATE%.log" | |
548 | + - name: DOCKER_MODE | |
549 | + value: "true" | |
550 | + livenessProbe: | |
551 | + httpGet: | |
552 | + path: /index.html | |
553 | + port: http | |
554 | + initialDelaySeconds: 120 | |
555 | + timeoutSeconds: 10 | |
556 | + restartPolicy: Always | |
557 | +--- | |
558 | +apiVersion: v1 | |
559 | +kind: Service | |
560 | +metadata: | |
561 | + name: tb-web-ui | |
562 | + namespace: thingsboard | |
563 | +spec: | |
564 | + type: ClusterIP | |
565 | + selector: | |
566 | + app: tb-web-ui | |
567 | + ports: | |
568 | + - port: 8080 | |
569 | + name: http | |
570 | +--- | |
571 | +apiVersion: extensions/v1beta1 | |
572 | +kind: Ingress | |
573 | +metadata: | |
574 | + name: tb-ingress | |
575 | + namespace: thingsboard | |
576 | + annotations: | |
577 | + nginx.ingress.kubernetes.io/use-regex: "true" | |
578 | + nginx.ingress.kubernetes.io/ssl-redirect: "false" | |
579 | + nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" | |
580 | +spec: | |
581 | + rules: | |
582 | + - http: | |
583 | + paths: | |
584 | + - path: /api/v1/.* | |
585 | + backend: | |
586 | + serviceName: tb-http-transport | |
587 | + servicePort: 8080 | |
588 | + - path: /static/rulenode/.* | |
589 | + backend: | |
590 | + serviceName: tb-node | |
591 | + servicePort: 8080 | |
592 | + - path: /static/.* | |
593 | + backend: | |
594 | + serviceName: tb-web-ui | |
595 | + servicePort: 8080 | |
596 | + - path: /index.html.* | |
597 | + backend: | |
598 | + serviceName: tb-web-ui | |
599 | + servicePort: 8080 | |
600 | + - path: / | |
601 | + backend: | |
602 | + serviceName: tb-web-ui | |
603 | + servicePort: 8080 | |
604 | + - path: /.* | |
605 | + backend: | |
606 | + serviceName: tb-node | |
607 | + servicePort: 8080 | |
608 | +--- | |
\ No newline at end of file | ... | ... |