Skip to content

Commit cbb146d

Browse files
authored
feat(chart): add Helm chart for deploying Label Studio with PostgreSQL (#152)
* feat(chart): add Helm chart for deploying Label Studio with PostgreSQL * feat(milvus): update Milvus configuration to use URI and remove deprecated host/port settings
1 parent f870604 commit cbb146d

File tree

14 files changed

+572
-98
lines changed

14 files changed

+572
-98
lines changed

backend/services/rag-indexer-service/src/main/java/com/datamate/rag/indexer/infrastructure/milvus/MilvusService.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,6 @@
3939
@Slf4j
4040
@Component
4141
public class MilvusService {
42-
@Value("${datamate.rag.milvus-host:milvus}")
43-
private String milvusHost;
44-
@Value("${datamate.rag.milvus-port:19530}")
45-
private int milvusPort;
4642
@Value("${datamate.rag.milvus-uri:http://milvus-standalone:19530}")
4743
private String milvusUri;
4844
private static final Gson GSON;

deployment/helm/datamate/charts/backend/templates/deployment.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ spec:
6060
env:
6161
{{- toYaml . | nindent 12 }}
6262
{{- end }}
63+
- name: datamate.rag.milvus-uri
64+
value: {{ .Values.milvus.uri | default "http://milvus:19530" | quote }}
6365
{{- with .Values.volumeMounts }}
6466
volumeMounts:
6567
{{- toYaml . | nindent 12 }}

deployment/helm/datamate/values.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ backend:
8080
env:
8181
- name: DB_PASSWORD
8282
value: *dbPass
83+
- name: datamate.rag.milvus-uri
84+
value: "http://milvus:19530"
8385
volumes:
8486
- *datasetVolume
8587
- *flowVolume
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v2
2+
name: label-studio
3+
version: 0.1.0
4+
description: A Helm chart for deploying Label Studio with PostgreSQL on Kubernetes
5+
6+
# Application metadata
7+
appVersion: "latest"
8+
9+
# This chart is designed to mirror the behavior of deployment/docker/label-studio/docker-compose.yml
10+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{{/*
2+
Expand the name of the chart.
3+
*/}}
4+
{{- define "label-studio.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 "label-studio.fullname" -}}
12+
{{- if .Values.fullnameOverride -}}
13+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
14+
{{- else -}}
15+
{{- $name := default .Chart.name .Values.nameOverride -}}
16+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
17+
{{- end -}}
18+
{{- end -}}
19+
20+
{{/*
21+
Create chart name and version as used by the chart label.
22+
*/}}
23+
{{- define "label-studio.chart" -}}
24+
{{- printf "%s-%s" .Chart.name .Chart.version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
25+
{{- end -}}
26+
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "label-studio.fullname" . }}
5+
labels:
6+
app.kubernetes.io/name: {{ include "label-studio.name" . }}
7+
helm.sh/chart: {{ include "label-studio.chart" . }}
8+
app.kubernetes.io/instance: {{ .Release.Name }}
9+
app.kubernetes.io/managed-by: {{ .Release.Service }}
10+
spec:
11+
replicas: {{ .Values.replicaCount }}
12+
selector:
13+
matchLabels:
14+
app.kubernetes.io/name: {{ include "label-studio.name" . }}
15+
app.kubernetes.io/instance: {{ .Release.Name }}
16+
template:
17+
metadata:
18+
labels:
19+
app.kubernetes.io/name: {{ include "label-studio.name" . }}
20+
app.kubernetes.io/instance: {{ .Release.Name }}
21+
spec:
22+
containers:
23+
- name: label-studio
24+
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
25+
imagePullPolicy: {{ .Values.image.pullPolicy }}
26+
args: ["label-studio-uwsgi"]
27+
env:
28+
- name: DJANGO_DB
29+
value: {{ .Values.env.DJANGO_DB | quote }}
30+
- name: POSTGRE_NAME
31+
value: {{ .Values.env.POSTGRE_NAME | quote }}
32+
- name: POSTGRE_USER
33+
value: {{ .Values.env.POSTGRE_USER | quote }}
34+
- name: POSTGRE_PASSWORD
35+
value: {{ .Values.env.POSTGRE_PASSWORD | quote }}
36+
- name: POSTGRE_PORT
37+
value: {{ .Values.env.POSTGRE_PORT | quote }}
38+
- name: POSTGRE_HOST
39+
value: {{ .Values.env.POSTGRE_HOST | quote }}
40+
- name: LABEL_STUDIO_HOST
41+
value: {{ .Values.env.LABEL_STUDIO_HOST | quote }}
42+
- name: LOCAL_FILES_SERVING_ENABLED
43+
value: {{ .Values.env.LOCAL_FILES_SERVING_ENABLED | quote }}
44+
- name: LOCAL_FILES_DOCUMENT_ROOT
45+
value: {{ .Values.env.LOCAL_FILES_DOCUMENT_ROOT | quote }}
46+
- name: USE_USERNAME_FOR_LOGIN
47+
value: {{ .Values.env.USE_USERNAME_FOR_LOGIN | quote }}
48+
- name: LABEL_STUDIO_USERNAME
49+
value: {{ .Values.env.LABEL_STUDIO_USERNAME | quote }}
50+
- name: LABEL_STUDIO_PASSWORD
51+
value: {{ .Values.env.LABEL_STUDIO_PASSWORD | quote }}
52+
- name: LABEL_STUDIO_ENABLE_LEGACY_API_TOKEN
53+
value: {{ .Values.env.LABEL_STUDIO_ENABLE_LEGACY_API_TOKEN | quote }}
54+
- name: LABEL_STUDIO_USER_TOKEN
55+
value: {{ .Values.env.LABEL_STUDIO_USER_TOKEN | quote }}
56+
- name: LOG_LEVEL
57+
value: {{ .Values.env.LOG_LEVEL | quote }}
58+
ports:
59+
- name: http
60+
containerPort: 8000
61+
protocol: TCP
62+
volumeMounts:
63+
- name: data
64+
mountPath: /label-studio/data
65+
- name: dataset
66+
mountPath: /label-studio/local
67+
resources:
68+
{{- toYaml .Values.resources | nindent 12 }}
69+
volumes:
70+
- name: data
71+
persistentVolumeClaim:
72+
claimName: {{ if .Values.persistence.existingClaim }}{{ .Values.persistence.existingClaim }}{{ else }}{{ include "label-studio.fullname" . }}-data{{ end }}
73+
- name: dataset
74+
{{- if and .Values.datasetVolume.enabled .Values.datasetVolume.claimName }}
75+
persistentVolumeClaim:
76+
claimName: {{ .Values.datasetVolume.claimName }}
77+
{{- else }}
78+
persistentVolumeClaim:
79+
claimName: {{ if .Values.persistence.existingClaim }}{{ .Values.persistence.existingClaim }}{{ else }}{{ include "label-studio.fullname" . }}-dataset{{ end }}
80+
{{- end }}
81+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{{- if .Values.ingress.enabled }}
2+
apiVersion: networking.k8s.io/v1
3+
kind: Ingress
4+
metadata:
5+
name: {{ include "label-studio.fullname" . }}
6+
{{- with .Values.ingress.annotations }}
7+
annotations:
8+
{{- toYaml . | nindent 4 }}
9+
{{- end }}
10+
spec:
11+
{{- if .Values.ingress.className }}
12+
ingressClassName: {{ .Values.ingress.className }}
13+
{{- end }}
14+
rules:
15+
{{- range .Values.ingress.hosts }}
16+
- host: {{ .host | quote }}
17+
http:
18+
paths:
19+
{{- range .paths }}
20+
- path: {{ .path }}
21+
pathType: {{ .pathType }}
22+
backend:
23+
service:
24+
name: {{ include "label-studio.fullname" $ }}
25+
port:
26+
number: {{ $.Values.service.port }}
27+
{{- end }}
28+
{{- end }}
29+
{{- if .Values.ingress.tls }}
30+
tls:
31+
{{- toYaml .Values.ingress.tls | nindent 4 }}
32+
{{- end }}
33+
{{- end }}
34+
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{{- if .Values.postgres.enabled }}
2+
---
3+
apiVersion: v1
4+
kind: Service
5+
metadata:
6+
name: {{ include "label-studio.fullname" . }}-postgres
7+
labels:
8+
app.kubernetes.io/name: {{ include "label-studio.name" . }}-postgres
9+
spec:
10+
ports:
11+
- port: 5432
12+
targetPort: 5432
13+
selector:
14+
app.kubernetes.io/name: {{ include "label-studio.name" . }}-postgres
15+
---
16+
apiVersion: apps/v1
17+
kind: Deployment
18+
metadata:
19+
name: {{ include "label-studio.fullname" . }}-postgres
20+
labels:
21+
app.kubernetes.io/name: {{ include "label-studio.name" . }}-postgres
22+
spec:
23+
replicas: 1
24+
selector:
25+
matchLabels:
26+
app.kubernetes.io/name: {{ include "label-studio.name" . }}-postgres
27+
template:
28+
metadata:
29+
labels:
30+
app.kubernetes.io/name: {{ include "label-studio.name" . }}-postgres
31+
spec:
32+
containers:
33+
- name: postgres
34+
image: "{{ .Values.postgres.image.repository }}:{{ .Values.postgres.image.tag }}"
35+
imagePullPolicy: {{ .Values.postgres.image.pullPolicy }}
36+
env:
37+
- name: POSTGRES_HOST_AUTH_METHOD
38+
value: {{ .Values.postgres.authMethod | quote }}
39+
- name: POSTGRES_USER
40+
value: {{ .Values.postgres.username | quote }}
41+
ports:
42+
- containerPort: 5432
43+
volumeMounts:
44+
- name: postgres-data
45+
mountPath: /var/lib/postgresql/data
46+
volumes:
47+
- name: postgres-data
48+
persistentVolumeClaim:
49+
claimName: {{ include "label-studio.fullname" . }}-postgres
50+
---
51+
apiVersion: v1
52+
kind: PersistentVolumeClaim
53+
metadata:
54+
name: {{ include "label-studio.fullname" . }}-postgres
55+
spec:
56+
accessModes:
57+
- ReadWriteOnce
58+
resources:
59+
requests:
60+
storage: {{ .Values.postgres.persistence.size }}
61+
{{- end }}
62+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
2+
---
3+
apiVersion: v1
4+
kind: PersistentVolumeClaim
5+
metadata:
6+
name: {{ include "label-studio.fullname" . }}-data
7+
spec:
8+
accessModes:
9+
- ReadWriteOnce
10+
resources:
11+
requests:
12+
storage: {{ .Values.persistence.size }}
13+
{{- if .Values.persistence.storageClassName }}
14+
storageClassName: {{ .Values.persistence.storageClassName }}
15+
{{- end }}
16+
---
17+
apiVersion: v1
18+
kind: PersistentVolumeClaim
19+
metadata:
20+
name: {{ include "label-studio.fullname" . }}-dataset
21+
spec:
22+
accessModes:
23+
- ReadWriteOnce
24+
resources:
25+
requests:
26+
storage: {{ .Values.persistence.size }}
27+
{{- if .Values.persistence.storageClassName }}
28+
storageClassName: {{ .Values.persistence.storageClassName }}
29+
{{- end }}
30+
{{- end }}
31+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ include "label-studio.fullname" . }}
5+
labels:
6+
app.kubernetes.io/name: {{ include "label-studio.name" . }}
7+
helm.sh/chart: {{ include "label-studio.chart" . }}
8+
app.kubernetes.io/instance: {{ .Release.Name }}
9+
app.kubernetes.io/managed-by: {{ .Release.Service }}
10+
spec:
11+
type: {{ .Values.service.type }}
12+
ports:
13+
- port: {{ .Values.service.port }}
14+
targetPort: http
15+
protocol: TCP
16+
name: http
17+
{{- if and (eq .Values.service.type "NodePort") .Values.service.nodePort }}
18+
nodePort: {{ .Values.service.nodePort }}
19+
{{- end }}
20+
selector:
21+
app.kubernetes.io/name: {{ include "label-studio.name" . }}
22+
app.kubernetes.io/instance: {{ .Release.Name }}
23+

0 commit comments

Comments
 (0)