Skip to content

Commit 80c32a4

Browse files
authored
Cassandradb (#40)
1 parent 3e4a981 commit 80c32a4

File tree

11 files changed

+240
-30
lines changed

11 files changed

+240
-30
lines changed

charts/cassandra/Chart.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: v1
2+
appVersion: "1.0"
3+
description: Helm chart for deploying cassandra
4+
name: cassandra
5+
version: 0.0.1
6+
icon: "https://zop.dev/logo.png"
7+
maintainers:
8+
- name: ZopDev
9+
url: zop.dev
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{{- range $index, $service := .Values.services }}
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: {{ $.Release.Name }}-{{ $service.database }}-{{ $service.name }}-cassandra-configmap
6+
namespace: {{ $.Release.Namespace }}
7+
data:
8+
Hosts: {{ $.Release.Name }}-cassandra
9+
Keyspace: "{{ $service.database }}"
10+
Port: "9042"
11+
Username: "{{ $service.name }}-user"
12+
{{- end }}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{{- range $index, $service := .Values.services }}
2+
apiVersion: v1
3+
kind: Pod
4+
metadata:
5+
name: {{ $.Release.Name }}-{{ $service.name }}-cassandra-init
6+
namespace: {{ $.Release.Namespace }}
7+
spec:
8+
containers:
9+
- name: cassandra-init
10+
image: {{ $.Values.image }}
11+
command:
12+
- sh
13+
- -c
14+
- |
15+
echo "Initializing Cassandra Pod...";
16+
sleep 60;
17+
cqlsh {{ $.Release.Name }}-cassandra -u superuser -p $POD_PASSWORD -e "SOURCE '/etc/config/init-schema.cql';"
18+
env:
19+
- name: POD_PASSWORD
20+
valueFrom:
21+
secretKeyRef:
22+
name: {{ $.Release.Name }}-cassandra-database-secret
23+
key: pod_password
24+
volumeMounts:
25+
- name: script-volume
26+
mountPath: /etc/config
27+
volumes:
28+
- name: script-volume
29+
configMap:
30+
name: {{ $.Release.Name }}-{{ $service.name }}-init-script
31+
restartPolicy: OnFailure
32+
{{- end}}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{{- range $index, $service := .Values.services }}
2+
apiVersion: v1
3+
kind: Secret
4+
metadata:
5+
name: {{ $.Release.Name }}-{{ $service.database }}-{{ $service.name}}-cassandra-database-secret
6+
namespace: {{ $.Release.Namespace }}
7+
type: Opaque
8+
data:
9+
pod_password: {{ $service.password | b64enc }}
10+
{{- end }}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{{- range $index, $service := .Values.services }}
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: {{ $.Release.Name }}-{{ $service.name }}-init-script
6+
namespace: {{ $.Release.Namespace }}
7+
data:
8+
init-schema.cql: |
9+
CREATE KEYSPACE IF NOT EXISTS "{{ $service.database }}"
10+
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
11+
12+
USE "{{ $service.database }}";
13+
14+
{{- end }}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: {{ $.Release.Name }}-cassandra-database-secret
5+
namespace: {{ .Release.Namespace }}
6+
type: Opaque
7+
data:
8+
pod_password: {{ .Values.cassandradbRootPassword | b64enc }}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ .Release.Name }}-cassandra
5+
labels:
6+
app: {{ .Release.Name }}-cassandra
7+
spec:
8+
type: ClusterIP
9+
clusterIP: None
10+
ports:
11+
- port: 9042
12+
targetPort: 9042
13+
selector:
14+
app: {{ .Release.Name }}-cassandra
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
apiVersion: apps/v1
2+
kind: StatefulSet
3+
metadata:
4+
name: {{ .Release.Name }}-cassandra
5+
namespace: {{ .Release.Namespace }}
6+
labels:
7+
app: {{ .Release.Name }}-cassandra
8+
spec:
9+
replicas: 1
10+
serviceName: {{ .Release.Name }}-cassandra
11+
selector:
12+
matchLabels:
13+
app: {{ .Release.Name }}-cassandra
14+
template:
15+
metadata:
16+
labels:
17+
app: {{ .Release.Name }}-cassandra
18+
spec:
19+
containers:
20+
- name: cassandra
21+
image: {{ .Values.image }}
22+
imagePullPolicy: {{ .Values.pullPolicy }}
23+
ports:
24+
- containerPort: 9042
25+
resources:
26+
requests:
27+
memory: {{ .Values.resources.requests.memory }}
28+
cpu: {{ .Values.resources.requests.cpu }}
29+
limits:
30+
memory: {{ .Values.resources.limits.memory }}
31+
cpu: {{ .Values.resources.limits.cpu }}
32+
env:
33+
- name: CASSANDRA_CLUSTER_NAME
34+
value: {{ .Values.config.cluster_name }}
35+
- name: CASSANDRA_NUM_TOKENS
36+
value: "{{ .Values.config.num_tokens }}"
37+
- name: CASSANDRA_SEEDS
38+
value: "{{ .Release.Name }}-cassandra-0.{{ .Release.Name }}-cassandra.{{ .Release.Namespace }}.svc.cluster.local"
39+
lifecycle:
40+
preStop:
41+
exec:
42+
command:
43+
- /bin/sh
44+
- -c
45+
- nodetool drain
46+
livenessProbe:
47+
exec:
48+
command:
49+
- sh
50+
- -c
51+
- "nodetool status"
52+
initialDelaySeconds: 120
53+
periodSeconds: 20
54+
timeoutSeconds: 15
55+
failureThreshold: 3
56+
readinessProbe:
57+
exec:
58+
command:
59+
- sh
60+
- -c
61+
- "nodetool status"
62+
initialDelaySeconds: 60
63+
periodSeconds: 20
64+
timeoutSeconds: 15
65+
failureThreshold: 3
66+
volumeMounts:
67+
- name: {{.Release.Name }}-cassandra-data
68+
mountPath: /var/lib/cassandra
69+
volumeClaimTemplates:
70+
- metadata:
71+
name: {{.Release.Name }}-cassandra-data
72+
spec:
73+
accessModes: ["ReadWriteOnce"]
74+
resources:
75+
requests:
76+
storage: {{ .Values.diskSize }}
77+
storageClassName: standard

charts/cassandra/values.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
image: cassandra:4.1.0
2+
pullPolicy: IfNotPresent
3+
4+
resources:
5+
requests:
6+
memory: "1Gi"
7+
cpu: "500m"
8+
limits:
9+
memory: "2Gi"
10+
cpu: "1500m"
11+
12+
diskSize: 10Gi
13+
14+
config:
15+
cluster_name: "Cluster"
16+
num_tokens: 256
17+
18+
cassandradbRootPassword:
19+
20+
services:

docs/cassandra-v0.0.1.tgz

1.8 KB
Binary file not shown.

0 commit comments

Comments
 (0)