From 4d1eef9d532296cd34cd9a186fc3d8dd2ece8cf3 Mon Sep 17 00:00:00 2001 From: gmega Date: Wed, 8 Jan 2025 14:08:06 -0300 Subject: [PATCH] feat: standardize labelling in Helm chart to facilitate log consumption --- k8s/charts/deluge/templates/_helpers.tpl | 20 +++++++++++++------ .../deluge/templates/deluge-service.yaml | 9 +++++---- .../deluge/templates/deluge-statefulset.yaml | 14 +++++++------ .../deluge/templates/testrunner-job.yaml | 14 ++++++------- .../deluge/templates/tracker-deployment.yaml | 10 +++++----- .../deluge/templates/tracker-service.yaml | 6 +++--- k8s/charts/deluge/values.yaml | 8 ++++++++ 7 files changed, 50 insertions(+), 31 deletions(-) diff --git a/k8s/charts/deluge/templates/_helpers.tpl b/k8s/charts/deluge/templates/_helpers.tpl index b9cc8c0..ee05097 100644 --- a/k8s/charts/deluge/templates/_helpers.tpl +++ b/k8s/charts/deluge/templates/_helpers.tpl @@ -15,12 +15,20 @@ Expand the name of the chart. {{- end -}} {{- define "deluge.pvc" }} -{{- default (printf "deluge-%s-pvc" .Release.Name) .Values.deployment.pvcName }} +{{- default (printf "deluge-%s-pvc" (include "experiment.fullId" .)) .Values.deployment.pvcName }} {{- end -}} -{{- define "tracker.service.name" }} -{{- printf "bittorrent-tracker-%s" .Release.Name -}} -{{- end -}} +{{- define "experiment.groupId" -}} +{{- required "A valid .Values.experiment.groupId is required!" .Values.experiment.groupId }} +{{- end }} + +{{- define "experiment.id" -}} +{{- default .Release.Name .Values.experiment.id }} +{{- end }} + +{{- define "experiment.fullId" -}} +{{- printf "%s-%s" (include "experiment.id" .) (include "experiment.groupId" .) }} +{{- end }} {{/* Common and selector labels. @@ -43,6 +51,6 @@ app.kubernetes.io/managed-by: {{ .Release.Service }} {{- end }} {{- define "deluge-benchmarks.selectorLabels" -}} -app.kubernetes.io/name: {{ include "app.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/instance: {{ include "experiment.id" . }} +app.kubernetes.io/part-of: {{ include "experiment.groupId" . }} {{- end }} diff --git a/k8s/charts/deluge/templates/deluge-service.yaml b/k8s/charts/deluge/templates/deluge-service.yaml index f220dfb..8623d11 100644 --- a/k8s/charts/deluge/templates/deluge-service.yaml +++ b/k8s/charts/deluge/templates/deluge-service.yaml @@ -1,15 +1,16 @@ apiVersion: v1 kind: Service metadata: - name: deluge-nodes-{{ .Release.Name }}-service + name: deluge-nodes-service-{{ include "experiment.fullId" . }} namespace: {{ .Release.Namespace }} labels: - app: deluge-nodes-{{ .Release.Name }} - {{- include "deluge-benchmarks.labels" . | nindent 4 }} + app.kubernetes.io/name: deluge-nodes-service + {{- include "deluge-benchmarks.labels" . | nindent 4}} spec: clusterIP: None selector: - app: deluge-nodes-{{ .Release.Name }} + app.kubernetes.io/name: deluge-node + {{- include "deluge-benchmarks.selectorLabels" . | nindent 4}} ports: - port: 6890 name: rpc diff --git a/k8s/charts/deluge/templates/deluge-statefulset.yaml b/k8s/charts/deluge/templates/deluge-statefulset.yaml index 5241dc1..bdcba2d 100644 --- a/k8s/charts/deluge/templates/deluge-statefulset.yaml +++ b/k8s/charts/deluge/templates/deluge-statefulset.yaml @@ -1,32 +1,34 @@ apiVersion: apps/v1 kind: StatefulSet metadata: - name: deluge-nodes-{{ .Release.Name }} + name: deluge-nodes-{{ include "experiment.fullId" . }} namespace: {{ .Release.Namespace }} spec: replicas: {{ .Values.experiment.networkSize }} - serviceName: deluge-nodes-{{ .Release.Name }}-service + serviceName: deluge-nodes-service-{{ include "experiment.fullId" . }} podManagementPolicy: Parallel selector: matchLabels: - app: deluge-nodes-{{ .Release.Name }} + app.kubernetes.io/name: deluge-node {{- include "deluge-benchmarks.selectorLabels" . | nindent 6 }} template: metadata: labels: - app: deluge-nodes-{{ .Release.Name }} + app.kubernetes.io/name: deluge-node {{- include "deluge-benchmarks.labels" . | nindent 8 }} spec: containers: - - name: deluge-{{ .Release.Name }} + - name: deluge-node image: codexstorage/deluge imagePullPolicy: Always ports: - containerPort: 6890 env: + - name: EXPERIMENT_GROUP_ID + value: {{ include "experiment.groupId" . }} - name: CLIENT_POD_NAME valueFrom: fieldRef: @@ -40,7 +42,7 @@ spec: command: [ "/bin/bash", "--login", "-c" ] args: - | - export DELUGE_NODE_ID=${CLIENT_POD_NAME} + export DELUGE_NODE_ID=${CLIENT_POD_NAME}-${EXPERIMENT_GROUP_ID} # Sadly we can't mount a subpath, so need add the correct prefix # into all of the config directories. export DELUGE_CONFIG_DIR=/var/lib/deluge/${CLIENT_POD_NAME} diff --git a/k8s/charts/deluge/templates/testrunner-job.yaml b/k8s/charts/deluge/templates/testrunner-job.yaml index 02651b1..c0496fb 100644 --- a/k8s/charts/deluge/templates/testrunner-job.yaml +++ b/k8s/charts/deluge/templates/testrunner-job.yaml @@ -1,22 +1,22 @@ apiVersion: batch/v1 kind: Job metadata: - name: deluge-{{ .Release.Name }}-testrunner + name: deluge-experiment-runner-{{ include "experiment.fullId" . }} namespace: {{ .Release.Namespace }} labels: - app: deluge-{{ .Release.Name }}-testrunner + app.kubernetes.io/name: deluge-experiment-runner {{- include "deluge-benchmarks.labels" . | nindent 4 }} spec: template: metadata: labels: - app: deluge-{{ .Release.Name }}-testrunner + app.kubernetes.io/name: deluge-experiment-runner {{- include "deluge-benchmarks.labels" . | nindent 8 }} spec: containers: - - name: deluge-{{ .Release.Name }}-testrunner + - name: deluge-experiment-runner image: codexstorage/bittorrent-benchmarks:latest imagePullPolicy: Always args: [ "run", "deluge_experiment" ] @@ -32,13 +32,13 @@ spec: - name: FILE_SIZE value: {{ include "filesize.bytes" . | quote }} - name: TRACKER_ANNOUNCE_URL - value: "http://{{ include "tracker.service.name" . }}.{{ .Release.Namespace }}.svc.cluster.local:8000/announce" + value: "http://bittorrent-tracker-service-{{ include "experiment.fullId" . }}.{{ .Release.Namespace }}.svc.cluster.local:8000/announce" - name: SHARED_VOLUME_PATH value: "/opt/bittorrent-benchmarks/volume" - name: DELUGE_STATEFULSET - value: "deluge-nodes-{{ .Release.Name }}" + value: "deluge-nodes-{{ include "experiment.fullId" . }}" - name: DELUGE_SERVICE - value: "deluge-nodes-{{ .Release.Name }}-service" + value: "deluge-nodes-service-{{ include "experiment.fullId" . }}" - name: NAMESPACE valueFrom: fieldRef: diff --git a/k8s/charts/deluge/templates/tracker-deployment.yaml b/k8s/charts/deluge/templates/tracker-deployment.yaml index 7f4bd35..79791c9 100644 --- a/k8s/charts/deluge/templates/tracker-deployment.yaml +++ b/k8s/charts/deluge/templates/tracker-deployment.yaml @@ -1,28 +1,28 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: bittorrent-tracker-{{ .Release.Name }} + name: bittorrent-tracker-{{ include "experiment.fullId" . }} namespace: {{ .Release.Namespace }} labels: - app: bittorrent-tracker-{{ .Release.Name }} + app.kubernetes.io/name: bittorrent-tracker {{- include "deluge-benchmarks.labels" . | nindent 4 }} spec: replicas: 1 selector: matchLabels: - app: bittorrent-tracker-{{ .Release.Name }} + app.kubernetes.io/name: bittorrent-tracker {{- include "deluge-benchmarks.selectorLabels" . | nindent 6 }} template: metadata: labels: - app: bittorrent-tracker-{{ .Release.Name }} + app.kubernetes.io/name: bittorrent-tracker {{- include "deluge-benchmarks.labels" . | nindent 8 }} spec: containers: - - name: bittorrent-tracker-{{ .Release.Name }} + - name: bittorrent-tracker image: codexstorage/bittorrent-tracker ports: - containerPort: 8000 diff --git a/k8s/charts/deluge/templates/tracker-service.yaml b/k8s/charts/deluge/templates/tracker-service.yaml index d363968..dcfe180 100644 --- a/k8s/charts/deluge/templates/tracker-service.yaml +++ b/k8s/charts/deluge/templates/tracker-service.yaml @@ -1,10 +1,10 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "tracker.service.name" . }} + name: bittorrent-tracker-service-{{ include "experiment.fullId" . }} namespace: {{ .Release.Namespace }} labels: - app: tracker-{{ .Release.Name }} + app.kubernetes.io/name: bittorrent-tracker-service {{- include "deluge-benchmarks.labels" . | nindent 4 }} spec: @@ -14,5 +14,5 @@ spec: targetPort: 8000 protocol: TCP selector: - app: bittorrent-tracker-{{ .Release.Name }} + app.kubernetes.io/name: bittorrent-tracker {{- include "deluge-benchmarks.selectorLabels" . | nindent 4 }} \ No newline at end of file diff --git a/k8s/charts/deluge/values.yaml b/k8s/charts/deluge/values.yaml index 07271ef..bdc943c 100644 --- a/k8s/charts/deluge/values.yaml +++ b/k8s/charts/deluge/values.yaml @@ -5,6 +5,14 @@ experiment: seederSets: 4 repetitions: 10 + # Experiments are ran as part of groups which may entail several invocations for this Helm chart. + # We therefore identify both the experiment within a group, and the group itself. + + # Identifies the experiment within the group. If left empty, defaults to the release name. + id: "" + # Identifies the experiment group. Needs to be defined by the user. + groupId: "" + deployment: pvcName: "" appName: "" \ No newline at end of file