diff --git a/k8s/charts/deluge/templates/deluge-pvc.yaml b/k8s/charts/deluge/templates/deluge-pvc.yaml index 4fa3f9b..1d2b15c 100644 --- a/k8s/charts/deluge/templates/deluge-pvc.yaml +++ b/k8s/charts/deluge/templates/deluge-pvc.yaml @@ -11,4 +11,7 @@ spec: - ReadWriteMany resources: requests: - storage: {{ include "storage.size" . }} \ No newline at end of file + storage: {{ include "storage.size" . }} + {{- if .Values.deployment.storageClass }} + storageClassName: {{ .Values.deployment.storageClass }} + {{- end }} \ No newline at end of file diff --git a/k8s/charts/deluge/templates/deluge-statefulset.yaml b/k8s/charts/deluge/templates/deluge-statefulset.yaml index 5dfb1b4..16edd82 100644 --- a/k8s/charts/deluge/templates/deluge-statefulset.yaml +++ b/k8s/charts/deluge/templates/deluge-statefulset.yaml @@ -20,6 +20,22 @@ spec: {{- include "deluge-benchmarks.labels" . | nindent 8 }} spec: + {{- if not .Values.experiment.allowColocation }} + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/component + operator: In + values: + - deluge-node + topologyKey: "kubernetes.io/hostname" + {{- end }} + {{- with .Values.deployment.delugeNodePool }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} containers: - name: deluge-node image: codexstorage/deluge diff --git a/k8s/charts/deluge/templates/testrunner-job.yaml b/k8s/charts/deluge/templates/testrunner-job.yaml index 1df8a65..db9ed2b 100644 --- a/k8s/charts/deluge/templates/testrunner-job.yaml +++ b/k8s/charts/deluge/templates/testrunner-job.yaml @@ -15,6 +15,10 @@ spec: {{- include "deluge-benchmarks.labels" . | nindent 8 }} spec: + {{- with .Values.deployment.runnerNodePool }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} containers: - name: deluge-experiment-runner image: codexstorage/bittorrent-benchmarks:latest diff --git a/k8s/charts/deluge/templates/tracker-deployment.yaml b/k8s/charts/deluge/templates/tracker-deployment.yaml index 54a67db..db5c7e5 100644 --- a/k8s/charts/deluge/templates/tracker-deployment.yaml +++ b/k8s/charts/deluge/templates/tracker-deployment.yaml @@ -21,6 +21,10 @@ spec: {{- include "deluge-benchmarks.labels" . | nindent 8 }} spec: + {{- with .Values.deployment.trackerNodePool }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} containers: - name: bittorrent-tracker image: codexstorage/bittorrent-tracker diff --git a/k8s/charts/deluge/values.yaml b/k8s/charts/deluge/values.yaml index bdc943c..82aa3b3 100644 --- a/k8s/charts/deluge/values.yaml +++ b/k8s/charts/deluge/values.yaml @@ -15,4 +15,18 @@ experiment: deployment: pvcName: "" - appName: "" \ No newline at end of file + appName: "" + + # If false, Deluge nodes will not be allowed to run on the same node. + allowColocation: true + + # Labels for setting Deluge, tracker, and experiment runner node affinity towards pools. + # Example: + # delugeNodePool: + # workload: benchmarks + delugeNodePool: {} + trackerNodePool: {} + runnerNodePool: {} + + # Storage class for persistent volume claims. + storageClass: ""