Skip to content

Commit f609090

Browse files
committed
fix(charts): address PR #12787 review comments
P1 fixes: - Quote all user-provided secret values in object-store-secret and db-secret - Replace hardcoded kubeflow namespace in Argo workflowNamespaces with empty list (defaults to release namespace via singleNamespace: true) - Remove dead seaweedfs.enabled knob (templates use objectStore.type) P2 Helm best-practice improvements: - Add fullnameOverride/nameOverride support in _helpers.tpl - Add standard K8s labels (app.kubernetes.io/name, version, selectorLabels) - Add .gitignore for chart archives - Tighten dependency versions to ~X.Y.0 ranges - Add global.imagePullSecrets with helper included in all deployments - Add Helm test for API server health endpoint - Add values.schema.json for config validation - Default publicConfig version to .Chart.AppVersion instead of "dev" - Add per-component replicas parameter in values and deployments - Add PodDisruptionBudgets for apiServer, metadataGrpc, cacheServer - Add global nodeSelector/tolerations/affinity with component-level fallback Signed-off-by: Jaison Paul <paul.jaison@gmail.com>
1 parent 7a70b82 commit f609090

File tree

25 files changed

+510
-56
lines changed

25 files changed

+510
-56
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
charts/*.tgz

charts/kubeflow-pipelines/Chart.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,23 @@ maintainers:
1616
- name: Kubeflow Pipelines Authors
1717
dependencies:
1818
- name: argo-workflows
19-
version: 0.45.x
19+
version: ~0.45.0
2020
repository: https://argoproj.github.io/argo-helm
2121
condition: argo-workflows.enabled
2222
- name: mysql
23-
version: 12.x.x
23+
version: ~12.3.0
2424
repository: https://charts.bitnami.com/bitnami
2525
condition: mysql.enabled
2626
- name: postgresql
27-
version: 16.x.x
27+
version: ~16.7.0
2828
repository: https://charts.bitnami.com/bitnami
2929
condition: postgresql.enabled
3030
- name: minio
31-
version: 5.x.x
31+
version: ~5.4.0
3232
repository: https://charts.min.io/
3333
condition: minio.enabled
3434
- name: metacontroller-helm
35-
version: 4.x.x
35+
version: ~4.12.0
3636
repository: oci://ghcr.io/metacontroller
3737
condition: metacontroller.enabled
3838
alias: metacontroller

charts/kubeflow-pipelines/templates/_helpers.tpl

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,49 @@
1+
{{/*
2+
Expand the name of the chart.
3+
*/}}
4+
{{- define "kubeflow-pipelines.name" -}}
5+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
6+
{{- end }}
7+
8+
{{/*
9+
Create a default fully qualified app name.
10+
*/}}
11+
{{- define "kubeflow-pipelines.fullname" -}}
12+
{{- if .Values.fullnameOverride }}
13+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
14+
{{- else }}
15+
{{- $name := default .Chart.Name .Values.nameOverride }}
16+
{{- if contains $name .Release.Name }}
17+
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
18+
{{- else }}
19+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
20+
{{- end }}
21+
{{- end }}
22+
{{- end }}
23+
24+
{{/*
25+
Chart label value.
26+
*/}}
27+
{{- define "kubeflow-pipelines.chart" -}}
28+
{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
29+
{{- end }}
30+
131
{{/*
232
Common labels
333
*/}}
434
{{- define "kubeflow-pipelines.labels" -}}
35+
helm.sh/chart: {{ include "kubeflow-pipelines.chart" . }}
36+
{{ include "kubeflow-pipelines.selectorLabels" . }}
37+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
538
app.kubernetes.io/managed-by: {{ .Release.Service }}
39+
{{- end }}
40+
41+
{{/*
42+
Selector labels
43+
*/}}
44+
{{- define "kubeflow-pipelines.selectorLabels" -}}
45+
app.kubernetes.io/name: {{ include "kubeflow-pipelines.name" . }}
646
app.kubernetes.io/instance: {{ .Release.Name }}
7-
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
847
{{- end }}
948

1049
{{/*
@@ -113,3 +152,13 @@ Object store endpoint port
113152
{{- define "kubeflow-pipelines.objectStorePort" -}}
114153
9000
115154
{{- end }}
155+
156+
{{/*
157+
imagePullSecrets
158+
*/}}
159+
{{- define "kubeflow-pipelines.imagePullSecrets" -}}
160+
{{- with .Values.global.imagePullSecrets }}
161+
imagePullSecrets:
162+
{{- toYaml . | nindent 2 }}
163+
{{- end }}
164+
{{- end }}

charts/kubeflow-pipelines/templates/apiserver/deployment.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ metadata:
66
{{- include "kubeflow-pipelines.labels" . | nindent 4 }}
77
name: ml-pipeline
88
spec:
9+
replicas: {{ .Values.apiServer.replicas }}
910
selector:
1011
matchLabels:
1112
app: ml-pipeline
@@ -16,6 +17,7 @@ spec:
1617
annotations:
1718
cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
1819
spec:
20+
{{- include "kubeflow-pipelines.imagePullSecrets" . | nindent 6 }}
1921
securityContext:
2022
seccompProfile:
2123
type: RuntimeDefault
@@ -204,15 +206,15 @@ spec:
204206
{{- toYaml . | nindent 12 }}
205207
{{- end }}
206208
serviceAccountName: ml-pipeline
207-
{{- with .Values.apiServer.nodeSelector }}
209+
{{- with .Values.apiServer.nodeSelector | default .Values.global.nodeSelector }}
208210
nodeSelector:
209211
{{- toYaml . | nindent 8 }}
210212
{{- end }}
211-
{{- with .Values.apiServer.tolerations }}
213+
{{- with .Values.apiServer.tolerations | default .Values.global.tolerations }}
212214
tolerations:
213215
{{- toYaml . | nindent 8 }}
214216
{{- end }}
215-
{{- with .Values.apiServer.affinity }}
217+
{{- with .Values.apiServer.affinity | default .Values.global.affinity }}
216218
affinity:
217219
{{- toYaml . | nindent 8 }}
218220
{{- end }}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{{- if .Values.apiServer.podDisruptionBudget.enabled }}
2+
apiVersion: policy/v1
3+
kind: PodDisruptionBudget
4+
metadata:
5+
name: ml-pipeline
6+
labels:
7+
app: ml-pipeline
8+
{{- include "kubeflow-pipelines.labels" . | nindent 4 }}
9+
spec:
10+
minAvailable: {{ .Values.apiServer.podDisruptionBudget.minAvailable }}
11+
selector:
12+
matchLabels:
13+
app: ml-pipeline
14+
{{- end }}

charts/kubeflow-pipelines/templates/cache-deployer/deployment.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ spec:
1717
labels:
1818
app: cache-deployer
1919
spec:
20+
{{- include "kubeflow-pipelines.imagePullSecrets" . | nindent 6 }}
2021
securityContext:
2122
seccompProfile:
2223
type: RuntimeDefault
@@ -43,15 +44,15 @@ spec:
4344
{{- end }}
4445
serviceAccountName: kubeflow-pipelines-cache-deployer-sa
4546
restartPolicy: Always
46-
{{- with .Values.cacheDeployer.nodeSelector }}
47+
{{- with .Values.cacheDeployer.nodeSelector | default .Values.global.nodeSelector }}
4748
nodeSelector:
4849
{{- toYaml . | nindent 8 }}
4950
{{- end }}
50-
{{- with .Values.cacheDeployer.tolerations }}
51+
{{- with .Values.cacheDeployer.tolerations | default .Values.global.tolerations }}
5152
tolerations:
5253
{{- toYaml . | nindent 8 }}
5354
{{- end }}
54-
{{- with .Values.cacheDeployer.affinity }}
55+
{{- with .Values.cacheDeployer.affinity | default .Values.global.affinity }}
5556
affinity:
5657
{{- toYaml . | nindent 8 }}
5758
{{- end }}

charts/kubeflow-pipelines/templates/cache/deployment.yaml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ metadata:
66
app: cache-server
77
{{- include "kubeflow-pipelines.labels" . | nindent 4 }}
88
spec:
9-
replicas: 1
9+
replicas: {{ .Values.cacheServer.replicas }}
1010
selector:
1111
matchLabels:
1212
app: cache-server
@@ -15,6 +15,7 @@ spec:
1515
labels:
1616
app: cache-server
1717
spec:
18+
{{- include "kubeflow-pipelines.imagePullSecrets" . | nindent 6 }}
1819
securityContext:
1920
seccompProfile:
2021
type: RuntimeDefault
@@ -122,15 +123,15 @@ spec:
122123
secret:
123124
secretName: webhook-server-tls
124125
serviceAccountName: kubeflow-pipelines-cache
125-
{{- with .Values.cacheServer.nodeSelector }}
126+
{{- with .Values.cacheServer.nodeSelector | default .Values.global.nodeSelector }}
126127
nodeSelector:
127128
{{- toYaml . | nindent 8 }}
128129
{{- end }}
129-
{{- with .Values.cacheServer.tolerations }}
130+
{{- with .Values.cacheServer.tolerations | default .Values.global.tolerations }}
130131
tolerations:
131132
{{- toYaml . | nindent 8 }}
132133
{{- end }}
133-
{{- with .Values.cacheServer.affinity }}
134+
{{- with .Values.cacheServer.affinity | default .Values.global.affinity }}
134135
affinity:
135136
{{- toYaml . | nindent 8 }}
136137
{{- end }}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{{- if .Values.cacheServer.podDisruptionBudget.enabled }}
2+
apiVersion: policy/v1
3+
kind: PodDisruptionBudget
4+
metadata:
5+
name: cache-server
6+
labels:
7+
app: cache-server
8+
{{- include "kubeflow-pipelines.labels" . | nindent 4 }}
9+
spec:
10+
minAvailable: {{ .Values.cacheServer.podDisruptionBudget.minAvailable }}
11+
selector:
12+
matchLabels:
13+
app: cache-server
14+
{{- end }}

charts/kubeflow-pipelines/templates/kubeflow-pipelines-public-configmap.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ metadata:
55
labels:
66
{{- include "kubeflow-pipelines.labels" . | nindent 4 }}
77
data:
8-
kubeflow_pipelines_version: {{ .Values.publicConfig.kubeflowPipelinesVersion | quote }}
8+
kubeflow_pipelines_version: {{ .Values.publicConfig.kubeflowPipelinesVersion | default .Chart.AppVersion | quote }}

charts/kubeflow-pipelines/templates/metadata-writer/deployment.yaml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ metadata:
66
app: metadata-writer
77
{{- include "kubeflow-pipelines.labels" . | nindent 4 }}
88
spec:
9-
replicas: 1
9+
replicas: {{ .Values.metadataWriter.replicas }}
1010
selector:
1111
matchLabels:
1212
app: metadata-writer
@@ -15,6 +15,7 @@ spec:
1515
labels:
1616
app: metadata-writer
1717
spec:
18+
{{- include "kubeflow-pipelines.imagePullSecrets" . | nindent 6 }}
1819
securityContext:
1920
seccompProfile:
2021
type: RuntimeDefault
@@ -44,15 +45,15 @@ spec:
4445
{{- toYaml . | nindent 10 }}
4546
{{- end }}
4647
serviceAccountName: kubeflow-pipelines-metadata-writer
47-
{{- with .Values.metadataWriter.nodeSelector }}
48+
{{- with .Values.metadataWriter.nodeSelector | default .Values.global.nodeSelector }}
4849
nodeSelector:
4950
{{- toYaml . | nindent 8 }}
5051
{{- end }}
51-
{{- with .Values.metadataWriter.tolerations }}
52+
{{- with .Values.metadataWriter.tolerations | default .Values.global.tolerations }}
5253
tolerations:
5354
{{- toYaml . | nindent 8 }}
5455
{{- end }}
55-
{{- with .Values.metadataWriter.affinity }}
56+
{{- with .Values.metadataWriter.affinity | default .Values.global.affinity }}
5657
affinity:
5758
{{- toYaml . | nindent 8 }}
5859
{{- end }}

0 commit comments

Comments
 (0)