1+ apiVersion : apps/v1
2+ kind : StatefulSet
3+ metadata :
4+ name : {{ $.Release.Name }}-scylladb
5+ labels :
6+ app : {{ $.Release.Name }}-scylladb
7+ spec :
8+ replicas : 1
9+ serviceName : {{ $.Release.Name }}-scylladb
10+ selector :
11+ matchLabels :
12+ app : {{ $.Release.Name }}-scylladb
13+ template :
14+ metadata :
15+ labels :
16+ app : {{ $.Release.Name }}-scylladb
17+ spec :
18+ initContainers :
19+ - name : sysctl-tune
20+ image : busybox:1.35.0-uclibc
21+ command :
22+ - " sh"
23+ - " -c"
24+ - " sysctl -w fs.aio-max-nr=524288"
25+ securityContext :
26+ privileged : true
27+ containers :
28+ - name : scylladb
29+ image : {{ .Values.image }}
30+ imagePullPolicy : {{ .Values.pullPolicy }}
31+ command : ["/bin/bash", "-c", "--"]
32+ args :
33+ - |
34+ sed -i "s/#cluster_name: .*/cluster_name: '${CLUSTER_NAME}'/" /etc/scylla/scylla.yaml
35+ sed -i 's/# data_file_directories:/data_file_directories:/' /etc/scylla/scylla.yaml
36+ sed -i 's/# - \/var\/lib\/scylla\/data/ - \/var\/lib\/scylla\/data/' /etc/scylla/scylla.yaml
37+ sed -i 's/# commitlog_directory: \/var\/lib\/scylla\/commitlog/commitlog_directory: \/var\/lib\/scylla\/commitlog/' /etc/scylla/scylla.yaml
38+
39+ # Modify the seeds in scylla.yaml by replacing "127.0.0.1" with the SCYLLA_SEEDS value
40+ sed -i "s/seeds: \"127.0.0.1\"/seeds: '${SCYLLA_SEEDS}'/" /etc/scylla/scylla.yaml
41+
42+ # Modify Authenticator and Authorizer
43+ sed -i "s/# authenticator: AllowAllAuthenticator/authenticator: '${SCYLLA_AUTHENTICATOR}'/" /etc/scylla/scylla.yaml
44+ sed -i "s/# authorizer: AllowAllAuthorizer/authorizer: '${SCYLLA_AUTHORIZER}'/" /etc/scylla/scylla.yaml
45+
46+ # Modify listen_address to the Helm release name
47+ sed -i "s/listen_address: localhost/listen_address: '{{ .Release.Name }}-scylladb-0'/" /etc/scylla/scylla.yaml
48+
49+ # Modify rpc_address to listen on all interfaces
50+ sed -i "s/rpc_address: localhost/rpc_address: '0.0.0.0'/" /etc/scylla/scylla.yaml
51+
52+ # Set broadcast_rpc_address to Helm release name for correct node discovery
53+ sed -i "s/# broadcast_rpc_address: 1.2.3.4/broadcast_rpc_address: '{{ .Release.Name }}-scylladb-0'/" /etc/scylla/scylla.yaml
54+
55+ # Enable Prometheus metrics on port 9180
56+ sed -i 's/# prometheus_port: 9180/prometheus_port: 9180/' /etc/scylla/scylla.yaml
57+ # Start ScyllaDB in the background
58+ exec /docker-entrypoint.py
59+ ports :
60+ - containerPort : 9042
61+ resources :
62+ requests :
63+ memory : {{ .Values.resources.requests.memory }}
64+ cpu : {{ .Values.resources.requests.cpu }}
65+ limits :
66+ memory : {{ .Values.resources.limits.memory }}
67+ cpu : {{ .Values.resources.limits.cpu }}
68+ env :
69+ - name : SCYLLA_SEEDS
70+ value : " {{ $.Release.Name }}-scylladb-0.{{ $.Release.Name }}-scylladb.{{ $.Release.Namespace }}.svc.cluster.local"
71+ - name : SCYLLA_AUTHENTICATOR
72+ value : " PasswordAuthenticator"
73+ - name : SCYLLA_AUTHORIZER
74+ value : " CassandraAuthorizer"
75+ - name : CLUSTER_NAME
76+ value : " Cluster"
77+ - name : SCYLLA_PASSWORD
78+ valueFrom :
79+ secretKeyRef :
80+ name : {{ $.Release.Name }}-scylladb-database-secret
81+ key : pod_password
82+ livenessProbe :
83+ exec :
84+ command :
85+ - sh
86+ - -c
87+ - " nodetool status"
88+ initialDelaySeconds : 120
89+ periodSeconds : 20
90+ timeoutSeconds : 15
91+ failureThreshold : 3
92+ readinessProbe :
93+ exec :
94+ command :
95+ - sh
96+ - -c
97+ - " nodetool status"
98+ initialDelaySeconds : 60
99+ periodSeconds : 20
100+ timeoutSeconds : 15
101+ failureThreshold : 3
102+ volumeMounts :
103+ - name : {{ $.Release.Name }}-scylla-data
104+ mountPath : /var/lib/scylla
105+ volumeClaimTemplates :
106+ - metadata :
107+ name : {{ $.Release.Name }}-scylla-data
108+ spec :
109+ accessModes : ["ReadWriteOnce"]
110+ resources :
111+ requests :
112+ storage : {{ .Values.diskSize }}
113+ storageClassName : standard
0 commit comments