Publishing an Application

Omniverse Cloud Development

Overview

This document details how developers requests an Omniverse Cloud deployment of an application to NVIDIA Enterprise Customer Support (NVES). For context, it initially provides an overview of the application deployment process.

Topics:

  1. How Applications are Deployed to Omniverse Cloud

  2. Requesting an Application Deployment

  3. Removing an Application or a Version

Requirements for Omniverse Cloud Deployment:

  • An active Omniverse Cloud entitlement.

  • Access to the NVIDIA Enterprise Support Portal.

  • A Linux-compatible kit-based application in a fat launcher package.

1. How Applications are Deployed to Omniverse Cloud

First, let’s take a high-level look at the application deployment process.

Developer creates an application

It is packaged into a “Fat Application” and Launcher Package

The application package is used to build a linux-based container image

The application container image is registered with NGC

The container image and application metadata are added to the Application service

The Omniverse Cloud Web Launcher queries the application service

The application is now launchable.

Every kit application intended for deployment, be it via the Desktop Launcher, Enterprise Launcher, or Omniverse Cloud, should be packaged in a launcher package. This package collates the application and its essential metadata, serving as the initial step for Omniverse Cloud deployment. For a deeper dive into packaging, refer to the packaging guide.

In essence, all applications in Omniverse Cloud are Linux-based container images. They operate as containers within the Omniverse Cloud cluster, powered by OVX hardware. Here’s the process:

  • Extraction & Containerization: From the launcher package, we extract the application. Using a specially designed Linux base image, we generate a fully isolated container image tailored for that kit application.

  • Registration with NVIDIA’s NGC: This container image is then logged with NVIDIA’s NGC registry. While NVIDIA’s core applications are publicly registered, each client’s custom applications are listed in a private registry. This private registry is managed by the Omniverse Cloud team and is exclusively accessible via the client’s Omniverse Cloud instance or cluster.

  • Application Service Registration: Applications and their versions deployed to an Omniverse Cloud instance are registered with an application service within that instance. We use information from the Launcher package and the url of the container image to add a new application version. Post-registration, the application version becomes accessible via the Omniverse Cloud Web Launcher.

  • Omniverse Cloud Web Launcher Interaction: The Omniverse Cloud Web Launcher for a given instance communicates with the application service’s public API. This determines the available application versions for user access. Consequently, both NVIDIA and customer-developed applications are displayed in the Launcher.

  • Omniverse Cloud Web Launcher Interaction: The Omniverse Cloud Web Launcher, for a given instance, requests all available application versions from the Application Service, whether NVIDIA or customer-developed. These are then displayed in the Web Launcher for user access.

2. Requesting an Application Deployment

Having understood the broader deployment process, let’s dive into the specifics of deploying your custom application.

Collaboration with NVES

Custom application deployment is an NVIDIA-led procedure, necessitating a partnership between the developer and NVIDIA Enterprise Customer Support (NVES). NVES serves as your primary liaison, bridging the gap between you and the requisite Omniverse teams throughout the deployment.

Omniverse Cloud Deployment Preparation

As previously outlined, developers need to undertake certain steps to ready themselves for Omniverse Cloud deployment, keeping in mind certain guidelines and considerations.

Key Considerations

Linux-Compatibility

The OVX nodes hosting your application and the resulting container image are Linux-centric. While Kit is versatile, supporting both Windows and Linux platforms, it’s imperative that your application avoids Windows-exclusive functions, ensuring Linux compatibility.

Compiled Binaries Restrictions

Presently, due to security reasons, we don’t accommodate any compiled binaries in the application package, irrespective of their origin—be it in-house or from external sources, including standard OSS libraries.

Limitations on External Service Access

Given the security frameworks safeguarding your intellectual property within your instance, interfacing with external services can be challenging or even infeasible. This often demands collaboration with our Omniverse Infrastructure and Security personnel.

Python Modules Availability

Standard Python modules are generally accessible in the foundation image forming the container image. However, anticipate that non-standard Python modules might be unavailable.

Initiating Your Deployment Request

You’ve tested your application locally and are ready to deploy, what steps do you need to do to be ready to start the deployment process?

Application Packaging

In accordance with the Packaging instructions found here, create a launcher package ensuring compliance with the given criteria:

  • Packaged for Linux

  • It must be a “Fat” package

  • Make sure you have a [application].ovc.kit file with any specific Omniverse Cloud settings alongside your primary [application].kit file. An example, ovc kit file can be found in the kit-app-template reference project.

  • Properly configured launcher.toml, description.toml and package.toml files.

In addition, have the application name, version, release and a suitable icon (described below) readily accessible for when creating the NVES request. Having this information clearly expressed in the request helps expedite things internally.

Place your launcher package zip file somewhere shareable with NVIDIA NVES

Understanding that clients have their unique, approved data-sharing protocols, we remain flexible rather than dictating a specific method. We are familiar with and adaptable to various mainstream sharing platforms, including Dropbox and Google Drive. The key is that your application package should be accessible via conventional means and should handle the typical size range of 3GB to 5GB. A convenient option we suggest is uploading it to your Omniverse Cloud Nucleus server.

Starting the Deployment Process

The process for deploying your custom application to Omniverse Cloud begins when you create a request via the NVES portal. The NVES portal is the entry point for all enterprise customers to begin engagement with the NVES team.

Help on using the Enterprise Support Portal

What if I don’t have access to the support portal?

Our customer’s have different internal policies in regards to who they allow to create support cases with the portal. If you don’t currently have access, you can request to be given access by the person in your company responsible for working with NVIDIA support. Otherwise, they or someone else they have given portal access to will have to do the following on your behalf.

Creating the initial deployment request via the NVIDIA support portal

When opening a case via the support portal, we will ask you to provide specific information to help guide the process and communicate clearly what you are hoping to accomplish.

  1. Login to the Enterprise Support Portal.

  2. Select “Support”.

  3. Then “Create Case”.
    1. Choose an appropriate subject (see table below)

    2. Enter the required information in the description field (see table below)

    3. Product Type enter "Cloud Services”

    4. Product Category enter “Omniverse Cloud”

    5. Entitlement - choose your Omniverse Cloud entitlement

    6. Fill out the other fields, as desired.

    7. Do not attach anything other than an application icon. Either a:
      • 128x128 resolution PNG

      • SVG file.

  4. Select “Submit”

Action

Subject

Description

Add Application

Add application - [App Name]

Name - [App Name]
Version - [Semantic App Version]
Stage - [n/a, alpha, beta or rc]
Stage #
Launcher package URL - [URL]

Add Application Version

Add version - [App Name]

Name - [App Name]
Version - [Semantic App Version]
Stage - [n/a, alpha, beta, rc ]
Stage #
Launcher package URL - [URL]

Remove application

Remove Application - [App Name]

Name - [App Name]
Remove container - [Yes/No]

Remove application version

Remove version - [App Name]

Name - [App Name]
Version - [Semantic App Version]
Stage - [n/a, alpha, beta, rc ]
Stage #
Remove container - [Yes/No]

Your request has now been submitted and will be routed to the Omniverse NVES team to begin the internal processes for deploying your custom application on Omniverse Cloud, which is further outlined below

What happens next?

Once your request has been submitted it goes through a number of internal steps, which are roughly outlined below. The NVES team will always be your primary point of contact and can provide updates as required. They can also update your request based upon certain milestones.

NVIDIA receives a request via the NVES Portal

Perform a malware scan on the launcher package

Build a container image from the extracted application package

Register the container image in a private NGC registry

Add the new application version to the application service

The Omniverse Cloud Launcher queries the application service

The application is now launchable

Note

Any failure which requires a new launcher package to be sent will result in having to restart the entire process.

Review & Initial Checks

After receiving your application request, we’ll inspect the details to verify the presence of all necessary information and a valid Omniverse Cloud entitlement. If any details are missing, we will reach out for the necessary information via the ongoing request.

Malware Scan

Our security team will conduct an in-house malware scan on your launcher package using the supplied URL. In case any threat is detected, we’ll work with you to assess whether it is a false positive. Continuous detections may lead to the case being closed after escalating the issue.

Container Image Creation & Validation

With security validation, we’ll extract your application and craft a unique container image for it. A preliminary validation test ensures that your application container image runs smoothly. Issues, if any, will be identified, addressed, and communicated.

Private NGC Registry

For your application’s security, we establish a private NGC registry, managed by the Omniverse Cloud team, where your application’s container images are registered.

Application Service Registration

Every Omniverse Cloud instance has an application service which tracks available applications and versions.

After creating the application container image, we integrate the details you provided, along with info from the launcher package, to register the application with the application service.

Subsequently, the Omniverse Cloud Web Launcher employs this service to ascertain which apps and versions to display. Once integrated, users can see and access your application via the Web Launcher.

Deployment Notification

Once deployed successfully, the NVES team will update your request with relevant details, including confirmation of the application name, version, and details about the container image.

This serves as your official notification of deployment. Post-validation of the deployment from your end, the case can be concluded. Should there be any deployment issues, notify us immediately.

3. Removing an Application or a Version

If you want to remove an application or a specific application version, we will follow the same steps as above, using the Enterprise Support Portal to create a case for the NVSE team.

In this case you simply need to provide the relevant information described below, when creating the Case ticket.

Action

Subject

Description

Remove application

Remove application - [App Name]

Name - [App Name]
Remove containers - [Yes/No]

Remove application version

Remove version - [App Name]

Name - [App Name]
Version - [Semantic App Version]
Stage - [n/a, alpha, beta, rc]
Stage #
Remove container - [Yes/No]

Note

Removing the containers means that the application would need to be completely redeployed. Keeping the containers, means we simply need to register them, which is a much simpler and faster process.

Refer to the Creating the initial deployment request via the NVIDIA support portal section above for the exact steps.