Storage Navigator Configuration#
Goal: Deploy the Storage Navigator (web-based file browser for Omniverse Storage APIs) so you can browse, upload, download, and manage files via your deployment.
Storage Navigator is a JavaScript web app for browsing and managing storage. Deploy it after your services and ingress are in place for a full experience.
Note
Complete all previous steps and have a working deployment accessible via ingress before continuing.
CORS Storage Configuration#
When browser-based clients or presigned URLs point directly at S3 or Azure Blob, the bucket or blob service must have CORS configured or the browser will block cross-origin requests.
AWS S3 Bucket CORS
Example cors.json:
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"AllowedOrigins": ["https://your-app-domain.com", "https://*.your-domain.com"],
"ExposeHeaders": ["ETag", "Content-Length"],
"MaxAgeSeconds": 3600
}
]
Apply with the AWS CLI:
aws s3api put-bucket-cors --bucket BUCKET_NAME_HERE --cors-configuration file://cors.json
Replace AllowedOrigins with your web app origin(s). Avoid * in production when credentials are sent. ExposeHeaders (e.g. ETag) may be needed for conditional uploads.
Azure Blob Storage CORS
CORS is configured at the Blob service level of the storage account. In Azure Portal: Storage account → Resource sharing (CORS) → Blob service → add rules. Via Azure CLI:
az storage cors add \
--account-name <storage-account> \
--services b \
--methods GET PUT POST DELETE HEAD OPTIONS \
--origins "https://your-app-domain.com" "https://*.your-domain.com" \
--allowed-headers "*" \
--exposed-headers "ETag" "Content-Length" \
--max-age 3600
Pulling the Storage Navigator Helm Chart#
Pull and unpack the Storage Navigator Helm chart from the NGC catalog. Replace {NGC_API_KEY} with your NGC API key.
# pull the chart from NGC
helm fetch https://helm.ngc.nvidia.com/nvidia/omniverse/charts/storage-navigator-1.0.1.tgz --username='$oauthtoken' --password={NGC_API_KEY}
# unpack the chart and cd into the directory
tar -xvf storage-navigator-1.0.1.tgz
cd storage-navigator
Create the Storage Navigator values file#
Use navigator-values.yaml as the values file (same pattern as previous examples).
# create and edit the local values file, we're using VS Code for this example
code navigator-values.yaml
Add the image-pull secret so the Navigator can pull images from NGC.
image:
pullSecrets:
- name: ngcpull-secret
Deploy the Storage Navigator.
# deploy the storage navigator
helm upgrade --install storage-navigator . -f navigator-values.yaml --namespace storage-apis
# validate the pod is running
kubectl get pods -n storage-apis
Update the deployment certificates#
Ensure you have a certificate for this domain deployed in the storage-apis namespace.
# cert DNS namespace needed for the storage navigator
"navigator.{DNS_URL}"
"*.navigator.{DNS_URL}"
Update Navigator to use the ingress#
Update the configuration to use ingress so you can access the Navigator.
# cd up to your deployment directory
cd ..
# update the configuration to use the ingress
helm upgrade --install storage-navigator ./storage-navigator -f storage-navigator/navigator-values.yaml -f ingress-values.yaml --namespace storage-apis
# validate the pod is running
kubectl get pods -n storage-apis
Once the pod is running, open https://navigator.{DNS_URL} in your browser. You should see the interface shown below.
Connect to the stack: click Add Connection, enter the Discovery Service hostname, then click Connect.
You can now browse storage and upload or download files.