feat: standardize labelling in Helm chart to facilitate log consumption

This commit is contained in:
gmega 2025-01-08 14:08:06 -03:00
parent a05640b7c0
commit 4d1eef9d53
No known key found for this signature in database
GPG Key ID: 6290D34EAD824B18
7 changed files with 50 additions and 31 deletions

View File

@ -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 }}

View File

@ -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

View File

@ -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}

View File

@ -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:

View File

@ -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

View File

@ -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 }}

View File

@ -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: ""