--- # Source: cassandra/templates/cassandra-secret.yaml apiVersion: v1 kind: Secret metadata: name: my-release-cassandra namespace: default labels: app.kubernetes.io/name: cassandra helm.sh/chart: cassandra-6.0.1 app.kubernetes.io/instance: my-release app.kubernetes.io/managed-by: Helm type: Opaque data: cassandra-password: "SFVZRzR2VU4zaQ==" --- # Source: cassandra/templates/headless-svc.yaml apiVersion: v1 kind: Service metadata: name: my-release-cassandra-headless namespace: default labels: app.kubernetes.io/name: cassandra helm.sh/chart: cassandra-6.0.1 app.kubernetes.io/instance: my-release app.kubernetes.io/managed-by: Helm spec: clusterIP: None publishNotReadyAddresses: true ports: - name: intra port: 7000 targetPort: intra - name: tls port: 7001 targetPort: tls - name: jmx port: 7199 targetPort: jmx - name: cql port: 9042 targetPort: cql - name: thrift port: 9160 targetPort: thrift selector: app.kubernetes.io/name: cassandra app.kubernetes.io/instance: my-release --- # Source: cassandra/templates/service.yaml apiVersion: v1 kind: Service metadata: name: my-release-cassandra namespace: default labels: app.kubernetes.io/name: cassandra helm.sh/chart: cassandra-6.0.1 app.kubernetes.io/instance: my-release app.kubernetes.io/managed-by: Helm spec: type: ClusterIP ports: - name: cql port: 9042 targetPort: cql nodePort: null - name: thrift port: 9160 targetPort: thrift nodePort: null - name: metrics port: 8080 nodePort: null selector: app.kubernetes.io/name: cassandra app.kubernetes.io/instance: my-release --- # Source: cassandra/templates/statefulset.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: my-release-cassandra namespace: default labels: app.kubernetes.io/name: cassandra helm.sh/chart: cassandra-6.0.1 app.kubernetes.io/instance: my-release app.kubernetes.io/managed-by: Helm spec: selector: matchLabels: app.kubernetes.io/name: cassandra app.kubernetes.io/instance: my-release matchExpressions: - { key: tier, operator: In, values: [cache] } - { key: environment, operator: NotIn, values: [dev] } serviceName: my-release-cassandra-headless podManagementPolicy: OrderedReady replicas: 2 updateStrategy: type: RollingUpdate template: metadata: labels: app.kubernetes.io/name: cassandra helm.sh/chart: cassandra-6.0.1 app.kubernetes.io/instance: my-release app.kubernetes.io/managed-by: Helm spec: affinity: podAffinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchLabels: app.kubernetes.io/name: cassandra app.kubernetes.io/instance: my-release namespaces: - default topologyKey: kubernetes.io/hostname weight: 1 nodeAffinity: securityContext: fsGroup: 1001 containers: - name: cassandra command: - bash - -ec - | # Node 0 is the password seeder if [[ $HOSTNAME =~ (.*)-0$ ]]; then echo "Setting node as password seeder" export CASSANDRA_PASSWORD_SEEDER=yes else # Only node 0 will execute the startup initdb scripts export CASSANDRA_IGNORE_INITDB_SCRIPTS=1 fi /opt/bitnami/scripts/cassandra/entrypoint.sh /opt/bitnami/scripts/cassandra/run.sh image: docker.io/bitnami/cassandra:3.11.8-debian-10-r20 imagePullPolicy: "IfNotPresent" securityContext: runAsUser: 1001 env: - name: BITNAMI_DEBUG value: "false" - name: CASSANDRA_CLUSTER_NAME value: cassandra - name: CASSANDRA_SEEDS value: "my-release-cassandra-0.my-release-cassandra-headless.default.svc.cluster.local" - name: CASSANDRA_PASSWORD valueFrom: secretKeyRef: name: my-release-cassandra key: cassandra-password - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: CASSANDRA_USER value: "cassandra" - name: CASSANDRA_NUM_TOKENS value: "256" - name: CASSANDRA_DATACENTER value: dc1 - name: CASSANDRA_ENDPOINT_SNITCH value: SimpleSnitch - name: CASSANDRA_RACK value: rack1 - name: CASSANDRA_ENABLE_RPC value: "true" envFrom: livenessProbe: exec: command: - /bin/bash - -ec - | nodetool status initialDelaySeconds: 60 periodSeconds: 30 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 readinessProbe: exec: command: - /bin/bash - -ec - | nodetool status | grep -E "^UN\\s+${POD_IP}" initialDelaySeconds: 60 periodSeconds: 10 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 ports: - name: intra containerPort: 7000 - name: tls containerPort: 7001 - name: jmx containerPort: 7199 - name: cql containerPort: 9042 - name: thrift containerPort: 9160 resources: limits: {} requests: {} volumeMounts: - name: data mountPath: /bitnami/cassandra volumes: - name: config-volume configMap: name: config-example volumeClaimTemplates: - metadata: name: data labels: app.kubernetes.io/name: cassandra app.kubernetes.io/instance: my-release spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "8Gi"