26 changed files with 477 additions and 157 deletions
@ -1,5 +1,8 @@ |
|||||
|
# 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=high-availability |
||||
|
|
||||
# Database used by ThingsBoard, can be either postgres (PostgreSQL) or cassandra (Cassandra). |
# 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). |
# According to the database type corresponding kubernetes resources will be deployed (see postgres.yml, cassandra.yml for details). |
||||
|
|
||||
DATABASE=postgres |
DATABASE=postgres |
||||
|
|
||||
|
|||||
@ -0,0 +1,181 @@ |
|||||
|
# |
||||
|
# Copyright © 2016-2020 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 |
||||
|
--- |
||||
@ -0,0 +1,32 @@ |
|||||
|
# |
||||
|
# Copyright © 2016-2020 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" |
||||
@ -0,0 +1,98 @@ |
|||||
|
# |
||||
|
# Copyright © 2016-2020 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 |
||||
@ -0,0 +1,27 @@ |
|||||
|
# |
||||
|
# Copyright © 2016-2020 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 |
||||
Loading…
Reference in new issue