mirror of
https://github.com/logos-storage/bittorrent-benchmarks.git
synced 2026-02-25 15:13:13 +00:00
feat!: add initial Helm chart, remove old k8s manifests and run script
This commit is contained in:
parent
03b7f52aca
commit
1bddfc7426
5
charts/deluge/Chart.yaml
Normal file
5
charts/deluge/Chart.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
apiVersion: v2
|
||||
name: deluge-benchmarks
|
||||
description: A Helm chart for running BitTorrent benchmarks with Deluge.
|
||||
version: 0.1.0
|
||||
appVersion: "1.0.0"
|
||||
19
charts/deluge/templates/_helpers.tpl
Normal file
19
charts/deluge/templates/_helpers.tpl
Normal file
@ -0,0 +1,19 @@
|
||||
{{- define "filesize.bytes" }}
|
||||
{{- $sizeNum := regexFind "\\d+" .Values.experiment.fileSize | int -}}
|
||||
{{- $sizeUnit := regexFind "\\D+" .Values.experiment.fileSize -}}
|
||||
{{- $size := dict "B" 1 "KB" 1024 "MB" 1048576 "GB" 1073741824 -}}
|
||||
{{- mul $sizeNum (index $size $sizeUnit) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "storage.size" }}
|
||||
{{- $totalSize := mul .Values.experiment.networkSize (include "filesize.bytes" .) -}}
|
||||
{{- div (mul $totalSize 12) 10 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "deluge.pvc" }}
|
||||
{{- default (printf "deluge-%s-pvc" .Release.Name) .Values.deployment.pvcName }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "tracker.service.name" }}
|
||||
{{- printf "bittorrent-tracker-%s" .Release.Name -}}
|
||||
{{- end -}}
|
||||
@ -1,12 +1,12 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: deluge-pvc
|
||||
namespace: codex-benchmarks
|
||||
name: {{ include "deluge.pvc" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
storage: {{ include "storage.size" . }}
|
||||
@ -1,14 +1,14 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: deluge-service
|
||||
namespace: codex-benchmarks
|
||||
name: deluge-nodes-{{ .Release.Name }}-service
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app: deluge-nodes
|
||||
app: deluge-nodes-{{ .Release.Name }}
|
||||
spec:
|
||||
clusterIP: None
|
||||
selector:
|
||||
app: deluge-nodes
|
||||
app: deluge-nodes-{{ .Release.Name }}
|
||||
ports:
|
||||
- port: 6890
|
||||
name: rpc
|
||||
@ -1,25 +1,25 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: deluge-nodes
|
||||
namespace: codex-benchmarks
|
||||
name: deluge-nodes-{{ .Release.Name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
|
||||
spec:
|
||||
replicas: 10
|
||||
serviceName: deluge-service
|
||||
replicas: {{ .Values.experiment.networkSize }}
|
||||
serviceName: deluge-nodes-{{ .Release.Name }}-service
|
||||
podManagementPolicy: Parallel
|
||||
selector:
|
||||
matchLabels:
|
||||
app: deluge-nodes
|
||||
app: deluge-nodes-{{ .Release.Name }}
|
||||
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: deluge-nodes
|
||||
app: deluge-nodes-{{ .Release.Name }}
|
||||
|
||||
spec:
|
||||
containers:
|
||||
- name: deluge
|
||||
- name: deluge-{{ .Release.Name }}
|
||||
image: codexstorage/deluge
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
@ -52,10 +52,10 @@ spec:
|
||||
|
||||
${DELUGE_APP}/docker/bin/start.sh
|
||||
volumeMounts:
|
||||
- name: deluge-volume
|
||||
- name: deluge-{{ .Release.Name }}-volume
|
||||
mountPath: /var/lib/deluge
|
||||
|
||||
volumes:
|
||||
- name: deluge-volume
|
||||
- name: deluge-{{ .Release.Name }}-volume
|
||||
persistentVolumeClaim:
|
||||
claimName: deluge-pvc
|
||||
claimName: {{ include "deluge.pvc" . }}
|
||||
@ -1,42 +1,42 @@
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: testrunner
|
||||
namespace: codex-benchmarks
|
||||
name: deluge-{{ .Release.Namespace }}-testrunner
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app: testrunner
|
||||
app: deluge-{{ .Release.Namespace }}-testrunner
|
||||
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: testrunner
|
||||
app: deluge-{{ .Release.Namespace }}-testrunner
|
||||
|
||||
spec:
|
||||
containers:
|
||||
- name: testrunner
|
||||
- name: deluge-{{ .Release.Namespace }}-testrunner
|
||||
image: codexstorage/bittorrent-benchmarks:latest
|
||||
imagePullPolicy: Always
|
||||
args: [ "run", "deluge_experiment" ]
|
||||
env:
|
||||
- name: NETWORK_SIZE
|
||||
value: "10"
|
||||
value: {{ .Values.experiment.networkSize | quote }}
|
||||
- name: SEEDERS
|
||||
value: "4"
|
||||
value: {{ .Values.experiment.seeders | quote }}
|
||||
- name: REPETITIONS
|
||||
value: "10"
|
||||
value: {{ .Values.experiment.repetitions | quote }}
|
||||
- name: SEEDER_SETS
|
||||
value: "4"
|
||||
value: {{ .Values.experiment.seederSets | quote }}
|
||||
- name: FILE_SIZE
|
||||
value: "104857600"
|
||||
value: {{ include "filesize.bytes" . | quote }}
|
||||
- name: TRACKER_ANNOUNCE_URL
|
||||
value: "http://tracker-service.codex-benchmarks.svc.cluster.local:8000/announce"
|
||||
value: "http://{{ include "tracker.service.name" . }}.{{ .Release.Namespace }}.svc.cluster.local:8000/announce"
|
||||
- name: SHARED_VOLUME_PATH
|
||||
value: "/opt/bittorrent-benchmarks/volume"
|
||||
- name: DELUGE_STATEFULSET
|
||||
value: "deluge-nodes"
|
||||
value: "deluge-nodes-{{ .Release.Name }}"
|
||||
- name: DELUGE_SERVICE
|
||||
value: "deluge-service"
|
||||
value: "deluge-nodes-{{ .Release.Name }}-service"
|
||||
- name: NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
@ -55,7 +55,7 @@ spec:
|
||||
volumes:
|
||||
- name: benchmark-volume
|
||||
persistentVolumeClaim:
|
||||
claimName: deluge-pvc
|
||||
claimName: {{ include "deluge.pvc" . }}
|
||||
restartPolicy: Never
|
||||
|
||||
backoffLimit: 0
|
||||
25
charts/deluge/templates/tracker-deployment.yaml
Normal file
25
charts/deluge/templates/tracker-deployment.yaml
Normal file
@ -0,0 +1,25 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: bittorrent-tracker-{{ .Release.Name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app: bittorrent-tracker-{{ .Release.Name }}
|
||||
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: bittorrent-tracker-{{ .Release.Name }}
|
||||
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: bittorrent-tracker-{{ .Release.Name }}
|
||||
|
||||
spec:
|
||||
containers:
|
||||
- name: bittorrent-tracker-{{ .Release.Name }}
|
||||
image: codexstorage/bittorrent-tracker
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
16
charts/deluge/templates/tracker-service.yaml
Normal file
16
charts/deluge/templates/tracker-service.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "tracker.service.name" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app: tracker-{{ .Release.Name }}
|
||||
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 8000
|
||||
targetPort: 8000
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: bittorrent-tracker-{{ .Release.Name }}
|
||||
9
charts/deluge/values.yaml
Normal file
9
charts/deluge/values.yaml
Normal file
@ -0,0 +1,9 @@
|
||||
experiment:
|
||||
networkSize: 10
|
||||
fileSize: "100MB"
|
||||
seeders: 4
|
||||
seederSets: 4
|
||||
repetitions: 10
|
||||
|
||||
deployment:
|
||||
pvcName: ""
|
||||
@ -1,7 +0,0 @@
|
||||
namespace.yaml
|
||||
deluge-pvc.yaml
|
||||
deluge-service.yaml
|
||||
tracker-deployment.yaml
|
||||
tracker-service.yaml
|
||||
deluge-statefulset.yaml
|
||||
testrunner-job.yaml
|
||||
@ -1,4 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: codex-benchmarks
|
||||
37
k8s/run.sh
37
k8s/run.sh
@ -1,37 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Simple script for running benchmark experiments on a Kubernetes cluster.
|
||||
set -e
|
||||
|
||||
function on_interrupt () {
|
||||
read -p "CTRL+C pressed. Do you want to stop the test runner as well? [y/N] " -n 1 -r
|
||||
echo ""
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Deleting experiment namespace..."
|
||||
kubectl delete namespace codex-benchmarks
|
||||
fi
|
||||
}
|
||||
|
||||
trap on_interrupt INT
|
||||
|
||||
echo " * Clearing previous deployments"
|
||||
kubectl delete namespace codex-benchmarks || true
|
||||
|
||||
echo " * Deploying manifests"
|
||||
while read -r resource; do
|
||||
kubectl apply -f "${resource}"
|
||||
done < deploy-order.txt
|
||||
|
||||
echo " * Awaiting for test runner to start"
|
||||
kubectl wait --for=condition=Ready --selector=app=testrunner pod -n codex-benchmarks --timeout=300s
|
||||
|
||||
echo " * Attaching to test runner logs"
|
||||
TESTRUNNER_POD=$(kubectl get pods -n codex-benchmarks -l app=testrunner -o jsonpath="{.items[0].metadata.name}")
|
||||
if [ -z "${TESTRUNNER_POD}" ]; then
|
||||
echo "Testrunner pod not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kubectl logs -f "${TESTRUNNER_POD}" -n codex-benchmarks
|
||||
|
||||
echo " * Test runner has finished."
|
||||
@ -1,25 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: bittorrent-tracker
|
||||
namespace: codex-benchmarks
|
||||
labels:
|
||||
app: bittorrent-tracker
|
||||
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: bittorrent-tracker
|
||||
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: bittorrent-tracker
|
||||
|
||||
spec:
|
||||
containers:
|
||||
- name: tracker
|
||||
image: codexstorage/bittorrent-tracker
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
@ -1,16 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: tracker-service
|
||||
namespace: codex-benchmarks
|
||||
labels:
|
||||
app: tracker
|
||||
|
||||
spec:
|
||||
type: ClusterIP # Change to NodePort or LoadBalancer if needed
|
||||
ports:
|
||||
- port: 8000
|
||||
targetPort: 8000
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: bittorrent-tracker
|
||||
Loading…
x
Reference in New Issue
Block a user