diff --git a/helm/README.md b/helm/README.md index 2f865f56b..2400c337d 100644 --- a/helm/README.md +++ b/helm/README.md @@ -113,7 +113,10 @@ This table documents all available configuration values for the Production Stack | `servingEngineSpec.modelSpec[].pvcAnnotations` | map | `{}` | (Optional) The annotations to add to the PVC | | `servingEngineSpec.modelSpec[].extraVolumes` | list | `[]` | (Optional) Additional volumes to add to the pod, in Kubernetes volume format | | `servingEngineSpec.modelSpec[].extraVolumeMounts` | list | `[]` | (Optional) Additional volume mounts to add to the container, in Kubernetes volumeMount format | +| `servingEngineSpec.modelSpec[].extraContainers` | list | `[]` | (Optional) Additional containers to run alongside the main vLLM container, in Kubernetes container format. Unlike the LoRA sidecar, these are added regardless of `enableLoRA` and support the full container spec (image, args, env, volumeMounts, livenessProbe, resources, etc.) | | `servingEngineSpec.modelSpec[].serviceAccountName` | string | `""` | (Optional) The name of the service account to use for the deployment | +| `servingEngineSpec.modelSpec[].serviceAnnotations` | map | `{}` | (Optional) Annotations to add to the model's service | +| `servingEngineSpec.modelSpec[].serviceLabels` | map | `{}` | (Optional) Labels to add to the model's service | | `servingEngineSpec.modelSpec[].priorityClassName` | string | `""` | Priority class name for the deployment | | `servingEngineSpec.modelSpec[].hf_token` | string/map | - | (Optional) Hugging Face token configuration | | `servingEngineSpec.modelSpec[].env` | list | - | (Optional) Environment variables for the container | diff --git a/helm/templates/deployment-vllm-multi.yaml b/helm/templates/deployment-vllm-multi.yaml index 7b57d6a33..29b349c16 100644 --- a/helm/templates/deployment-vllm-multi.yaml +++ b/helm/templates/deployment-vllm-multi.yaml @@ -457,6 +457,9 @@ spec: - name: {{ .Release.Name }}-storage mountPath: /data {{- end }} + {{- with $modelSpec.extraContainers }} + {{- toYaml . | nindent 8 }} + {{- end }} {{- if $modelSpec.imagePullSecret }} imagePullSecrets: - name: {{ $modelSpec.imagePullSecret }} diff --git a/helm/templates/service-vllm.yaml b/helm/templates/service-vllm.yaml index 281703780..d57330c20 100644 --- a/helm/templates/service-vllm.yaml +++ b/helm/templates/service-vllm.yaml @@ -9,6 +9,9 @@ metadata: labels: {{- include "chart.engineStandardLabels" (dict "releaseName" $.Release.Name "modelName" $modelSpec.name "chartName" $.Chart.Name) | nindent 4 }} {{- include "chart.engineLabels" $ | nindent 4 }} + {{- with $modelSpec.serviceLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} {{- with $modelSpec.serviceAnnotations }} annotations: {{- toYaml . | nindent 4}} diff --git a/helm/values.schema.json b/helm/values.schema.json index bae9926ef..00b7aa55c 100644 --- a/helm/values.schema.json +++ b/helm/values.schema.json @@ -1130,6 +1130,10 @@ "description": "Reference to an existing Kubernetes Secret from which all key/value pairs will be loaded as environment variables into the container", "type": "object" }, + "extraContainers": { + "description": "Additional containers to run alongside the main vLLM container, in Kubernetes container format. Unlike the LoRA sidecar (servingEngineSpec.sidecar), these are added regardless of enableLoRA and support the full container spec (image, args, env, volumeMounts, livenessProbe, resources, etc.).", + "type": "array" + }, "extraVolumeMounts": { "description": "Additional volume mounts to add to the container, in Kubernetes volumeMount format", "type": "array" @@ -1524,6 +1528,10 @@ "description": "The model's service annotations", "type": "object" }, + "serviceLabels": { + "description": "The model's service labels", + "type": "object" + }, "shmSize": { "description": "The size of the shared memory", "type": "string" @@ -1843,4 +1851,4 @@ } } } -} +} \ No newline at end of file diff --git a/helm/values.yaml b/helm/values.yaml index 728cc372a..3c4e5330f 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -109,6 +109,27 @@ servingEngineSpec: extraVolumeMounts: [] # - name: tmp-volume # mountPath: /tmp + # -- Additional containers to run alongside the main vLLM container, in Kubernetes container format. Unlike the LoRA sidecar (servingEngineSpec.sidecar), these are added regardless of enableLoRA and support the full container spec (image, args, env, volumeMounts, livenessProbe, resources, etc.). + extraContainers: [] + # - name: my-sidecar + # image: my-registry/my-sidecar:latest + # args: ["--flag", "value"] + # env: + # - name: MY_ENV_VAR + # value: "my-value" + # volumeMounts: + # - name: tmp-volume + # mountPath: /tmp + # resources: + # requests: + # cpu: "100m" + # memory: "128Mi" + # livenessProbe: + # httpGet: + # path: /healthz + # port: 8080 + # initialDelaySeconds: 5 + # periodSeconds: 10 # -- The configuration for the init container to be run before the main container. initContainer: # -- The name of the init container @@ -209,6 +230,8 @@ servingEngineSpec: shmSize: "20Gi" # -- The model's service annotations serviceAnnotations: {} + # -- The model's service labels + serviceLabels: {} # -- Whether to enable LoRA enableLoRA: true # -- KEDA autoscaling configuration for this model deployment. Requires KEDA to be installed in the cluster.