Deploy with Helm Chart#
This section shows how to deploy Model Download using Helm chart.
Prerequisites#
Before you begin, ensure that you have the following prerequisites:
Kubernetes cluster set up and running.
The cluster must support dynamic provisioning of Persistent Volumes (PV). See Kubernetes Documentation on Dynamic Volume Provisioning for details.
Install
kubectlon your system. See Kubernetes Documentation on Tool Installation. Ensure access to the Kubernetes cluster.Helm chart installed on your system: See Installing Helm.
Install Helm Chart from Docker Hub or from Source#
To deploy with Helm chart, you can either install the chart from Docker hub or from source.
Option 1: Install from Docker Hub#
Pull the specific chart
Use the following command to pull the Helm chart from Docker Hub:
helm pull oci://registry-1.docker.io/intel/model-download-chart --version <version-no>
See the Docker hub’s tags page for details on the latest version number to use for the application.
Extract the
.tgzfiletar -xvf model-download-chart-<version-no>.tgz
This will create a directory named
model-download-chart, containing the chart files. Navigate to the extracted directory:cd model-download-chart
Option 2: Install from Source#
Clone the repository containing the Helm chart:
# Clone the latest on the mainline git clone https://github.com/open-edge-platform/edge-ai-libraries.git edge-ai-libraries # Alternatively, clone a specific release branch git clone https://github.com/open-edge-platform/edge-ai-libraries.git edge-ai-libraries -b <release-tag>
Navigate to the chart directory:
cd edge-ai-libraries/microservices/model-download/chart
Configure the values.yaml File#
Edit the values.yaml file located in the chart directory to set the necessary environment variables. Set your proxy settings as required.
The following is a summary of key configuration options available in the values.yaml file:
Parameter |
Description |
Example Value |
Required |
|---|---|---|---|
|
Hugging Face access token |
|
Yes |
|
Maximum allowed upload ZIP size in MB |
|
No |
|
Chunk size for streaming file uploads in KB (larger improves throughput, smaller reduces memory for concurrent uploads) |
|
No |
|
Comma-separated |
|
No |
|
Geti™ workspace ID |
Yes, For Geti™ connection |
|
|
Geti™ connection host address |
Yes, For Geti™ connection |
|
|
Geti™ Personal Access token |
Yes, For Geti™ connection |
|
|
Geti™ API version |
|
Yes, For Geti™ connection |
|
Enables SSL certificate validation for HTTPS/HTTP Geti™ hosts |
|
Yes, For Geti™ connection |
|
Sets the static port (in the 30000–32767 range) |
32000 |
Yes |
|
Comma-separated list of plugins to enable (e.g., |
|
Yes |
|
Creates and mounts a startup-model ConfigMap and schedules its models asynchronously |
|
No |
|
Startup configuration containing the default |
See |
When enabled |
|
image repository url |
intel/model-download |
Yes |
|
latest image tag |
latest |
Yes |
|
For model download deployed on GPU |
false |
|
|
Label assigned to the GPU node on kubernetes cluster by the device plugin example- gpu.intel.com/i915, gpu.intel.com/xe. Identify by running kubectl describe node |
|
|
|
Default is false, true to enable affinity |
|
|
|
Provide the key for the affinity,default is kubernetes.io/hostname |
|
|
|
Provide the values for the respective key |
Note: See the chart’s
values.yamlfile for a full list of configurable parameters.
Preload Models#
Startup model loading is disabled by default. To enable the chart’s ConfigMap-backed, read-only configuration, set:
modeldownload:
startupConfig:
enabled: true
config:
download_path: /opt/models/preloaded
parallel_downloads: false
models:
- name: BAAI/bge-small-en-v1.5
hub: huggingface
type: embeddings
- name: yolov8n
hub: ultralytics
type: vision
download_path: /opt/models/vision
Enable every plugin referenced by the model entries in
modeldownload.env.ENABLED_PLUGINS. The chart sets STARTUP_MODELS_CONFIG to the mounted
ConfigMap path. Keep tokens out of startupConfig.config; provide credentials through the
existing environment values or your deployment’s secret-injection mechanism.
Model work continues after the readiness probe succeeds. Use the existing jobs endpoints or
kubectl logs to monitor jobs. The PVC preserves downloaded artifacts across pod restarts,
but in-memory job records are not restored and configured entries are scheduled again. For the
full schema and behavior, see Download Models at Startup.
Deploy the Helm Chart#
helm install model-download . -n <your-namespace>
Note:
model-downloadcreates and manages a shared PVC that can be used by dependent applications such as Chat Q&A.
Verify the Deployment#
Check the status of the deployed resources to ensure everything is running correctly:
kubectl get pods -n <your-namespace>
kubectl get services -n <your-namespace>
Access the Application#
Open the application’s Swagger documentation in a browser through http://<node-ip>:<node-port>/api/v1/docs.
Uninstall Helm chart#
helm uninstall <name> -n <your-namespace>
Verify the Application#
Ensure that all pods are running and the services are accessible.
Access the application dashboard and verify that it is functioning as expected.
Troubleshooting#
If you encounter any issues during the deployment process, check the Kubernetes logs for errors:
kubectl logs <pod-name>
If the PVC created during a Helm chart deployment is not removed or auto-deleted due to a deployment failure or being stuck, delete it manually:
# List the PVCs present in the given namespace kubectl get pvc -n <namespace> # Delete the required PVC from the namespace kubectl delete pvc <pvc-name> -n <namespace>
Note: Delete the shared PVC only after confirming no other workload or application (for example, Chat Q&A) depends on it. In such cases, uninstall the dependent application first, then clean up
model-downloadresources, and finally delete the shared PVC if required.