UCC: Deployment#

Configuration#

First follow the UCC: Configure to craft a values.yaml for your environment.

Deployment Steps#

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.

# Replace <ngc-api-key> with your org's access token or your NGC personal key with access
# to BYOC NGC repo.
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 ucc

3. Create Required Secrets#

  • Image Pull Secret

    Create a secret to allow Kubernetes to access the NGC registry.

    # Setup the docker-registry secret.
    # Replace <ngc-api-key> with your org's access token or your NGC personal key with access
    # to BYOC NGC repo.
    kubectl create secret docker-registry ngc-container-pull \
       --namespace ucc \
       --docker-server=nvcr.io \
       --docker-username='$oauthtoken' \
       --docker-password=<ngc-api-key>
    

    Important

    The secret name ngc-container-pull must match the one specified in your Helm values under image.pullSecrets.

  • (Optional) TLS Secret

    If you are enabling TLS for a production deployment, follow the UCC: TLS Configuration guide to create and configure TLS secrets.

4. Install Helm Chart#

Using the prepared values file, install the usd-content-cache Helm chart.

helm install ucc omniverse/usd-content-cache \
    --namespace ucc \
    -f values.yaml

5. Verify Deployment#

After installation, verify that UCC pods are running and healthy:

# Check all UCC resources
kubectl get all -n ucc -l app.kubernetes.io/instance=ucc

# Check pod status
kubectl get pods -n ucc -l app.kubernetes.io/instance=ucc

# View pod logs
kubectl logs -n ucc -l app.kubernetes.io/instance=ucc -f --all-containers=true

Verify Service Endpoints:

UCC creates two services: * UCC Service: Main cache service on port 14128 * Nucleus Service: Large File Transfer (LFT) service on port 14129

# Check services
kubectl get svc -n ucc -l app.kubernetes.io/instance=ucc

# Verify service endpoints
kubectl get endpoints -n ucc -l app.kubernetes.io/instance=ucc

Test Cache Connectivity (from within cluster):

You can test connectivity to UCC from a pod within the cluster:

# Test HTTP connection to S3 backend via cache
curl -v http://ucc.ucc.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://ucc.ucc.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), UCC is accessible within the Kubernetes cluster at:

  • UCC Service: http://ucc.ucc.svc.cluster.local:14128

  • Nucleus Service: http://ucc.ucc.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 UCC ClusterIP service.

Uninstall Instructions#

  1. Uninstall Helm Chart

    helm uninstall ucc -n ucc
    
  2. Remove Unused Persistent Volumes

    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 ucc
    

Summary#

This guide covered the deployment steps for UCC, including Helm repository setup, namespace creation, secret configuration, and chart installation. After deployment, verify that UCC pods are running and healthy in your cluster.

For detailed information on configuring UCC settings such as storage sizing, cache behavior, and monitoring, refer to the UCC: Configure guide.