# # Copyright © 2016-2018 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: Service metadata: name: cassandra-headless labels: app: cassandra-headless spec: ports: - port: 9042 name: cql clusterIP: None selector: app: cassandra --- apiVersion: "apps/v1beta1" kind: StatefulSet metadata: name: cassandra spec: serviceName: cassandra-headless replicas: 2 template: metadata: labels: app: cassandra spec: nodeSelector: machinetype: other affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app" operator: In values: - cassandra-headless topologyKey: "kubernetes.io/hostname" containers: - name: cassandra image: thingsboard/cassandra:2.1.0 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 securityContext: capabilities: add: - IPC_LOCK lifecycle: preStop: exec: command: ["/bin/sh", "-c", "PID=$(pidof java) && kill $PID && while ps -p $PID > /dev/null; do sleep 1; done"] env: - name: MAX_HEAP_SIZE value: 2048M - name: HEAP_NEWSIZE value: 100M - name: CASSANDRA_SEEDS value: "cassandra-0.cassandra-headless.default.svc.cluster.local" - name: CASSANDRA_CLUSTER_NAME value: "Thingsboard-Cluster" - name: CASSANDRA_DC value: "DC1-Thingsboard-Cluster" - name: CASSANDRA_RACK value: "Rack-Thingsboard-Cluster" - name: CASSANDRA_AUTO_BOOTSTRAP value: "false" - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace readinessProbe: exec: command: - /bin/bash - -c - /ready-probe.sh initialDelaySeconds: 15 timeoutSeconds: 5 volumeMounts: - name: cassandra-data mountPath: /var/lib/cassandra/data - name: cassandra-commitlog mountPath: /var/lib/cassandra/commitlog volumeClaimTemplates: - metadata: name: cassandra-data annotations: volume.beta.kubernetes.io/storage-class: fast spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 3Gi - metadata: name: cassandra-commitlog annotations: volume.beta.kubernetes.io/storage-class: fast spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 2Gi