feat: add working parametererized Argo workflow for deluge benchmarks

This commit is contained in:
gmega 2024-12-18 18:47:21 -03:00
parent f5a59e061f
commit b4b625ad34
No known key found for this signature in database
GPG Key ID: 6290D34EAD824B18
2 changed files with 53 additions and 14 deletions

View File

@ -1,5 +1,12 @@
# This sets up a service account with the required permissions for running the Codex workflows. For now,
# this needs to be manually applied to the cluster running Argo Workflows.
# The codex-benchmarks needs to exist, as otherwise we can't create the RoleBinding in the proper namespace.
apiVersion: v1
kind: Namespace
metadata:
name: codex-benchmarks
---
apiVersion: v1
kind: ServiceAccount
metadata:
@ -7,30 +14,33 @@ metadata:
namespace: argo
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
kind: ClusterRole
metadata:
name: codex-workflows-runner
namespace: argo
rules:
- apiGroups: [ "" ]
resources: [ "namespaces", "persistentvolumeclaims", "pods", "services" ]
resources: [ "namespaces", "persistentvolumeclaims", "pods", "services", "secrets" ]
verbs: [ "*" ]
- apiGroups: [ "apps" ]
resources: [ "deployments", "statefulsets" ]
verbs: [ "*" ]
- apiGroups: [ "batch" ]
resources: [ "jobs" ]
verbs: [ "*" ]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: codex-workflows-runner
namespace: argo
namespace: codex-benchmarks
subjects:
- kind: ServiceAccount
name: codex-benchmarks-workflows
namespace: argo
roleRef:
kind: Role
kind: ClusterRole
name: codex-workflows-runner
apiGroup: rbac.authorization.k8s.io
---

View File

@ -5,39 +5,68 @@ metadata:
spec:
serviceAccountName: codex-benchmarks-workflows
entrypoint: deluge-benchmark-workflow
onExit: cleanup
arguments:
parameters:
- name: repetitions
value: 10
- name: fileSize
value: "100MB"
- name: networkSize
value: 10
- name: seeders
value: 4
- name: seederSets
value: 4
- name: maxExperimentDuration
value: "72h"
templates:
- name: deluge-benchmark-workflow
steps:
- - name: deploy-experiment
template: deploy-experiment
- - name: wait-for-testrunner
template: wait-for-testrunner
- - name: wait-for-test-start
template: wait-for-test-start
- - name: wait-for-completion
template: wait-for-completion
- - name: wait-for-test-completion
template: wait-for-test-completion
- name: deploy-experiment
script:
image: codexstorage/bittorrent-benchmarks-workflows:latest
command: ["/bin/bash"]
source: |
helm install e1 k8s/charts/deluge --namespace codex-benchmarks
helm install e1 ./k8s/charts/deluge --namespace codex-benchmarks\
--set experiment.repetitions={{workflow.parameters.repetitions}}\
--set experiment.fileSize={{workflow.parameters.fileSize}}\
--set experiment.networkSize={{workflow.parameters.networkSize}}\
--set experiment.seeders={{workflow.parameters.seeders}}\
--set experiment.seederSets={{workflow.parameters.seederSets}}
- name: wait-for-testrunner
- name: wait-for-test-start
script:
image: codexstorage/bittorrent-benchmarks-workflows:latest
command: ["/bin/bash"]
source: |
kubectl wait --for=condition=Ready --selector=app=testrunner pod -n codex-benchmarks --timeout=300s
kubectl wait -n codex-benchmarks\
--for=condition=Ready\
--selector=app=deluge-codex-benchmarks-testrunner\
--timeout=300s\
pod
- name: wait-for-completion
- name: wait-for-test-completion
script:
image: codexstorage/bittorrent-benchmarks-workflows:latest
command: ["/bin/bash"]
source: |
set -e
./ docker/bin/kubectl-wait-job --selector=app=testrunner -n codex-benchmarks
./docker/bin/kubectl-wait-job\
--selector=app=deluge-codex-benchmarks-testrunner\
--timeout={{workflow.parameters.maxExperimentDuration}}\
-n codex-benchmarks
- name: cleanup
script: