OVCC: Deployment#
Configuration#
First follow the configuration guide to craft a
values.yaml for your environment.
Deployment Steps#
Warning
Replace <ngc-api-key> in the following commands with your org’s
access token or your NGC personal key with access to
nvidia/omniverse NGC repository.
1. Configure Helm#
If the chart repo nvidia/omniverse is not setup, execute the
following to add the repo and update the local chart index.
To review your existing chart repositories run the following.
helm repo list
If https://helm.ngc.nvidia.com/nvidia/omniverse is not listed, run
the following to setup the chart repository.
helm repo add omniverse https://helm.ngc.nvidia.com/nvidia/omniverse \
--username '$oauthtoken' \
--password "<ngc-api-key>"
helm repo update
2. Prepare Namespace#
Create the Kubernetes namespace where the service will be deployed, if it doesn’t already exist. Skip this step if the target namespace already exists.
# Create the namespace if does not already exist.
kubectl create namespace ovcc
3. Create Required Secrets#
Image Pull Secret Create a secret to allow Kubernetes to access the NGC registry.
# Setup the docker-registry secret. kubectl create secret docker-registry ngc-container-pull \ --namespace ovcc \ --docker-server=nvcr.io \ --docker-username='$oauthtoken' \ --docker-password=<ngc-api-key>
Important
The secret name
ngc-container-pullmust match the one specified in your Helm values underimage.pullSecrets.(Optional) TLS Secret If you are enabling TLS for a production deployment, follow the TLS guide to create and configure TLS secrets.
4. Install Helm Chart#
Using the prepared values file, install the ovcontentcache Helm
chart.
helm install ovcc omniverse/ovcontentcache \
--version 4.0.4 \
--namespace ovcc \
-f values.yaml
5. Verify Deployment#
After installation, verify that OVCC pods are running and healthy:
# Check all OVCC resources
kubectl get all -n ovcc -l app.kubernetes.io/instance=ovcc
# Check pod status
kubectl get pods -n ovcc -l app.kubernetes.io/instance=ovcc
# View pod logs
kubectl logs -n ovcc -l app.kubernetes.io/instance=ovcc -f --all-containers=true
Verify Service Endpoints:
OVCC creates two services:
OVCC Service: Main cache service on port 14128
Nucleus Service: Large File Transfer (LFT) service on port 14129
# Check services
kubectl get svc -n ovcc -l app.kubernetes.io/instance=ovcc
# Verify service endpoints
kubectl get endpoints -n ovcc -l app.kubernetes.io/instance=ovcc
Test Cache Connectivity (from within cluster):
You can test connectivity to OVCC from a pod within the cluster:
# Test HTTP connection to S3 backend via cache
curl -v http://ovcc.ovcc.svc.cluster.local:14128/unittests/stat/empty.txt \
-H 'Host: omniverse-storage-service-cicd-public.s3.us-west-2.amazonaws.com'
# If TLS is enabled, test HTTPS connection
curl -v https://ovcc.ovcc.svc.cluster.local:14128/unittests/stat/empty.txt \
-H 'Host: omniverse-storage-service-cicd-public.s3.us-west-2.amazonaws.com'
Internal Access: With service.type: ClusterIP (default), OVCC is
accessible within the Kubernetes cluster at:
OVCC Service:
http://ovcc.ovcc.svc.cluster.local:14128Nucleus Service:
http://ovcc.ovcc.svc.cluster.local:14129
If TLS is enabled, use https:// instead of http://.
External Access: If required, configure external access via
service.type: LoadBalancer in Helm values or by deploying a separate
Ingress resource targeting the OVCC ClusterIP service.
Upgrading from USD Content Cache (UCC)#
Important
Prefer reinstalling OVCC
Existing UCC installations can set compat.useUccDefaults=true to
keep UCC-era resource names, TLS secret defaults, metric prefix, and
cache paths during an in-place helm upgrade. Use that flag only when
preserving an existing release and its PVC names is required. For new
deployments, uninstall the old release, remove unused PVCs, and install
OVCC fresh.
What changes when you move from UCC to OVCC:
Helm chart name on NGC:
ovcontentcache(wasusd-content-cache).Kubernetes and Helm release names:
ovccby default, unless you setcompat.useUccDefaultsfor an in-place upgrade that keeps the UCC-era names.Service URL pattern is unchanged in shape:
http://<fullname>.<namespace>.svc.cluster.local:14128(the default example usesovcc.ovcc).
Uninstall Instructions#
Uninstall Helm Chart
helm uninstall ovcc -n ovcc
Remove Unused Persistent Volumes
Important
Orphaned Data Will Remain Persistent volumes created by the installation are not cleaned up by helm or Kubernetes. New/re-installations will not use pre-existing volumes.
It is recommended to remove unused PVCs after running the uninstall steps above.
# Remove **all** persistent volumes that are not attached to pods from the # given namespace. kubectl delete pvc --all -n ovcc
Summary#
This guide covered the deployment steps for OVCC, including Helm repository setup, namespace creation, secret configuration, and chart installation. After deployment, verify that OVCC pods are running and healthy in your cluster.
For detailed information on configuring OVCC settings such as storage sizing, cache behavior, and monitoring, refer to the configuration guide.