47 changed files with 637 additions and 434 deletions
@ -0,0 +1,21 @@ |
|||||
|
#!/bin/bash |
||||
|
# |
||||
|
# 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. |
||||
|
# |
||||
|
|
||||
|
set -e |
||||
|
|
||||
|
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard |
||||
|
kubectl delete -f thirdparty.yml |
||||
@ -0,0 +1,22 @@ |
|||||
|
#!/bin/bash |
||||
|
# |
||||
|
# 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. |
||||
|
# |
||||
|
|
||||
|
set -e |
||||
|
|
||||
|
kubectl apply -f tb-namespace.yml |
||||
|
kubectl config set-context $(kubectl config current-context) --namespace=thingsboard |
||||
|
kubectl apply -f thirdparty.yml |
||||
@ -0,0 +1,286 @@ |
|||||
|
# |
||||
|
# 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: 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: 1Gi |
||||
|
--- |
||||
|
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 |
||||
|
labels: |
||||
|
app: tb-kafka |
||||
|
spec: |
||||
|
replicas: 3 |
||||
|
podManagementPolicy: OrderedReady |
||||
|
serviceName: server |
||||
|
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 |
||||
|
readinessProbe: |
||||
|
periodSeconds: 20 |
||||
|
tcpSocket: |
||||
|
port: 9092 |
||||
|
livenessProbe: |
||||
|
periodSeconds: 5 |
||||
|
tcpSocket: |
||||
|
port: 9092 |
||||
|
env: |
||||
|
- name: BROKER_ID_COMMAND |
||||
|
value: "hostname | cut -d'-' -f3" |
||||
|
- name: KAFKA_ZOOKEEPER_CONNECT |
||||
|
value: "zookeeper:2181" |
||||
|
- name: KAFKA_ADVERTISED_PORT |
||||
|
value: "9092" |
||||
|
- name: KAFKA_LISTENERS |
||||
|
value: "PLAINTEXT://:9092" |
||||
|
- 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: 10Gi |
||||
|
--- |
||||
|
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: 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: 1Gi |
||||
|
--- |
||||
|
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 |
||||
Loading…
Reference in new issue