25 changed files with 0 additions and 2169 deletions
@ -1,8 +0,0 @@ |
|||||
# Can be either basic (with single instance of Zookeeper, Kafka and Redis) or high-availability (with Zookeeper, Kafka and Redis in cluster modes). |
|
||||
# According to the deployment type corresponding kubernetes resources will be deployed (see content of the directories ./basic and ./high-availability for details). |
|
||||
DEPLOYMENT_TYPE=basic |
|
||||
|
|
||||
# Database used by ThingsBoard, can be either postgres (PostgreSQL) or hybrid (PostgreSQL for entities database and Cassandra for timeseries database). |
|
||||
# According to the database type corresponding kubernetes resources will be deployed (see postgres.yml, cassandra.yml for details). |
|
||||
DATABASE=postgres |
|
||||
|
|
||||
@ -1,130 +0,0 @@ |
|||||
# Kubernetes resources configuration for ThingsBoard Microservices |
|
||||
|
|
||||
This folder containing scripts and Kubernetes resources configurations to run ThingsBoard in Microservices mode. |
|
||||
|
|
||||
## Prerequisites |
|
||||
|
|
||||
ThingsBoard Microservices run on the Kubernetes cluster. |
|
||||
You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. |
|
||||
If you do not have a cluster already, you can create one by using [Minikube](https://kubernetes.io/docs/setup/minikube), |
|
||||
or you can choose any other available [Kubernetes cluster deployment solutions](https://kubernetes.io/docs/setup/pick-right-solution/). |
|
||||
|
|
||||
### Enable ingress addon |
|
||||
|
|
||||
By default ingress addon is disabled in the Minikube, and available only in cluster providers. |
|
||||
To enable ingress, please execute the following command: |
|
||||
|
|
||||
` |
|
||||
$ minikube addons enable ingress |
|
||||
` |
|
||||
|
|
||||
## Installation |
|
||||
|
|
||||
Before performing initial installation you can configure the type of database to be used with ThingsBoard and the type of deployment. |
|
||||
To set database type change the value of `DATABASE` variable in `.env` file to one of the following: |
|
||||
|
|
||||
- `postgres` - use PostgreSQL database; |
|
||||
- `hybrid` - use PostgreSQL for entities database and Cassandra for timeseries database; |
|
||||
|
|
||||
**NOTE**: According to the database type corresponding kubernetes resources will be deployed (see `postgres.yml`, `cassandra.yml` for details). |
|
||||
|
|
||||
To set deployment type change the value of `DEPLOYMENT_TYPE` variable in `.env` file to one of the following: |
|
||||
|
|
||||
- `basic` - startup with a single instance of Zookeeper, Kafka and Redis; |
|
||||
- `high-availability` - startup with Zookeeper, Kafka, and Redis in cluster modes; |
|
||||
|
|
||||
**NOTE**: According to the deployment type corresponding kubernetes resources will be deployed (see the content of the directories `./basic` and `./high-availability` for details). |
|
||||
|
|
||||
Execute the following command to run the installation: |
|
||||
|
|
||||
` |
|
||||
$ ./k8s-install-tb.sh --loadDemo |
|
||||
` |
|
||||
|
|
||||
Where: |
|
||||
|
|
||||
- `--loadDemo` - optional argument. Whether to load additional demo data. |
|
||||
|
|
||||
## Running |
|
||||
|
|
||||
Execute the following command to deploy third-party resources: |
|
||||
|
|
||||
` |
|
||||
$ ./k8s-deploy-thirdparty.sh |
|
||||
` |
|
||||
|
|
||||
Type **'yes'** when prompted, if you are running ThingsBoard in `high-availability` `DEPLOYMENT_TYPE` for the first time and don't have configured Redis cluster. |
|
||||
|
|
||||
Execute the following command to deploy resources: |
|
||||
|
|
||||
` |
|
||||
$ ./k8s-deploy-resources.sh |
|
||||
` |
|
||||
|
|
||||
After a while when all resources will be successfully started you can open `http://{your-cluster-ip}` in your browser (for ex. `http://192.168.99.101`). |
|
||||
You should see the ThingsBoard login page. |
|
||||
|
|
||||
Use the following default credentials: |
|
||||
|
|
||||
- **System Administrator**: sysadmin@thingsboard.org / sysadmin |
|
||||
|
|
||||
If you installed DataBase with demo data (using `--loadDemo` flag) you can also use the following credentials: |
|
||||
|
|
||||
- **Tenant Administrator**: tenant@thingsboard.org / tenant |
|
||||
- **Customer User**: customer@thingsboard.org / customer |
|
||||
|
|
||||
In case of any issues, you can examine service logs for errors. |
|
||||
For example to see ThingsBoard node logs execute the following commands: |
|
||||
|
|
||||
1) Get the list of the running tb-node pods: |
|
||||
|
|
||||
` |
|
||||
$ kubectl get pods -l app=tb-node |
|
||||
` |
|
||||
|
|
||||
2) Fetch logs of the tb-node pod: |
|
||||
|
|
||||
` |
|
||||
$ kubectl logs -f [tb-node-pod-name] |
|
||||
` |
|
||||
|
|
||||
Where: |
|
||||
|
|
||||
- `tb-node-pod-name` - tb-node pod name obtained from the list of the running tb-node pods. |
|
||||
|
|
||||
Or use `kubectl get pods` to see the state of all the pods. |
|
||||
Or use `kubectl get services` to see the state of all the services. |
|
||||
Or use `kubectl get deployments` to see the state of all the deployments. |
|
||||
See [kubectl Cheat Sheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/) command reference for details. |
|
||||
|
|
||||
Execute the following command to delete all ThingsBoard microservices: |
|
||||
|
|
||||
` |
|
||||
$ ./k8s-delete-resources.sh |
|
||||
` |
|
||||
|
|
||||
Execute the following command to delete all third-party microservices: |
|
||||
|
|
||||
` |
|
||||
$ ./k8s-delete-thirdparty.sh |
|
||||
` |
|
||||
|
|
||||
Execute the following command to delete all resources (including database): |
|
||||
|
|
||||
` |
|
||||
$ ./k8s-delete-all.sh |
|
||||
` |
|
||||
|
|
||||
## Upgrading |
|
||||
|
|
||||
In case when database upgrade is needed, execute the following commands: |
|
||||
|
|
||||
``` |
|
||||
$ ./k8s-delete-resources.sh |
|
||||
$ ./k8s-upgrade-tb.sh --fromVersion=[FROM_VERSION] |
|
||||
$ ./k8s-deploy-resources.sh |
|
||||
``` |
|
||||
|
|
||||
Where: |
|
||||
|
|
||||
- `FROM_VERSION` - from which version upgrade should be started. See [Upgrade Instructions](https://thingsboard.io/docs/user-guide/install/upgrade-instructions) for valid `fromVersion` values. |
|
||||
@ -1,26 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-node-cache-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: tb-node-cache-config |
|
||||
data: |
|
||||
CACHE_TYPE: redis |
|
||||
REDIS_HOST: tb-redis |
|
||||
@ -1,181 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: zookeeper |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: zookeeper |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: zookeeper |
|
||||
spec: |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: zookeeper:3.5 |
|
||||
ports: |
|
||||
- containerPort: 2181 |
|
||||
readinessProbe: |
|
||||
periodSeconds: 5 |
|
||||
tcpSocket: |
|
||||
port: 2181 |
|
||||
livenessProbe: |
|
||||
initialDelaySeconds: 15 |
|
||||
periodSeconds: 5 |
|
||||
tcpSocket: |
|
||||
port: 2181 |
|
||||
env: |
|
||||
- name: ZOO_MY_ID |
|
||||
value: "1" |
|
||||
- name: ZOO_SERVERS |
|
||||
value: "server.1=0.0.0.0:2888:3888;0.0.0.0:2181" |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: zookeeper |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
selector: |
|
||||
app: zookeeper |
|
||||
ports: |
|
||||
- name: zk-port |
|
||||
port: 2181 |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-kafka |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-kafka |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-kafka |
|
||||
spec: |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: wurstmeister/kafka:2.12-2.2.1 |
|
||||
ports: |
|
||||
- containerPort: 9092 |
|
||||
readinessProbe: |
|
||||
periodSeconds: 20 |
|
||||
tcpSocket: |
|
||||
port: 9092 |
|
||||
livenessProbe: |
|
||||
initialDelaySeconds: 25 |
|
||||
periodSeconds: 5 |
|
||||
tcpSocket: |
|
||||
port: 9092 |
|
||||
env: |
|
||||
- name: KAFKA_ZOOKEEPER_CONNECT |
|
||||
value: "zookeeper:2181" |
|
||||
- name: KAFKA_LISTENERS |
|
||||
value: "INSIDE://:9093,OUTSIDE://:9092" |
|
||||
- name: KAFKA_ADVERTISED_LISTENERS |
|
||||
value: "INSIDE://:9093,OUTSIDE://tb-kafka:9092" |
|
||||
- name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP |
|
||||
value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" |
|
||||
- name: KAFKA_INTER_BROKER_LISTENER_NAME |
|
||||
value: "INSIDE" |
|
||||
- name: KAFKA_CREATE_TOPICS |
|
||||
value: "js_eval.requests:100:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb_transport.api.requests:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb_rule_engine:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600" |
|
||||
- name: KAFKA_AUTO_CREATE_TOPICS_ENABLE |
|
||||
value: "false" |
|
||||
- name: KAFKA_LOG_RETENTION_BYTES |
|
||||
value: "1073741824" |
|
||||
- name: KAFKA_LOG_SEGMENT_BYTES |
|
||||
value: "268435456" |
|
||||
- name: KAFKA_LOG_RETENTION_MS |
|
||||
value: "300000" |
|
||||
- name: KAFKA_LOG_CLEANUP_POLICY |
|
||||
value: "delete" |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-kafka |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
selector: |
|
||||
app: tb-kafka |
|
||||
ports: |
|
||||
- name: tb-kafka-port |
|
||||
port: 9092 |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-redis |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-redis |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-redis |
|
||||
spec: |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: redis:4.0 |
|
||||
ports: |
|
||||
- containerPort: 6379 |
|
||||
readinessProbe: |
|
||||
periodSeconds: 5 |
|
||||
tcpSocket: |
|
||||
port: 6379 |
|
||||
livenessProbe: |
|
||||
periodSeconds: 5 |
|
||||
tcpSocket: |
|
||||
port: 6379 |
|
||||
volumeMounts: |
|
||||
- mountPath: /data |
|
||||
name: redis-data |
|
||||
volumes: |
|
||||
- name: redis-data |
|
||||
emptyDir: {} |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-redis |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
selector: |
|
||||
app: tb-redis |
|
||||
ports: |
|
||||
- name: tb-redis-port |
|
||||
port: 6379 |
|
||||
--- |
|
||||
@ -1,164 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: storage.k8s.io/v1 |
|
||||
kind: StorageClass |
|
||||
metadata: |
|
||||
name: fast |
|
||||
namespace: thingsboard |
|
||||
provisioner: k8s.io/minikube-hostpath |
|
||||
parameters: |
|
||||
type: pd-ssd |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: cassandra-probe-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: cassandra-probe-config |
|
||||
data: |
|
||||
probe: | |
|
||||
if [[ $(nodetool status | grep $POD_IP) == *"UN"* ]]; then |
|
||||
if [[ $DEBUG ]]; then |
|
||||
echo "UN"; |
|
||||
fi |
|
||||
exit 0; |
|
||||
else |
|
||||
if [[ $DEBUG ]]; then |
|
||||
echo "Not Up"; |
|
||||
fi |
|
||||
exit 1; |
|
||||
fi |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: StatefulSet |
|
||||
metadata: |
|
||||
name: cassandra |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
app: cassandra |
|
||||
spec: |
|
||||
serviceName: cassandra |
|
||||
replicas: 1 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: cassandra |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: cassandra |
|
||||
spec: |
|
||||
volumes: |
|
||||
- name: cassandra-probe-config |
|
||||
configMap: |
|
||||
name: cassandra-probe-config |
|
||||
items: |
|
||||
- key: probe |
|
||||
path: ready-probe.sh |
|
||||
mode: 0777 |
|
||||
terminationGracePeriodSeconds: 1800 |
|
||||
containers: |
|
||||
- name: cassandra |
|
||||
image: cassandra:3.11.3 |
|
||||
imagePullPolicy: Always |
|
||||
ports: |
|
||||
- containerPort: 7000 |
|
||||
name: intra-node |
|
||||
- containerPort: 7001 |
|
||||
name: tls-intra-node |
|
||||
- containerPort: 7199 |
|
||||
name: jmx |
|
||||
- containerPort: 9042 |
|
||||
name: cql |
|
||||
- containerPort: 9160 |
|
||||
name: thrift |
|
||||
resources: |
|
||||
limits: |
|
||||
cpu: "1000m" |
|
||||
memory: 2Gi |
|
||||
requests: |
|
||||
cpu: "1000m" |
|
||||
memory: 2Gi |
|
||||
securityContext: |
|
||||
capabilities: |
|
||||
add: |
|
||||
- IPC_LOCK |
|
||||
lifecycle: |
|
||||
preStop: |
|
||||
exec: |
|
||||
command: |
|
||||
- /bin/sh |
|
||||
- -c |
|
||||
- nodetool drain |
|
||||
env: |
|
||||
- name: CASSANDRA_SEEDS |
|
||||
value: "cassandra-0.cassandra.thingsboard.svc.cluster.local" |
|
||||
- name: MAX_HEAP_SIZE |
|
||||
value: 1024M |
|
||||
- name: HEAP_NEWSIZE |
|
||||
value: 256M |
|
||||
- name: CASSANDRA_CLUSTER_NAME |
|
||||
value: "Thingsboard Cluster" |
|
||||
- name: CASSANDRA_DC |
|
||||
value: "datacenter1" |
|
||||
- name: CASSANDRA_RACK |
|
||||
value: "Rack-Thingsboard-Cluster" |
|
||||
- name: CASSANDRA_AUTO_BOOTSTRAP |
|
||||
value: "false" |
|
||||
- name: CASSANDRA_ENDPOINT_SNITCH |
|
||||
value: GossipingPropertyFileSnitch |
|
||||
- name: POD_IP |
|
||||
valueFrom: |
|
||||
fieldRef: |
|
||||
fieldPath: status.podIP |
|
||||
readinessProbe: |
|
||||
exec: |
|
||||
command: |
|
||||
- /bin/bash |
|
||||
- -c |
|
||||
- /probe/ready-probe.sh |
|
||||
initialDelaySeconds: 60 |
|
||||
timeoutSeconds: 5 |
|
||||
volumeMounts: |
|
||||
- name: cassandra-probe-config |
|
||||
mountPath: /probe |
|
||||
- name: cassandra-data |
|
||||
mountPath: /var/lib/cassandra |
|
||||
volumeClaimTemplates: |
|
||||
- metadata: |
|
||||
name: cassandra-data |
|
||||
spec: |
|
||||
accessModes: [ "ReadWriteOnce" ] |
|
||||
storageClassName: fast |
|
||||
resources: |
|
||||
requests: |
|
||||
storage: 1Gi |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: cassandra |
|
||||
name: cassandra |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
clusterIP: None |
|
||||
ports: |
|
||||
- port: 9042 |
|
||||
selector: |
|
||||
app: cassandra |
|
||||
--- |
|
||||
@ -1,43 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: Pod |
|
||||
metadata: |
|
||||
name: tb-db-setup |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
volumes: |
|
||||
- name: tb-node-config |
|
||||
configMap: |
|
||||
name: tb-node-config |
|
||||
items: |
|
||||
- key: conf |
|
||||
path: thingsboard.conf |
|
||||
- key: logback |
|
||||
path: logback.xml |
|
||||
containers: |
|
||||
- name: tb-db-setup |
|
||||
imagePullPolicy: Always |
|
||||
image: thingsboard/tb-node:latest |
|
||||
envFrom: |
|
||||
- configMapRef: |
|
||||
name: tb-node-db-config |
|
||||
volumeMounts: |
|
||||
- mountPath: /config |
|
||||
name: tb-node-config |
|
||||
command: ['sh', '-c', 'while [ ! -f /tmp/install-finished ]; do sleep 2; done;'] |
|
||||
restartPolicy: Never |
|
||||
@ -1,102 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: PersistentVolumeClaim |
|
||||
metadata: |
|
||||
name: postgres-pv-claim |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
app: postgres |
|
||||
spec: |
|
||||
accessModes: |
|
||||
- ReadWriteOnce |
|
||||
resources: |
|
||||
requests: |
|
||||
storage: 5Gi |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: postgres |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
app: postgres |
|
||||
spec: |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: postgres |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: postgres |
|
||||
spec: |
|
||||
volumes: |
|
||||
- name: postgres-data |
|
||||
persistentVolumeClaim: |
|
||||
claimName: postgres-pv-claim |
|
||||
containers: |
|
||||
- name: postgres |
|
||||
imagePullPolicy: Always |
|
||||
image: postgres:12 |
|
||||
ports: |
|
||||
- containerPort: 5432 |
|
||||
name: postgres |
|
||||
env: |
|
||||
- name: POSTGRES_DB |
|
||||
value: "thingsboard" |
|
||||
- name: POSTGRES_PASSWORD |
|
||||
value: "postgres" |
|
||||
- name: PGDATA |
|
||||
value: /var/lib/postgresql/data/pgdata |
|
||||
volumeMounts: |
|
||||
- mountPath: /var/lib/postgresql/data |
|
||||
name: postgres-data |
|
||||
livenessProbe: |
|
||||
exec: |
|
||||
command: |
|
||||
- pg_isready |
|
||||
- -h |
|
||||
- localhost |
|
||||
- -U |
|
||||
- postgres |
|
||||
initialDelaySeconds: 60 |
|
||||
timeoutSeconds: 30 |
|
||||
readinessProbe: |
|
||||
exec: |
|
||||
command: |
|
||||
- pg_isready |
|
||||
- -h |
|
||||
- localhost |
|
||||
- -U |
|
||||
- postgres |
|
||||
initialDelaySeconds: 5 |
|
||||
timeoutSeconds: 1 |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-database |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
selector: |
|
||||
app: postgres |
|
||||
ports: |
|
||||
- port: 5432 |
|
||||
name: postgres |
|
||||
--- |
|
||||
@ -1,65 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-coap-transport-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: tb-coap-transport-config |
|
||||
data: |
|
||||
conf: | |
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=/var/log/tb-coap-transport/${TB_SERVICE_ID}-gc.log:time,uptime,level,tags:filecount=10,filesize=10M" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-coap-transport/${TB_SERVICE_ID}-heapdump.bin" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError" |
|
||||
export LOG_FILENAME=tb-coap-transport.out |
|
||||
export LOADER_PATH=/usr/share/tb-coap-transport/conf |
|
||||
logback: | |
|
||||
<!DOCTYPE configuration> |
|
||||
<configuration scan="true" scanPeriod="10 seconds"> |
|
||||
|
|
||||
<appender name="fileLogAppender" |
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|
||||
<file>/var/log/tb-coap-transport/${TB_SERVICE_ID}/tb-coap-transport.log</file> |
|
||||
<rollingPolicy |
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
|
||||
<fileNamePattern>/var/log/tb-coap-transport/${TB_SERVICE_ID}/tb-coap-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
|
||||
<maxFileSize>100MB</maxFileSize> |
|
||||
<maxHistory>30</maxHistory> |
|
||||
<totalSizeCap>3GB</totalSizeCap> |
|
||||
</rollingPolicy> |
|
||||
<encoder> |
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
|
||||
</encoder> |
|
||||
</appender> |
|
||||
|
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
|
||||
<encoder> |
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
|
||||
</encoder> |
|
||||
</appender> |
|
||||
|
|
||||
<logger name="org.thingsboard.server" level="INFO" /> |
|
||||
|
|
||||
<root level="INFO"> |
|
||||
<appender-ref ref="fileLogAppender"/> |
|
||||
<appender-ref ref="STDOUT"/> |
|
||||
</root> |
|
||||
|
|
||||
</configuration> |
|
||||
@ -1,65 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-http-transport-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: tb-http-transport-config |
|
||||
data: |
|
||||
conf: | |
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=/var/log/tb-http-transport/${TB_SERVICE_ID}-gc.log:time,uptime,level,tags:filecount=10,filesize=10M" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-http-transport/${TB_SERVICE_ID}-heapdump.bin" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError" |
|
||||
export LOG_FILENAME=tb-http-transport.out |
|
||||
export LOADER_PATH=/usr/share/tb-http-transport/conf |
|
||||
logback: | |
|
||||
<!DOCTYPE configuration> |
|
||||
<configuration scan="true" scanPeriod="10 seconds"> |
|
||||
|
|
||||
<appender name="fileLogAppender" |
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|
||||
<file>/var/log/tb-http-transport/${TB_SERVICE_ID}/tb-http-transport.log</file> |
|
||||
<rollingPolicy |
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
|
||||
<fileNamePattern>/var/log/tb-http-transport/${TB_SERVICE_ID}/tb-http-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
|
||||
<maxFileSize>100MB</maxFileSize> |
|
||||
<maxHistory>30</maxHistory> |
|
||||
<totalSizeCap>3GB</totalSizeCap> |
|
||||
</rollingPolicy> |
|
||||
<encoder> |
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
|
||||
</encoder> |
|
||||
</appender> |
|
||||
|
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
|
||||
<encoder> |
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
|
||||
</encoder> |
|
||||
</appender> |
|
||||
|
|
||||
<logger name="org.thingsboard.server" level="INFO" /> |
|
||||
|
|
||||
<root level="INFO"> |
|
||||
<appender-ref ref="fileLogAppender"/> |
|
||||
<appender-ref ref="STDOUT"/> |
|
||||
</root> |
|
||||
|
|
||||
</configuration> |
|
||||
@ -1,65 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-mqtt-transport-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: tb-mqtt-transport-config |
|
||||
data: |
|
||||
conf: | |
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=/var/log/tb-mqtt-transport/${TB_SERVICE_ID}-gc.log:time,uptime,level,tags:filecount=10,filesize=10M" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tb-mqtt-transport/${TB_SERVICE_ID}-heapdump.bin" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError" |
|
||||
export LOG_FILENAME=tb-mqtt-transport.out |
|
||||
export LOADER_PATH=/usr/share/tb-mqtt-transport/conf |
|
||||
logback: | |
|
||||
<!DOCTYPE configuration> |
|
||||
<configuration scan="true" scanPeriod="10 seconds"> |
|
||||
|
|
||||
<appender name="fileLogAppender" |
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|
||||
<file>/var/log/tb-mqtt-transport/${TB_SERVICE_ID}/tb-mqtt-transport.log</file> |
|
||||
<rollingPolicy |
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
|
||||
<fileNamePattern>/var/log/tb-mqtt-transport/${TB_SERVICE_ID}/tb-mqtt-transport.%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
|
||||
<maxFileSize>100MB</maxFileSize> |
|
||||
<maxHistory>30</maxHistory> |
|
||||
<totalSizeCap>3GB</totalSizeCap> |
|
||||
</rollingPolicy> |
|
||||
<encoder> |
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
|
||||
</encoder> |
|
||||
</appender> |
|
||||
|
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
|
||||
<encoder> |
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
|
||||
</encoder> |
|
||||
</appender> |
|
||||
|
|
||||
<logger name="org.thingsboard.server" level="INFO" /> |
|
||||
|
|
||||
<root level="INFO"> |
|
||||
<appender-ref ref="fileLogAppender"/> |
|
||||
<appender-ref ref="STDOUT"/> |
|
||||
</root> |
|
||||
|
|
||||
</configuration> |
|
||||
@ -1,22 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: Namespace |
|
||||
metadata: |
|
||||
name: thingsboard |
|
||||
labels: |
|
||||
name: thingsboard |
|
||||
@ -1,67 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-node-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: tb-node-config |
|
||||
data: |
|
||||
conf: | |
|
||||
export JAVA_OPTS="$JAVA_OPTS -Dplatform=deb -Dinstall.data_dir=/usr/share/thingsboard/data" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=/var/log/thingsboard/${TB_SERVICE_ID}-gc.log:time,uptime,level,tags:filecount=10,filesize=10M" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/thingsboard/${TB_SERVICE_ID}-heapdump.bin" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10" |
|
||||
export JAVA_OPTS="$JAVA_OPTS -XX:+ExitOnOutOfMemoryError" |
|
||||
export LOG_FILENAME=thingsboard.out |
|
||||
export LOADER_PATH=/usr/share/thingsboard/conf,/usr/share/thingsboard/extensions |
|
||||
logback: | |
|
||||
<!DOCTYPE configuration> |
|
||||
<configuration scan="true" scanPeriod="10 seconds"> |
|
||||
|
|
||||
<appender name="fileLogAppender" |
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|
||||
<file>/var/log/thingsboard/${TB_SERVICE_ID}/thingsboard.log</file> |
|
||||
<rollingPolicy |
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
|
||||
<fileNamePattern>/var/log/thingsboard/${TB_SERVICE_ID}/thingsboard.%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
|
||||
<maxFileSize>100MB</maxFileSize> |
|
||||
<maxHistory>30</maxHistory> |
|
||||
<totalSizeCap>3GB</totalSizeCap> |
|
||||
</rollingPolicy> |
|
||||
<encoder> |
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
|
||||
</encoder> |
|
||||
</appender> |
|
||||
|
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
|
||||
<encoder> |
|
||||
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
|
||||
</encoder> |
|
||||
</appender> |
|
||||
|
|
||||
<logger name="org.thingsboard.server" level="INFO" /> |
|
||||
<logger name="com.google.common.util.concurrent.AggregateFuture" level="OFF" /> |
|
||||
|
|
||||
<root level="INFO"> |
|
||||
<appender-ref ref="fileLogAppender"/> |
|
||||
<appender-ref ref="STDOUT"/> |
|
||||
</root> |
|
||||
|
|
||||
</configuration> |
|
||||
@ -1,32 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-node-db-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: tb-node-db-config |
|
||||
data: |
|
||||
SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect |
|
||||
SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver |
|
||||
SPRING_DATASOURCE_URL: jdbc:postgresql://tb-database:5432/thingsboard |
|
||||
SPRING_DATASOURCE_USERNAME: postgres |
|
||||
SPRING_DATASOURCE_PASSWORD: postgres |
|
||||
DATABASE_TS_TYPE: cassandra |
|
||||
CASSANDRA_URL: cassandra:9042 |
|
||||
CASSANDRA_SOCKET_READ_TIMEOUT: "60000" |
|
||||
@ -1,30 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-node-db-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: tb-node-db-config |
|
||||
data: |
|
||||
DATABASE_TS_TYPE: sql |
|
||||
SPRING_JPA_DATABASE_PLATFORM: org.hibernate.dialect.PostgreSQLDialect |
|
||||
SPRING_DRIVER_CLASS_NAME: org.postgresql.Driver |
|
||||
SPRING_DATASOURCE_URL: jdbc:postgresql://tb-database:5432/thingsboard |
|
||||
SPRING_DATASOURCE_USERNAME: postgres |
|
||||
SPRING_DATASOURCE_PASSWORD: postgres |
|
||||
@ -1,98 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-node |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
replicas: 2 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-node |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-node |
|
||||
spec: |
|
||||
volumes: |
|
||||
- name: tb-node-config |
|
||||
configMap: |
|
||||
name: tb-node-config |
|
||||
items: |
|
||||
- key: conf |
|
||||
path: thingsboard.conf |
|
||||
- key: logback |
|
||||
path: logback.xml |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: thingsboard/tb-node:latest |
|
||||
ports: |
|
||||
- containerPort: 8080 |
|
||||
name: http |
|
||||
- containerPort: 9001 |
|
||||
name: rpc |
|
||||
env: |
|
||||
- name: TB_SERVICE_ID |
|
||||
valueFrom: |
|
||||
fieldRef: |
|
||||
fieldPath: metadata.name |
|
||||
- name: TB_SERVICE_TYPE |
|
||||
value: "monolith" |
|
||||
- name: TB_QUEUE_TYPE |
|
||||
value: "kafka" |
|
||||
- name: ZOOKEEPER_ENABLED |
|
||||
value: "true" |
|
||||
- name: ZOOKEEPER_URL |
|
||||
value: "zookeeper:2181" |
|
||||
- name: TB_KAFKA_SERVERS |
|
||||
value: "tb-kafka:9092" |
|
||||
- name: JS_EVALUATOR |
|
||||
value: "remote" |
|
||||
- name: TRANSPORT_TYPE |
|
||||
value: "remote" |
|
||||
- name: HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE |
|
||||
value: "false" |
|
||||
envFrom: |
|
||||
- configMapRef: |
|
||||
name: tb-node-db-config |
|
||||
- configMapRef: |
|
||||
name: tb-node-cache-config |
|
||||
volumeMounts: |
|
||||
- mountPath: /config |
|
||||
name: tb-node-config |
|
||||
livenessProbe: |
|
||||
httpGet: |
|
||||
path: /login |
|
||||
port: http |
|
||||
initialDelaySeconds: 300 |
|
||||
timeoutSeconds: 10 |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-node |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
selector: |
|
||||
app: tb-node |
|
||||
ports: |
|
||||
- port: 8080 |
|
||||
name: http |
|
||||
@ -1,451 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-js-executor |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
replicas: 20 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-js-executor |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-js-executor |
|
||||
spec: |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: thingsboard/tb-js-executor:latest |
|
||||
env: |
|
||||
- name: REMOTE_JS_EVAL_REQUEST_TOPIC |
|
||||
value: "js_eval.requests" |
|
||||
- name: TB_KAFKA_SERVERS |
|
||||
value: "tb-kafka:9092" |
|
||||
- name: LOGGER_LEVEL |
|
||||
value: "info" |
|
||||
- name: LOG_FOLDER |
|
||||
value: "logs" |
|
||||
- name: LOGGER_FILENAME |
|
||||
value: "tb-js-executor-%DATE%.log" |
|
||||
- name: DOCKER_MODE |
|
||||
value: "true" |
|
||||
- name: SCRIPT_BODY_TRACE_FREQUENCY |
|
||||
value: "1000" |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-mqtt-transport |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
replicas: 2 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-mqtt-transport |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-mqtt-transport |
|
||||
spec: |
|
||||
volumes: |
|
||||
- name: tb-mqtt-transport-config |
|
||||
configMap: |
|
||||
name: tb-mqtt-transport-config |
|
||||
items: |
|
||||
- key: conf |
|
||||
path: tb-mqtt-transport.conf |
|
||||
- key: logback |
|
||||
path: logback.xml |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: thingsboard/tb-mqtt-transport:latest |
|
||||
ports: |
|
||||
- containerPort: 1883 |
|
||||
name: mqtt |
|
||||
env: |
|
||||
- name: TB_SERVICE_ID |
|
||||
valueFrom: |
|
||||
fieldRef: |
|
||||
fieldPath: metadata.name |
|
||||
- name: TB_QUEUE_TYPE |
|
||||
value: "kafka" |
|
||||
- name: MQTT_BIND_ADDRESS |
|
||||
value: "0.0.0.0" |
|
||||
- name: MQTT_BIND_PORT |
|
||||
value: "1883" |
|
||||
- name: MQTT_TIMEOUT |
|
||||
value: "10000" |
|
||||
- name: TB_KAFKA_SERVERS |
|
||||
value: "tb-kafka:9092" |
|
||||
volumeMounts: |
|
||||
- mountPath: /config |
|
||||
name: tb-mqtt-transport-config |
|
||||
readinessProbe: |
|
||||
periodSeconds: 20 |
|
||||
tcpSocket: |
|
||||
port: 1883 |
|
||||
livenessProbe: |
|
||||
initialDelaySeconds: 120 |
|
||||
periodSeconds: 20 |
|
||||
tcpSocket: |
|
||||
port: 1883 |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-mqtt-transport |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: LoadBalancer |
|
||||
selector: |
|
||||
app: tb-mqtt-transport |
|
||||
ports: |
|
||||
- port: 1883 |
|
||||
targetPort: 1883 |
|
||||
name: mqtt |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-http-transport |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
replicas: 2 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-http-transport |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-http-transport |
|
||||
spec: |
|
||||
volumes: |
|
||||
- name: tb-http-transport-config |
|
||||
configMap: |
|
||||
name: tb-http-transport-config |
|
||||
items: |
|
||||
- key: conf |
|
||||
path: tb-http-transport.conf |
|
||||
- key: logback |
|
||||
path: logback.xml |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: thingsboard/tb-http-transport:latest |
|
||||
ports: |
|
||||
- containerPort: 8080 |
|
||||
name: http |
|
||||
env: |
|
||||
- name: TB_SERVICE_ID |
|
||||
valueFrom: |
|
||||
fieldRef: |
|
||||
fieldPath: metadata.name |
|
||||
- name: TB_QUEUE_TYPE |
|
||||
value: "kafka" |
|
||||
- name: HTTP_BIND_ADDRESS |
|
||||
value: "0.0.0.0" |
|
||||
- name: HTTP_BIND_PORT |
|
||||
value: "8080" |
|
||||
- name: HTTP_REQUEST_TIMEOUT |
|
||||
value: "60000" |
|
||||
- name: TB_KAFKA_SERVERS |
|
||||
value: "tb-kafka:9092" |
|
||||
volumeMounts: |
|
||||
- mountPath: /config |
|
||||
name: tb-http-transport-config |
|
||||
readinessProbe: |
|
||||
periodSeconds: 20 |
|
||||
tcpSocket: |
|
||||
port: 8080 |
|
||||
livenessProbe: |
|
||||
initialDelaySeconds: 120 |
|
||||
periodSeconds: 20 |
|
||||
tcpSocket: |
|
||||
port: 8080 |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-http-transport |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
selector: |
|
||||
app: tb-http-transport |
|
||||
ports: |
|
||||
- port: 8080 |
|
||||
name: http |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-coap-transport |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
replicas: 2 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-coap-transport |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-coap-transport |
|
||||
spec: |
|
||||
volumes: |
|
||||
- name: tb-coap-transport-config |
|
||||
configMap: |
|
||||
name: tb-coap-transport-config |
|
||||
items: |
|
||||
- key: conf |
|
||||
path: tb-coap-transport.conf |
|
||||
- key: logback |
|
||||
path: logback.xml |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: thingsboard/tb-coap-transport:latest |
|
||||
ports: |
|
||||
- containerPort: 5683 |
|
||||
name: coap |
|
||||
protocol: UDP |
|
||||
env: |
|
||||
- name: TB_SERVICE_ID |
|
||||
valueFrom: |
|
||||
fieldRef: |
|
||||
fieldPath: metadata.name |
|
||||
- name: TB_QUEUE_TYPE |
|
||||
value: "kafka" |
|
||||
- name: COAP_BIND_ADDRESS |
|
||||
value: "0.0.0.0" |
|
||||
- name: COAP_BIND_PORT |
|
||||
value: "5683" |
|
||||
- name: COAP_TIMEOUT |
|
||||
value: "10000" |
|
||||
- name: TB_KAFKA_SERVERS |
|
||||
value: "tb-kafka:9092" |
|
||||
volumeMounts: |
|
||||
- mountPath: /config |
|
||||
name: tb-coap-transport-config |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-coap-transport |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: LoadBalancer |
|
||||
selector: |
|
||||
app: tb-coap-transport |
|
||||
ports: |
|
||||
- port: 5683 |
|
||||
name: coap |
|
||||
protocol: UDP |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-lwm2m-transport |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
replicas: 2 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-lwm2m-transport |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-lwm2m-transport |
|
||||
spec: |
|
||||
volumes: |
|
||||
- name: tb-lwm2m-transport-config |
|
||||
configMap: |
|
||||
name: tb-lwm2m-transport-config |
|
||||
items: |
|
||||
- key: conf |
|
||||
path: tb-lwm2m-transport.conf |
|
||||
- key: logback |
|
||||
path: logback.xml |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: thingsboard/tb-lwm2m-transport:latest |
|
||||
ports: |
|
||||
- containerPort: 5685 |
|
||||
name: lwm2m |
|
||||
protocol: UDP |
|
||||
env: |
|
||||
- name: TB_SERVICE_ID |
|
||||
valueFrom: |
|
||||
fieldRef: |
|
||||
fieldPath: metadata.name |
|
||||
- name: TB_QUEUE_TYPE |
|
||||
value: "kafka" |
|
||||
- name: LWM2M_BIND_ADDRESS |
|
||||
value: "0.0.0.0" |
|
||||
- name: LWM2M_BIND_PORT |
|
||||
value: "5685" |
|
||||
- name: LWM2M_TIMEOUT |
|
||||
value: "10000" |
|
||||
- name: TB_KAFKA_SERVERS |
|
||||
value: "tb-kafka:9092" |
|
||||
volumeMounts: |
|
||||
- mountPath: /config |
|
||||
name: tb-lwm2m-transport-config |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-lwm2m-transport |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: LoadBalancer |
|
||||
selector: |
|
||||
app: tb-lwm2m-transport |
|
||||
ports: |
|
||||
- port: 5685 |
|
||||
name: lwm2m |
|
||||
protocol: UDP |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: Deployment |
|
||||
metadata: |
|
||||
name: tb-web-ui |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
replicas: 2 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-web-ui |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-web-ui |
|
||||
spec: |
|
||||
containers: |
|
||||
- name: server |
|
||||
imagePullPolicy: Always |
|
||||
image: thingsboard/tb-web-ui:latest |
|
||||
ports: |
|
||||
- containerPort: 8080 |
|
||||
name: http |
|
||||
env: |
|
||||
- name: HTTP_BIND_ADDRESS |
|
||||
value: "0.0.0.0" |
|
||||
- name: HTTP_BIND_PORT |
|
||||
value: "8080" |
|
||||
- name: TB_ENABLE_PROXY |
|
||||
value: "false" |
|
||||
- name: LOGGER_LEVEL |
|
||||
value: "info" |
|
||||
- name: LOG_FOLDER |
|
||||
value: "logs" |
|
||||
- name: LOGGER_FILENAME |
|
||||
value: "tb-web-ui-%DATE%.log" |
|
||||
- name: DOCKER_MODE |
|
||||
value: "true" |
|
||||
livenessProbe: |
|
||||
httpGet: |
|
||||
path: /index.html |
|
||||
port: http |
|
||||
initialDelaySeconds: 120 |
|
||||
timeoutSeconds: 10 |
|
||||
restartPolicy: Always |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-web-ui |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
selector: |
|
||||
app: tb-web-ui |
|
||||
ports: |
|
||||
- port: 8080 |
|
||||
name: http |
|
||||
--- |
|
||||
apiVersion: networking.k8s.io/v1beta1 |
|
||||
kind: Ingress |
|
||||
metadata: |
|
||||
name: tb-ingress |
|
||||
namespace: thingsboard |
|
||||
annotations: |
|
||||
nginx.ingress.kubernetes.io/use-regex: "true" |
|
||||
nginx.ingress.kubernetes.io/ssl-redirect: "false" |
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" |
|
||||
spec: |
|
||||
rules: |
|
||||
- http: |
|
||||
paths: |
|
||||
- path: /api/v1/.* |
|
||||
backend: |
|
||||
serviceName: tb-http-transport |
|
||||
servicePort: 8080 |
|
||||
- path: /api/.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: /swagger.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: /webjars.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: /v2/.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: /v3/.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: /static/rulenode/.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: /assets/help/.*/rulenode/.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: /oauth2/.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: /login/oauth2/.* |
|
||||
backend: |
|
||||
serviceName: tb-node |
|
||||
servicePort: 8080 |
|
||||
- path: / |
|
||||
backend: |
|
||||
serviceName: tb-web-ui |
|
||||
servicePort: 8080 |
|
||||
- path: /.* |
|
||||
backend: |
|
||||
serviceName: tb-web-ui |
|
||||
servicePort: 8080 |
|
||||
--- |
|
||||
@ -1,27 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-node-cache-config |
|
||||
namespace: thingsboard |
|
||||
labels: |
|
||||
name: tb-node-cache-config |
|
||||
data: |
|
||||
CACHE_TYPE: redis |
|
||||
REDIS_CONNECTION_TYPE: cluster |
|
||||
REDIS_NODES: tb-redis:6379 |
|
||||
@ -1,301 +0,0 @@ |
|||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
apiVersion: apps/v1 |
|
||||
kind: StatefulSet |
|
||||
metadata: |
|
||||
name: zookeeper |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
serviceName: "zookeeper" |
|
||||
replicas: 3 |
|
||||
podManagementPolicy: Parallel |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: zookeeper |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: zookeeper |
|
||||
spec: |
|
||||
containers: |
|
||||
- name: zookeeper |
|
||||
imagePullPolicy: Always |
|
||||
image: zookeeper:3.5 |
|
||||
ports: |
|
||||
- containerPort: 2181 |
|
||||
name: client |
|
||||
- containerPort: 2888 |
|
||||
name: server |
|
||||
- containerPort: 3888 |
|
||||
name: election |
|
||||
readinessProbe: |
|
||||
periodSeconds: 60 |
|
||||
tcpSocket: |
|
||||
port: 2181 |
|
||||
livenessProbe: |
|
||||
periodSeconds: 60 |
|
||||
tcpSocket: |
|
||||
port: 2181 |
|
||||
env: |
|
||||
- name: ZOO_SERVERS |
|
||||
value: "server.0=zookeeper-0.zookeeper:2888:3888;2181 server.1=zookeeper-1.zookeeper:2888:3888;2181 server.2=zookeeper-2.zookeeper:2888:3888;2181" |
|
||||
- name: JVMFLAGS |
|
||||
value: "-Dzookeeper.electionPortBindRetry=0" |
|
||||
volumeMounts: |
|
||||
- name: data |
|
||||
mountPath: /data |
|
||||
readOnly: false |
|
||||
initContainers: |
|
||||
- command: |
|
||||
- /bin/bash |
|
||||
- -c |
|
||||
- |- |
|
||||
set -ex; |
|
||||
mkdir -p "$ZOO_DATA_LOG_DIR" "$ZOO_DATA_DIR" "$ZOO_CONF_DIR"; |
|
||||
chown "$ZOO_USER:$ZOO_USER" "$ZOO_DATA_LOG_DIR" "$ZOO_DATA_DIR" "$ZOO_CONF_DIR" |
|
||||
if [[ ! -f "$ZOO_DATA_DIR/myid" ]]; then |
|
||||
echo $HOSTNAME| rev | cut -d "-" -f1 | rev > "$ZOO_DATA_DIR/myid" |
|
||||
fi |
|
||||
env: |
|
||||
- name: HOSTNAME |
|
||||
valueFrom: |
|
||||
fieldRef: |
|
||||
fieldPath: metadata.name |
|
||||
image: zookeeper:3.5 |
|
||||
imagePullPolicy: IfNotPresent |
|
||||
name: zookeeper-init |
|
||||
securityContext: |
|
||||
runAsUser: 0 |
|
||||
volumeMounts: |
|
||||
- name: data |
|
||||
mountPath: /data |
|
||||
readOnly: false |
|
||||
volumeClaimTemplates: |
|
||||
- metadata: |
|
||||
name: data |
|
||||
spec: |
|
||||
accessModes: [ "ReadWriteOnce" ] |
|
||||
resources: |
|
||||
requests: |
|
||||
storage: 100Mi |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: zookeeper |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
ports: |
|
||||
- port: 2181 |
|
||||
targetPort: 2181 |
|
||||
name: client |
|
||||
- port: 2888 |
|
||||
targetPort: 2888 |
|
||||
name: server |
|
||||
- port: 3888 |
|
||||
targetPort: 3888 |
|
||||
name: election |
|
||||
selector: |
|
||||
app: zookeeper |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: StatefulSet |
|
||||
metadata: |
|
||||
name: tb-kafka |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
serviceName: "tb-kafka" |
|
||||
replicas: 3 |
|
||||
podManagementPolicy: Parallel |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-kafka |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-kafka |
|
||||
spec: |
|
||||
containers: |
|
||||
- name: tb-kafka |
|
||||
imagePullPolicy: Always |
|
||||
image: wurstmeister/kafka:2.12-2.2.1 |
|
||||
ports: |
|
||||
- containerPort: 9092 |
|
||||
name: kafka-int |
|
||||
readinessProbe: |
|
||||
periodSeconds: 5 |
|
||||
timeoutSeconds: 5 |
|
||||
tcpSocket: |
|
||||
port: 9092 |
|
||||
initialDelaySeconds: 60 |
|
||||
livenessProbe: |
|
||||
timeoutSeconds: 5 |
|
||||
periodSeconds: 5 |
|
||||
tcpSocket: |
|
||||
port: 9092 |
|
||||
initialDelaySeconds: 80 |
|
||||
env: |
|
||||
- name: BROKER_ID_COMMAND |
|
||||
value: "hostname | cut -d'-' -f3" |
|
||||
- name: KAFKA_ZOOKEEPER_CONNECT |
|
||||
value: "zookeeper:2181" |
|
||||
- name: KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS |
|
||||
value: "60000" |
|
||||
- name: KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE |
|
||||
value: "true" |
|
||||
- name: KAFKA_LISTENERS |
|
||||
value: "INSIDE://:9092" |
|
||||
- name: KAFKA_ADVERTISED_LISTENERS |
|
||||
value: "INSIDE://:9092" |
|
||||
- name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP |
|
||||
value: "INSIDE:PLAINTEXT" |
|
||||
- name: KAFKA_INTER_BROKER_LISTENER_NAME |
|
||||
value: "INSIDE" |
|
||||
- name: KAFKA_CONTROLLER_SHUTDOWN_ENABLE |
|
||||
value: "true" |
|
||||
- name: KAFKA_CREATE_TOPICS |
|
||||
value: "js_eval.requests:100:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb_transport.api.requests:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb_rule_engine:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600" |
|
||||
- name: KAFKA_AUTO_CREATE_TOPICS_ENABLE |
|
||||
value: "false" |
|
||||
- name: KAFKA_LOG_RETENTION_BYTES |
|
||||
value: "1073741824" |
|
||||
- name: KAFKA_LOG_SEGMENT_BYTES |
|
||||
value: "268435456" |
|
||||
- name: KAFKA_LOG_RETENTION_MS |
|
||||
value: "300000" |
|
||||
- name: KAFKA_LOG_CLEANUP_POLICY |
|
||||
value: "delete" |
|
||||
- name: KAFKA_PORT |
|
||||
value: "9092" |
|
||||
- name: KAFKA_LOG_DIRS |
|
||||
value: "/kafka-logs" |
|
||||
volumeMounts: |
|
||||
- name: logs |
|
||||
mountPath: /kafka-logs |
|
||||
subPath: logs |
|
||||
volumeClaimTemplates: |
|
||||
- metadata: |
|
||||
name: logs |
|
||||
spec: |
|
||||
accessModes: |
|
||||
- ReadWriteOnce |
|
||||
resources: |
|
||||
requests: |
|
||||
storage: 1Gi |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-kafka |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
ports: |
|
||||
- port: 9092 |
|
||||
targetPort: 9092 |
|
||||
name: kafka-int |
|
||||
selector: |
|
||||
app: tb-kafka |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: ConfigMap |
|
||||
metadata: |
|
||||
name: tb-redis |
|
||||
namespace: thingsboard |
|
||||
data: |
|
||||
update-node.sh: | |
|
||||
#!/bin/sh |
|
||||
REDIS_NODES="/data/nodes.conf" |
|
||||
sed -i -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES} |
|
||||
exec "$@" |
|
||||
redis.conf: |+ |
|
||||
cluster-enabled yes |
|
||||
cluster-require-full-coverage no |
|
||||
cluster-node-timeout 15000 |
|
||||
cluster-config-file /data/nodes.conf |
|
||||
cluster-migration-barrier 1 |
|
||||
appendonly yes |
|
||||
protected-mode no |
|
||||
--- |
|
||||
apiVersion: apps/v1 |
|
||||
kind: StatefulSet |
|
||||
metadata: |
|
||||
name: tb-redis |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
serviceName: server |
|
||||
replicas: 6 |
|
||||
selector: |
|
||||
matchLabels: |
|
||||
app: tb-redis |
|
||||
template: |
|
||||
metadata: |
|
||||
labels: |
|
||||
app: tb-redis |
|
||||
spec: |
|
||||
containers: |
|
||||
- name: redis |
|
||||
image: redis:5.0.1-alpine |
|
||||
ports: |
|
||||
- containerPort: 6379 |
|
||||
name: client |
|
||||
- containerPort: 16379 |
|
||||
name: gossip |
|
||||
command: ["/conf/update-node.sh", "redis-server", "/conf/redis.conf"] |
|
||||
env: |
|
||||
- name: POD_IP |
|
||||
valueFrom: |
|
||||
fieldRef: |
|
||||
fieldPath: status.podIP |
|
||||
volumeMounts: |
|
||||
- name: conf |
|
||||
mountPath: /conf |
|
||||
readOnly: false |
|
||||
- name: data |
|
||||
mountPath: /data |
|
||||
readOnly: false |
|
||||
volumes: |
|
||||
- name: conf |
|
||||
configMap: |
|
||||
name: tb-redis |
|
||||
defaultMode: 0755 |
|
||||
volumeClaimTemplates: |
|
||||
- metadata: |
|
||||
name: data |
|
||||
spec: |
|
||||
accessModes: [ "ReadWriteOnce" ] |
|
||||
resources: |
|
||||
requests: |
|
||||
storage: 100Mi |
|
||||
--- |
|
||||
apiVersion: v1 |
|
||||
kind: Service |
|
||||
metadata: |
|
||||
name: tb-redis |
|
||||
namespace: thingsboard |
|
||||
spec: |
|
||||
type: ClusterIP |
|
||||
ports: |
|
||||
- port: 6379 |
|
||||
targetPort: 6379 |
|
||||
name: client |
|
||||
- port: 16379 |
|
||||
targetPort: 16379 |
|
||||
name: gossip |
|
||||
selector: |
|
||||
app: tb-redis |
|
||||
@ -1,20 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
kubectl -n thingsboard delete svc,sts,deploy,cm,po,ing --all |
|
||||
|
|
||||
kubectl -n thingsboard get pvc --no-headers=true | awk '//{print $1}' | xargs kubectl -n thingsboard delete --ignore-not-found=true pvc |
|
||||
@ -1,25 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
set -e |
|
||||
|
|
||||
source .env |
|
||||
|
|
||||
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard |
|
||||
|
|
||||
kubectl delete -f common/thingsboard.yml |
|
||||
kubectl delete -f common/tb-node.yml |
|
||||
@ -1,23 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
set -e |
|
||||
|
|
||||
source .env |
|
||||
|
|
||||
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard |
|
||||
kubectl delete -f $DEPLOYMENT_TYPE/thirdparty.yml |
|
||||
@ -1,30 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
set -e |
|
||||
|
|
||||
source .env |
|
||||
|
|
||||
kubectl apply -f common/tb-namespace.yml |
|
||||
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard |
|
||||
kubectl apply -f common/tb-node-configmap.yml |
|
||||
kubectl apply -f common/tb-mqtt-transport-configmap.yml |
|
||||
kubectl apply -f common/tb-http-transport-configmap.yml |
|
||||
kubectl apply -f common/tb-coap-transport-configmap.yml |
|
||||
kubectl apply -f common/thingsboard.yml |
|
||||
kubectl apply -f $DEPLOYMENT_TYPE/tb-node-cache-configmap.yml |
|
||||
kubectl apply -f common/tb-node.yml |
|
||||
@ -1,45 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
set -e |
|
||||
|
|
||||
source .env |
|
||||
|
|
||||
kubectl apply -f common/tb-namespace.yml |
|
||||
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard |
|
||||
|
|
||||
kubectl apply -f $DEPLOYMENT_TYPE/thirdparty.yml |
|
||||
|
|
||||
|
|
||||
if [ "$DEPLOYMENT_TYPE" == "high-availability" ]; then |
|
||||
echo -n "waiting for all redis pods to be ready"; |
|
||||
while [[ $(kubectl get pods tb-redis-5 -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}' 2>/dev/null) != "True" ]]; |
|
||||
do |
|
||||
echo -n "." && sleep 5; |
|
||||
done |
|
||||
|
|
||||
if [[ $(kubectl exec -it tb-redis-0 -- redis-cli cluster info 2>&1 | head -n 1) =~ "cluster_state:ok" ]] |
|
||||
then |
|
||||
echo "redis cluster is already configured" |
|
||||
else |
|
||||
echo "starting redis cluster" |
|
||||
redisNodes=$(kubectl get pods -l app=tb-redis -o jsonpath='{range.items[*]}{.status.podIP}:6379 ') |
|
||||
kubectl exec -it tb-redis-0 -- redis-cli --cluster create --cluster-replicas 1 $redisNodes |
|
||||
fi |
|
||||
|
|
||||
fi |
|
||||
|
|
||||
@ -1,106 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
function installTb() { |
|
||||
|
|
||||
loadDemo=$1 |
|
||||
|
|
||||
kubectl apply -f common/tb-node-configmap.yml |
|
||||
kubectl apply -f common/database-setup.yml && |
|
||||
kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s && |
|
||||
kubectl exec tb-db-setup -- sh -c 'export INSTALL_TB=true; export LOAD_DEMO='"$loadDemo"'; start-tb-node.sh; touch /tmp/install-finished;' |
|
||||
|
|
||||
kubectl delete pod tb-db-setup |
|
||||
|
|
||||
} |
|
||||
|
|
||||
function installPostgres() { |
|
||||
|
|
||||
kubectl apply -f common/postgres.yml |
|
||||
kubectl apply -f common/tb-node-postgres-configmap.yml |
|
||||
|
|
||||
kubectl rollout status deployment/postgres |
|
||||
} |
|
||||
|
|
||||
function installHybrid() { |
|
||||
|
|
||||
kubectl apply -f common/postgres.yml |
|
||||
kubectl apply -f common/cassandra.yml |
|
||||
kubectl apply -f common/tb-node-hybrid-configmap.yml |
|
||||
|
|
||||
kubectl rollout status deployment/postgres |
|
||||
kubectl rollout status statefulset/cassandra |
|
||||
|
|
||||
kubectl exec -it cassandra-0 -- bash -c "cqlsh -e \ |
|
||||
\"CREATE KEYSPACE IF NOT EXISTS thingsboard \ |
|
||||
WITH replication = { \ |
|
||||
'class' : 'SimpleStrategy', \ |
|
||||
'replication_factor' : 1 \ |
|
||||
};\"" |
|
||||
} |
|
||||
|
|
||||
while [[ $# -gt 0 ]] |
|
||||
do |
|
||||
key="$1" |
|
||||
|
|
||||
case $key in |
|
||||
--loadDemo) |
|
||||
LOAD_DEMO=true |
|
||||
shift # past argument |
|
||||
;; |
|
||||
*) |
|
||||
# unknown option |
|
||||
;; |
|
||||
esac |
|
||||
shift # past argument or value |
|
||||
done |
|
||||
|
|
||||
if [ "$LOAD_DEMO" == "true" ]; then |
|
||||
loadDemo=true |
|
||||
else |
|
||||
loadDemo=false |
|
||||
fi |
|
||||
|
|
||||
source .env |
|
||||
|
|
||||
kubectl apply -f common/tb-namespace.yml |
|
||||
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard |
|
||||
|
|
||||
case $DEPLOYMENT_TYPE in |
|
||||
basic) |
|
||||
;; |
|
||||
high-availability) |
|
||||
;; |
|
||||
*) |
|
||||
echo "Unknown DEPLOYMENT_TYPE value specified: '${DEPLOYMENT_TYPE}'. Should be either basic or high-availability." >&2 |
|
||||
exit 1 |
|
||||
esac |
|
||||
|
|
||||
case $DATABASE in |
|
||||
postgres) |
|
||||
installPostgres |
|
||||
installTb ${loadDemo} |
|
||||
;; |
|
||||
hybrid) |
|
||||
installHybrid |
|
||||
installTb ${loadDemo} |
|
||||
;; |
|
||||
*) |
|
||||
echo "Unknown DATABASE value specified: '${DATABASE}'. Should be either postgres or hybrid." >&2 |
|
||||
exit 1 |
|
||||
esac |
|
||||
|
|
||||
@ -1,43 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
# Copyright © 2016-2021 The Thingsboard Authors |
|
||||
# |
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
# you may not use this file except in compliance with the License. |
|
||||
# You may obtain a copy of the License at |
|
||||
# |
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
# |
|
||||
# Unless required by applicable law or agreed to in writing, software |
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
# See the License for the specific language governing permissions and |
|
||||
# limitations under the License. |
|
||||
# |
|
||||
|
|
||||
for i in "$@" |
|
||||
do |
|
||||
case $i in |
|
||||
--fromVersion=*) |
|
||||
FROM_VERSION="${i#*=}" |
|
||||
shift |
|
||||
;; |
|
||||
*) |
|
||||
# unknown option |
|
||||
;; |
|
||||
esac |
|
||||
done |
|
||||
|
|
||||
if [[ -z "${FROM_VERSION// }" ]]; then |
|
||||
echo "--fromVersion parameter is invalid or unspecified!" |
|
||||
echo "Usage: k8s-upgrade-tb.sh --fromVersion={VERSION}" |
|
||||
exit 1 |
|
||||
else |
|
||||
fromVersion="${FROM_VERSION// }" |
|
||||
fi |
|
||||
|
|
||||
kubectl apply -f common/database-setup.yml && |
|
||||
kubectl wait --for=condition=Ready pod/tb-db-setup --timeout=120s && |
|
||||
kubectl exec tb-db-setup -- sh -c 'export UPGRADE_TB=true; export FROM_VERSION='"$fromVersion"'; start-tb-node.sh; touch /tmp/install-finished;' |
|
||||
|
|
||||
kubectl delete pod tb-db-setup |
|
||||
Loading…
Reference in new issue