+++ /dev/null
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- name: {{ template "cassandra.fullname" . }}
- labels:
- app: {{ template "cassandra.name" . }}
- chart: {{ template "cassandra.chart" . }}
- release: {{ .Release.Name }}
- heritage: {{ .Release.Service }}
-spec:
- selector:
- matchLabels:
- app: {{ template "cassandra.name" . }}
- release: {{ .Release.Name }}
- serviceName: {{ template "cassandra.fullname" . }}
- replicas: {{ .Values.config.cluster_size }}
- podManagementPolicy: {{ .Values.podManagementPolicy }}
- updateStrategy:
- type: {{ .Values.updateStrategy.type }}
- template:
- metadata:
- labels:
- app: {{ template "cassandra.name" . }}
- release: {{ .Release.Name }}
-{{- if .Values.podLabels }}
-{{ toYaml .Values.podLabels | indent 8 }}
-{{- end }}
-{{- if .Values.podAnnotations }}
- annotations:
-{{ toYaml .Values.podAnnotations | indent 8 }}
-{{- end }}
- spec:
- hostNetwork: {{ .Values.hostNetwork }}
-{{- if .Values.selector }}
-{{ toYaml .Values.selector | indent 6 }}
-{{- end }}
- {{- if .Values.securityContext.enabled }}
- securityContext:
- fsGroup: {{ .Values.securityContext.fsGroup }}
- runAsUser: {{ .Values.securityContext.runAsUser }}
- {{- end }}
-{{- if .Values.affinity }}
- affinity:
-{{ toYaml .Values.affinity | indent 8 }}
-{{- end }}
-{{- if .Values.tolerations }}
- tolerations:
-{{ toYaml .Values.tolerations | indent 8 }}
-{{- end }}
- containers:
-{{- if .Values.exporter.enabled }}
- - name: cassandra-exporter
- image: "{{ .Values.exporter.image.repo }}:{{ .Values.exporter.image.tag }}"
- env:
- - name: CASSANDRA_EXPORTER_CONFIG_listenPort
- value: {{ .Values.exporter.port | quote }}
- - name: JVM_OPTS
- value: {{ .Values.exporter.jvmOpts | quote }}
- ports:
- - name: metrics
- containerPort: {{ .Values.exporter.port }}
- protocol: TCP
- - name: jmx
- containerPort: 5555
- livenessProbe:
- tcpSocket:
- port: {{ .Values.exporter.port }}
- readinessProbe:
- httpGet:
- path: /metrics
- port: {{ .Values.exporter.port }}
- initialDelaySeconds: 20
- timeoutSeconds: 45
-{{- end }}
- - name: {{ template "cassandra.fullname" . }}
- image: "{{ .Values.image.repo }}:{{ .Values.image.tag }}"
- imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
-{{- if .Values.commandOverrides }}
- command: {{ .Values.commandOverrides }}
-{{- end }}
-{{- if .Values.argsOverrides }}
- args: {{ .Values.argsOverrides }}
-{{- end }}
- resources:
-{{ toYaml .Values.resources | indent 10 }}
- env:
- {{- $seed_size := default 1 .Values.config.seed_size | int -}}
- {{- $global := . }}
- - name: CASSANDRA_SEEDS
- {{- if .Values.hostNetwork }}
- value: {{ required "You must fill \".Values.config.seeds\" with list of Cassandra seeds when hostNetwork is set to true" .Values.config.seeds | quote }}
- {{- else }}
- value: "{{- range $i, $e := until $seed_size }}{{ template "cassandra.fullname" $global }}-{{ $i }}.{{ template "cassandra.fullname" $global }}.{{ $global.Release.Namespace }}.svc.{{ $global.Values.config.cluster_domain }}{{- if (lt ( add1 $i ) $seed_size ) }},{{- end }}{{- end }}"
- {{- end }}
- - name: MAX_HEAP_SIZE
- value: {{ default "8192M" .Values.config.max_heap_size | quote }}
- - name: HEAP_NEWSIZE
- value: {{ default "200M" .Values.config.heap_new_size | quote }}
- - name: CASSANDRA_ENDPOINT_SNITCH
- value: {{ default "SimpleSnitch" .Values.config.endpoint_snitch | quote }}
- - name: CASSANDRA_CLUSTER_NAME
- value: {{ default "Cassandra" .Values.config.cluster_name | quote }}
- - name: CASSANDRA_DC
- value: {{ default "DC1" .Values.config.dc_name | quote }}
- - name: CASSANDRA_RACK
- value: {{ default "RAC1" .Values.config.rack_name | quote }}
- - name: CASSANDRA_START_RPC
- value: {{ default "false" .Values.config.start_rpc | quote }}
- - name: POD_IP
- valueFrom:
- fieldRef:
- fieldPath: status.podIP
- {{- range $key, $value := .Values.env }}
- - name: {{ $key | quote }}
- value: {{ $value | quote }}
- {{- end }}
- livenessProbe:
- exec:
- command: [ "/bin/sh", "-c", "nodetool status" ]
- initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
- periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
- timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
- successThreshold: {{ .Values.livenessProbe.successThreshold }}
- failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
- readinessProbe:
- exec:
- command: [ "/bin/sh", "-c", "nodetool status | grep -E \"^UN\\s+${POD_IP}\"" ]
- initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
- periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
- timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
- successThreshold: {{ .Values.readinessProbe.successThreshold }}
- failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
- ports:
- - name: intra
- containerPort: 7000
- - name: tls
- containerPort: 7001
- - name: jmx
- containerPort: 7199
- - name: cql
- containerPort: {{ default 9042 .Values.config.ports.cql }}
- - name: thrift
- containerPort: {{ default 9160 .Values.config.ports.thrift }}
- {{- if .Values.config.ports.agent }}
- - name: agent
- containerPort: {{ .Values.config.ports.agent }}
- {{- end }}
- volumeMounts:
- - name: data
- mountPath: /var/lib/cassandra
-{{- range $key, $value := .Values.configOverrides }}
- - name: cassandra-config-{{ $key | replace "." "-" }}
- mountPath: /etc/cassandra/{{ $key }}
- subPath: {{ $key }}
-{{- end }}
- {{- if not .Values.persistence.enabled }}
- lifecycle:
- preStop:
- exec:
- command: ["/bin/sh", "-c", "exec nodetool decommission"]
- {{- end }}
- terminationGracePeriodSeconds: {{ default 30 .Values.podSettings.terminationGracePeriodSeconds }}
- {{- if .Values.image.pullSecrets }}
- imagePullSecrets:
- - name: {{ .Values.image.pullSecrets }}
- {{- end }}
-{{- if or .Values.configOverrides (not .Values.persistence.enabled) }}
- volumes:
-{{- end }}
-{{- range $key, $value := .Values.configOverrides }}
- - configMap:
- name: cassandra
- name: cassandra-config-{{ $key | replace "." "-" }}
-{{- end }}
-{{- if not .Values.persistence.enabled }}
- - name: data
- emptyDir: {}
-{{- else }}
- volumeClaimTemplates:
- - metadata:
- name: data
- labels:
- app: {{ template "cassandra.name" . }}
- chart: {{ template "cassandra.chart" . }}
- release: {{ .Release.Name }}
- heritage: {{ .Release.Service }}
- spec:
- accessModes:
- - {{ .Values.persistence.accessMode | quote }}
- resources:
- requests:
- storage: {{ .Values.persistence.size | quote }}
- {{- if .Values.persistence.storageClass }}
- {{- if (eq "-" .Values.persistence.storageClass) }}
- storageClassName: ""
- {{- else }}
- storageClassName: "{{ .Values.persistence.storageClass }}"
- {{- end }}
- {{- end }}
-{{- end }}