Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions helm/adelphi/templates/cassandra-clusters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@ spec:
spec:
allowMultipleNodesPerWorker: {{ .Values.allowMultipleNodesPerWorker }}
clusterName: {{ .Values.source.clusterName }}
serverType: cassandra
serverType: {{ .Values.source.type }}
serverVersion: {{ .Values.source.version }}
dseWorkloads:
graphEnabled: {{ .Values.source.graphEnabled }}
managementApiAuth:
insecure: {}
# Limit each pod to a fixed 1 CPU cores and 2 GB of RAM.
Expand All @@ -51,7 +53,11 @@ spec:
authenticator: org.apache.cassandra.auth.PasswordAuthenticator
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
role_manager: org.apache.cassandra.auth.CassandraRoleManager
{{- if or (eq .Values.target.type "dse") (semverCompare "4.0.0" .Values.target.version) }}
jvm-server-options:
{{- else }}
jvm-options:
{{- end }}
initial_heap_size: "800M"
max_heap_size: "800M"
- name: start-target-cluster
Expand All @@ -72,11 +78,13 @@ spec:
spec:
allowMultipleNodesPerWorker: {{ .Values.allowMultipleNodesPerWorker }}
clusterName: {{ .Values.target.clusterName }}
serverType: cassandra
serverType: {{ .Values.target.type }}
serverVersion: {{ .Values.target.version }}
{{- if .Values.target.git_identifier }}
serverImage: localhost:30000/adelphi/management-api-for-apache-cassandra
{{- end }}
dseWorkloads:
graphEnabled: {{ .Values.target.graphEnabled }}
managementApiAuth:
insecure: {}
# Limit each pod to a fixed 1 CPU cores and 2 GB of RAM.
Expand All @@ -101,6 +109,11 @@ spec:
authenticator: org.apache.cassandra.auth.PasswordAuthenticator
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
role_manager: org.apache.cassandra.auth.CassandraRoleManager
{{- if or (eq .Values.target.type "dse") (semverCompare "4.0.0" .Values.target.version) }}
jvm-server-options:
{{- else }}
jvm-options:
{{- end }}
initial_heap_size: "800M"
max_heap_size: "800M"
max_heap_size: "800M"

13 changes: 13 additions & 0 deletions helm/adelphi/templates/cloudgate-proxy-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: cloudgate-proxy-svc
namespace: {{ .Values.namespace }}
spec:
selector:
app: cloudgate-proxy
ports:
- name: cql
protocol: TCP
port: 9042
targetPort: 9042
94 changes: 94 additions & 0 deletions helm/adelphi/templates/cloudgate-proxy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: cloudgate-proxy-template
namespace: {{ .Values.namespace }}
annotations:
"helm.sh/hook": pre-install
spec:
templates:
- name: start-cloudgate-proxy
resource:
action: create
manifest: |
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloudgate-deployment
ownerReferences:
- apiVersion: argoproj.io/v1alpha1
blockOwnerDeletion: true
kind: Workflow
name: "{{`{{workflow.name}}`}}"
uid: "{{`{{workflow.uid}}`}}"
spec:
replicas: 3
selector:
matchLabels:
app: cloudgate-proxy
template:
metadata:
labels:
app: cloudgate-proxy
spec:
serviceAccountName: cass-operator
initContainers:
- name: get-ips
image: gcr.io/cloud-builders/kubectl:latest
command: ["sh", "-c", "-e"]
args:
- get_ips()
{
ips=`kubectl get pods -n cass-operator -l app=cloudgate-proxy -o=wide | awk '{print $6}' | grep -Ev "none|IP"`;
};
count_replicas()
{
count=`echo $ips | wc -w`;
};
get_ips;
count_replicas;
while [ $count -ne 3 ]; do sleep 1 && get_ips && count_replicas; done;
echo $ips;
join_ips=`echo $ips | sed "s/ /,/g"`;
kubectl create configmap zdm-proxy-ips -n {{ .Values.namespace }} --from-literal=PROXY_ADDRESSES=$join_ips --dry-run=client -o yaml | kubectl apply -f -;
containers:
- name: cloudgate
image: datastax/cloudgate-proxy
ports:
- containerPort: 9042
hostPort: 9042
protocol: TCP
env:
- name: PROXY_ADDRESSES
valueFrom:
configMapKeyRef:
name: zdm-proxy-ips
key: PROXY_ADDRESSES
- name: ORIGIN_CASSANDRA_USERNAME
value: "{{ .Values.source.clusterName }}-superuser"
- name: ORIGIN_CASSANDRA_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.source.clusterName }}-superuser
key: password
- name: TARGET_CASSANDRA_USERNAME
value: "{{ .Values.target.clusterName }}-superuser"
- name: TARGET_CASSANDRA_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.target.clusterName }}-superuser
key: password
- name: ORIGIN_CASSANDRA_CONTACT_POINTS
value: "{{ .Values.source.clusterName }}-{{ .Values.source.dc }}-service"
- name: ORIGIN_CASSANDRA_PORT
value: "9042"
- name: TARGET_CASSANDRA_CONTACT_POINTS
value: "{{ .Values.target.clusterName }}-{{ .Values.target.dc }}-service"
- name: TARGET_CASSANDRA_PORT
value: "9042"
- name: PROXY_QUERY_ADDRESS
value: "0.0.0.0"
- name: PROXY_QUERY_PORT
value: "9042"
- name: LOG_LEVEL
value: "DEBUG"
8 changes: 8 additions & 0 deletions helm/adelphi/templates/nosqlbench-graph-configmap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: nosqlbench-graph-configmap
namespace: {{ .Values.namespace }}
data:
graph_workload.yaml: |-
{{ .Values.nosqlbench.graph.workload | indent 4}}
109 changes: 108 additions & 1 deletion helm/adelphi/templates/nosqlbench-jobs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,111 @@ spec:
emptyDir: {}
- name: results-pv
persistentVolumeClaim:
claimName: nosqlbench-target-pvc
claimName: nosqlbench-target-pvc
- name: nosqlbench
inputs:
parameters:
- name: job
- name: username
- name: secret
- name: hostname
container:
image: nosqlbench/nosqlbench:4.15.45
args: [
"--show-stacktraces",
"--report-csv-to=/results_{{`{{inputs.parameters.job}}`}}",
"--report-graphite-to=graphite-service:9109",
"/workspace/nosqlbench_{{`{{inputs.parameters.job}}`}}.yaml",
"{{`{{inputs.parameters.job}}`}}",
"scenarioname={{`{{inputs.parameters.job}}`}}",
"hosts={{`{{inputs.parameters.hostname}}`}}",
"username={{`{{inputs.parameters.username}}`}}",
"passfile=/secret/password",
"driver=cqld3"
]
dnsConfig:
options:
- name: ndots
value: "1"
volumeMounts:
- name: secret-volume
mountPath: /secret
readOnly: true
- name: workspace
mountPath: /workspace
- name: results-pv
mountPath: /results
initContainers:
- name: extract-schema
image: python:3.10.0b1-alpine3.13
command: ["sh", "-c", "-e"]
args:
- pip install adelphi;
adelphi --hosts="{{`{{inputs.parameters.hostname}}`}}" --username="{{`{{inputs.parameters.username}}`}}" --password="`cat /secret/password`" --keyspaces="{{ .Values.gemini_schema_keyspace }}" --no-anonymize export-nb --rampup-cycles="{{ .Values.nosqlbench_cycles }}" --main-cycles="{{ .Values.nosqlbench_cycles }}" > /workspace/nosqlbench_{{`{{inputs.parameters.job}}`}}.yaml;
cat /workspace/nosqlbench_{{`{{inputs.parameters.job}}`}}.yaml;
volumeMounts:
- name: workspace
mountPath: /workspace
- name: secret-volume
mountPath: /secret
readOnly: true
volumes:
- name: secret-volume
secret:
secretName: "{{`{{inputs.parameters.secret}}`}}"
items:
- key: password
path: password
- name: workspace
emptyDir: {}
- name: results-pv
persistentVolumeClaim:
claimName: nosqlbench-pvc
- name: nosqlbench-graph
inputs:
parameters:
- name: job
- name: username
- name: secret
- name: hostname
container:
image: nosqlbench/nosqlbench:4.17.6
args: [
"--show-stacktraces",
"--report-csv-to=/results_{{`{{inputs.parameters.job}}`}}",
"--report-graphite-to=graphite-service:9109",
"/nosqlbench/graph_workload.yaml",
"hosts={{`{{inputs.parameters.hostname}}`}}",
"username={{`{{inputs.parameters.username}}`}}",
"passfile=/secret/password",
"localdc=dc1"
]
dnsConfig:
options:
- name: ndots
value: "1"
volumeMounts:
- name: secret-volume
mountPath: /secret
readOnly: true
- name: workspace
mountPath: /workspace
- name: results-pv
mountPath: /results
- name: nosqlbench-graph
mountPath: /nosqlbench
volumes:
- name: secret-volume
secret:
secretName: "{{`{{inputs.parameters.secret}}`}}"
items:
- key: password
path: password
- name: workspace
emptyDir: {}
- name: results-pv
persistentVolumeClaim:
claimName: nosqlbench-pvc
- name: nosqlbench-graph
configMap:
name: nosqlbench-graph-configmap
13 changes: 13 additions & 0 deletions helm/adelphi/templates/pvc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,19 @@ spec:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nosqlbench-pvc
namespace: {{ .Values.namespace }}
spec:
accessModes:
- ReadWriteOnce
storageClassName: {{ .Values.storageClassName }}
resources:
requests:
storage: 20Mi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cassandra-diff-pvc
namespace: {{ .Values.namespace }}
Expand Down
35 changes: 35 additions & 0 deletions helm/adelphi/templates/schema.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: schema-job
namespace: {{ .Values.namespace }}
annotations:
"helm.sh/hook": pre-install
spec:
templates:
- name: configure-schema
inputs:
parameters:
- name: username
- name: secret
- name: hostname
- name: schema
retryStrategy:
limit: 10
container:
image: ubuntu:20.04
env:
- name: password
valueFrom:
secretKeyRef:
name: "{{`{{inputs.parameters.secret}}`}}"
key: password
command: ["sh", "-c", "-e"]
args:
- apt update;
apt install python3-pip -y;
pip3 install -U cqlsh;
echo "Configuring schema on the source cluster...";
echo "{{`{{inputs.parameters.schema}}`}}";
echo "{{`{{inputs.parameters.schema}}`}}" | cqlsh --protocol-version=4 -u {{`{{inputs.parameters.username}}`}} -p $password {{`{{inputs.parameters.hostname}}`}};
echo "Done";
3 changes: 3 additions & 0 deletions helm/adelphi/templates/workflow-adelphi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ metadata:
spec:
entrypoint: execute
serviceAccountName: cass-operator
{{- if ne .Values.workflow "cassandra" }}
suspend: {}
{{- end }}
templates:
- name: execute
dag:
Expand Down
Loading