Skip to content

Commit 9db832a

Browse files
committed
upd
1 parent e44966a commit 9db832a

File tree

16 files changed

+1107
-0
lines changed

16 files changed

+1107
-0
lines changed

charts/vllm/.helmignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/

charts/vllm/Chart.lock

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
dependencies:
2+
- name: common
3+
repository: oci://registry-1.docker.io/bitnamicharts
4+
version: 2.31.3
5+
digest: sha256:f9c314553215490ea1b94c70082cb152d6ff5916ce185b4e00f5287f81545b4c
6+
generated: "2025-07-02T23:51:09.628247327+05:00"

charts/vllm/Chart.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
apiVersion: v2
2+
name: vllm
3+
description: A high-throughput and memory-efficient inference and serving engine for LLMs
4+
type: application
5+
annotations:
6+
licenses: MIT License
7+
home: https://github.com/mixa3607/charts/tree/master/charts/vllm
8+
icon: https://raw.githubusercontent.com/mixa3607/charts/refs/heads/master/charts/vllm/icon.png
9+
keywords: []
10+
maintainers:
11+
- name: mixa3607
12+
url: https://github.com/mixa3607
13+
sources:
14+
- https://github.com/mixa3607/ML-gfx906/vllm
15+
- https://github.com/nlzy/vllm-gfx906
16+
- https://github.com/vllm-project/vllm
17+
version: 0.1.0
18+
appVersion: 0.11.0-rocm-6.3.3
19+
dependencies:
20+
- name: common
21+
repository: oci://registry-1.docker.io/bitnamicharts
22+
tags:
23+
- bitnami-common
24+
version: 2.x.x
19.1 KB
Binary file not shown.

charts/vllm/icon.png

4.86 KB
Loading

charts/vllm/init.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#export __CHART__="$(basename $PWD)"
2+
export __CHART_DESCRIPTION__="A high-throughput and memory-efficient inference and serving engine for LLMs"
3+
source ../chart-init.sh

charts/vllm/readme.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Helm package for vllm
2+
3+
A high-throughput and memory-efficient inference and serving engine for LLMs
4+
5+
## TL;DR
6+
7+
```console
8+
helm install my-release oci://ghcr.io/mixa3607/charts/vllm
9+
```
10+
11+
## Prerequisites
12+
13+
- Kubernetes 1.30+
14+
- Helm 3.8.0+
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{{/*
2+
Copyright Broadcom, Inc. All Rights Reserved.
3+
SPDX-License-Identifier: APACHE-2.0
4+
*/}}
5+
6+
{{/*
7+
Return the proper vllm image name
8+
*/}}
9+
{{- define "vllm.image" -}}
10+
{{- include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global "chart" .Chart) -}}
11+
{{- end -}}
12+
13+
{{/*
14+
Return the proper Docker Image Registry Secret Names
15+
*/}}
16+
{{- define "vllm.imagePullSecrets" -}}
17+
{{- include "common.images.renderPullSecrets" (dict "images" (list .Values.image) "context" $) -}}
18+
{{- end -}}
19+
20+
{{/*
21+
Create the name of the service account to use
22+
*/}}
23+
{{- define "vllm.serviceAccountName" -}}
24+
{{- if .Values.serviceAccount.create -}}
25+
{{ default (include "common.names.fullname" .) .Values.serviceAccount.name }}
26+
{{- else -}}
27+
{{ default "default" .Values.serviceAccount.name }}
28+
{{- end -}}
29+
{{- end -}}
30+
31+
{{/*
32+
Return true if cert-manager required annotations for TLS signed certificates are set in the Ingress annotations
33+
Ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations
34+
*/}}
35+
{{- define "vllm.ingress.certManagerRequest" -}}
36+
{{ if or (hasKey . "cert-manager.io/cluster-issuer") (hasKey . "cert-manager.io/issuer") }}
37+
{{- true -}}
38+
{{- end -}}
39+
{{- end -}}
40+
41+
{{/*
42+
Compile all warnings into a single message.
43+
*/}}
44+
{{- define "vllm.validateValues" -}}
45+
{{- $messages := list -}}
46+
{{- $messages := append $messages (include "vllm.validateValues.foo" .) -}}
47+
{{- $messages := append $messages (include "vllm.validateValues.bar" .) -}}
48+
{{- $messages := without $messages "" -}}
49+
{{- $message := join "\n" $messages -}}
50+
51+
{{- if $message -}}
52+
{{- printf "\nVALUES VALIDATION:\n%s" $message -}}
53+
{{- end -}}
54+
{{- end -}}
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ template "common.names.fullname" . }}
5+
namespace: {{ include "common.names.namespace" . | quote }}
6+
labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
7+
app.kubernetes.io/component: vllm
8+
{{- if .Values.commonAnnotations }}
9+
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
10+
{{- end }}
11+
spec:
12+
{{- if not .Values.autoscaling.hpa.enabled }}
13+
replicas: {{ .Values.replicaCount }}
14+
{{- end }}
15+
16+
{{- if .Values.updateStrategy }}
17+
strategy: {{- toYaml .Values.updateStrategy | nindent 4 }}
18+
{{- end }}
19+
20+
{{- $podLabels := include "common.tplvalues.merge" (dict "values" (list .Values.podLabels .Values.commonLabels) "context" .) }}
21+
22+
selector:
23+
matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }}
24+
app.kubernetes.io/component: vllm
25+
26+
template:
27+
metadata:
28+
{{- if .Values.podAnnotations }}
29+
annotations: {{- include "common.tplvalues.render" (dict "value" .Values.podAnnotations "context" $) | nindent 8 }}
30+
{{- end }}
31+
labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }}
32+
app.kubernetes.io/component: vllm
33+
34+
spec:
35+
{{- include "vllm.imagePullSecrets" . | nindent 6 }}
36+
37+
serviceAccountName: {{ template "vllm.serviceAccountName" . }}
38+
39+
{{- if .Values.affinity }}
40+
affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.affinity "context" $) | nindent 8 }}
41+
{{- else }}
42+
affinity:
43+
podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAffinityPreset "customLabels" $podLabels "context" $) | nindent 10 }}
44+
podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAntiAffinityPreset "customLabels" $podLabels "context" $) | nindent 10 }}
45+
nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.nodeAffinityPreset.type "key" .Values.nodeAffinityPreset.key "values" .Values.nodeAffinityPreset.values) | nindent 10 }}
46+
{{- end }}
47+
48+
{{- if .Values.nodeSelector }}
49+
nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.nodeSelector "context" $) | nindent 8 }}
50+
{{- end }}
51+
52+
{{- if .Values.tolerations }}
53+
tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.tolerations "context" .) | nindent 8 }}
54+
{{- end }}
55+
56+
priorityClassName: {{ .Values.priorityClassName | quote }}
57+
58+
{{- if .Values.schedulerName }}
59+
schedulerName: {{ .Values.schedulerName }}
60+
{{- end }}
61+
62+
{{- if .Values.topologySpreadConstraints }}
63+
topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.topologySpreadConstraints "context" .) | nindent 8 }}
64+
{{- end }}
65+
66+
{{- if .Values.podSecurityContext.enabled }}
67+
securityContext: {{- omit .Values.podSecurityContext "enabled" | toYaml | nindent 8 }}
68+
{{- end }}
69+
70+
{{- if .Values.terminationGracePeriodSeconds }}
71+
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
72+
{{- end }}
73+
74+
{{- if .Values.initContainers }}
75+
initContainers:
76+
{{- include "common.tplvalues.render" (dict "value" .Values.initContainers "context" $) | nindent 8 }}
77+
{{- end }}
78+
79+
containers:
80+
- name: {{ .Chart.Name }}
81+
image: {{ template "vllm.image" . }}
82+
imagePullPolicy: {{ .Values.image.pullPolicy }}
83+
{{- if .Values.containerSecurityContext.enabled }}
84+
securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }}
85+
{{- end }}
86+
87+
{{- if .Values.diagnosticMode.enabled }}
88+
command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }}
89+
{{- else if .Values.command }}
90+
command: {{- include "common.tplvalues.render" (dict "value" .Values.command "context" $) | nindent 12 }}
91+
{{- end }}
92+
{{- if .Values.diagnosticMode.enabled }}
93+
args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }}
94+
{{- else if .Values.args }}
95+
args: {{- include "common.tplvalues.render" (dict "value" .Values.args "context" $) | nindent 12 }}
96+
{{- end }}
97+
98+
env:
99+
- name: "IMAGE_NAME"
100+
value: "{{ template "vllm.image" . }}"
101+
- name: "VLLM_PORT"
102+
value: "{{ .Values.containerPorts.httppublic }}"
103+
{{- if .Values.extraEnvVars }}
104+
{{- include "common.tplvalues.render" (dict "value" .Values.extraEnvVars "context" $) | nindent 12 }}
105+
{{- end }}
106+
envFrom:
107+
{{- if .Values.extraEnvVarsCM }}
108+
- configMapRef:
109+
name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsCM "context" $) }}
110+
{{- end }}
111+
{{- if .Values.extraEnvVarsSecret }}
112+
- secretRef:
113+
name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsSecret "context" $) }}
114+
{{- end }}
115+
116+
{{- if .Values.resources }}
117+
resources: {{- toYaml .Values.resources | nindent 12 }}
118+
{{- else if ne .Values.resourcesPreset "none" }}
119+
resources: {{- include "common.resources.preset" (dict "type" .Values.resourcesPreset) | nindent 12 }}
120+
{{- end }}
121+
122+
ports:
123+
- name: httppublic
124+
containerPort: {{ .Values.containerPorts.httppublic }}
125+
{{- if .Values.extraContainerPorts }}
126+
{{- include "common.tplvalues.render" (dict "value" .Values.extraContainerPorts "context" $) | nindent 12 }}
127+
{{- end }}
128+
129+
{{- if not .Values.diagnosticMode.enabled }}
130+
{{- if .Values.customLivenessProbe }}
131+
livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customLivenessProbe "context" $) | nindent 12 }}
132+
{{- else if .Values.livenessProbe.enabled }}
133+
livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.livenessProbe "enabled") "context" $) | nindent 12 }}
134+
{{- end }}
135+
{{- if .Values.customReadinessProbe }}
136+
readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customReadinessProbe "context" $) | nindent 12 }}
137+
{{- else if .Values.readinessProbe.enabled }}
138+
readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.readinessProbe "enabled") "context" $) | nindent 12 }}
139+
{{- end }}
140+
{{- if .Values.customStartupProbe }}
141+
startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customStartupProbe "context" $) | nindent 12 }}
142+
{{- else if .Values.startupProbe.enabled }}
143+
startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.startupProbe "enabled") "context" $) | nindent 12 }}
144+
{{- end }}
145+
{{- end }}
146+
147+
{{- if .Values.lifecycleHooks }}
148+
lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.lifecycleHooks "context" $) | nindent 12 }}
149+
{{- end }}
150+
151+
volumeMounts:
152+
{{- range $k, $v := index .Values "app-configuration" }}
153+
- name: appsettings
154+
readOnly: true
155+
mountPath: "/app/vllm/{{ $k }}"
156+
subPath: {{ $k }}
157+
{{- end }}
158+
- name: empty-dir
159+
mountPath: /tmp
160+
subPath: tmp-dir
161+
- name: data
162+
mountPath: {{ .Values.persistence.mountPath }}
163+
{{- if .Values.persistence.subPath }}
164+
subPath: {{ .Values.persistence.subPath }}
165+
{{- end }}
166+
{{- if .Values.extraVolumeMounts }}
167+
{{- include "common.tplvalues.render" (dict "value" .Values.extraVolumeMounts "context" $) | nindent 12 }}
168+
{{- end }}
169+
{{- if .Values.sidecars }}
170+
{{- include "common.tplvalues.render" ( dict "value" .Values.sidecars "context" $) | nindent 8 }}
171+
{{- end }}
172+
173+
volumes:
174+
- name: empty-dir
175+
emptyDir: { }
176+
- name: data
177+
{{- if .Values.persistence.enabled }}
178+
persistentVolumeClaim:
179+
claimName: {{ default (include "common.names.fullname" .) .Values.persistence.existingClaim }}
180+
{{- else }}
181+
emptyDir: {}
182+
{{- end }}
183+
- name: appsettings
184+
secret:
185+
secretName: {{ template "common.names.fullname" . }}-app-configuration
186+
{{- if .Values.extraVolumes }}
187+
{{- include "common.tplvalues.render" (dict "value" .Values.extraVolumes "context" $) | nindent 8 }}
188+
{{- end }}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{{- /*
2+
Copyright Broadcom, Inc. All Rights Reserved.
3+
SPDX-License-Identifier: APACHE-2.0
4+
*/}}
5+
6+
{{- range .Values.extraDeploy }}
7+
---
8+
{{ include "common.tplvalues.render" (dict "value" . "context" $) }}
9+
{{- end }}

0 commit comments

Comments
 (0)