apiVersion: apps/v1 kind: StatefulSet metadata: name: deluge-nodes-{{ include "experiment.fullId" . }} namespace: {{ .Release.Namespace }} spec: replicas: {{ .Values.experiment.networkSize }} serviceName: deluge-nodes-service-{{ include "experiment.fullId" . }} podManagementPolicy: Parallel selector: matchLabels: app.kubernetes.io/component: deluge-node {{- include "deluge-benchmarks.selectorLabels" . | nindent 6 }} template: metadata: labels: app.kubernetes.io/component: deluge-node {{- include "deluge-benchmarks.labels" . | nindent 8 }} spec: {{- if not .Values.deployment.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 imagePullPolicy: Always ports: - containerPort: 6890 env: - name: CLIENT_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: DELUGE_RPC_PORT value: "6890" - name: DELUGE_LISTEN_PORTS value: "6891,6892" - name: DELUGE_LOG_LEVEL value: "info" command: [ "/bin/bash", "--login", "-c" ] args: - | export DELUGE_NODE_ID=${CLIENT_POD_NAME} # Makes sure there's no previous garbage in the config dir. rm -rf ${DELUGE_CONFIG_DIR}/* ${DELUGE_APP}/docker/bin/start.sh volumeMounts: - name: deluge-node-storage mountPath: /var/lib/deluge - name: deluge-agent image: {{ include "benchmark.harness.image" . }} imagePullPolicy: {{ include "benchmark.harness.imagePullPolicy" . }} command: [ "poetry", "run", "bittorrent-benchmarks", "agent", "experiments.k8s.yaml", "deluge_agent", "--port", "9001" ] ports: - containerPort: 9001 volumeMounts: - name: deluge-node-storage mountPath: /var/lib/deluge volumes: - name: deluge-node-storage emptyDir: { }