# # 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 ---