Preparing & Prerequisites
Overview
Developing an application for Omniverse Cloud PaaS and preparing for its deployment is the same as any Kit-based application with some additional items to keep in mind which are explained below.
The documentation below describes the following:
Omniverse Cloud PaaS Platform Overview
Development Considerations for Omniverse Cloud PaaS
NGC Access and User Setup
Steps Required for Omniverse Cloud PaaS Development and Deployment
Setup NGC Organization, Private Registry, and User Access (This is only required once.)
Develop a custom Kit Application, including creating an Omniverse Cloud PaaS version of the application.
Package the Application into a “Fat Package”, containing all the necessary resources and dependencies.
Containerize the application.
Local Validation of the application container.
Push the container image to an NGC Private Registry.
Create a case via the Enterprise Support Portal.
Access and use the application in Omniverse Cloud PaaS.
Requirements for Omniverse Cloud PaaS Deployment
An active Omniverse Cloud PaaS entitlement
Access to the NVIDIA Enterprise Support Portal
A custom Omniverse Kit application:
Linux compatible
An Omniverse Cloud PaaS target Omniverse Kit file
Omniverse application fat packaged into a .zip archive
The base Kit 105.1.2 container which will be used to build upon.
Warning
Kit 106.x is currently not supported, but is coming soon!
To containerize Omniverse Kit applications:
Linux based system with
sudo
rights. We suggest using Virtual Machines as you can easily rebuild them as/if necessary with the following configuration:
12 vCPUs
32GB of RAM
250GB storage with ample free space, depending on the required dependencies for your application
Ubuntu 22.04 (or equivalent)
RTX GPU (a GPU is needed for local container validation step)
Installed requirements:
cURL
Docker
nvidia-container-toolkit
For local container validation purposes:
NodeJS and NPM installed
Access to your NGC Organization and Private Registry
Development Considerations for Omniverse Cloud PaaS
Linux Compatibility: Omniverse Cloud PaaS operates on a Linux-based computing environment. While Kit is versatile, supporting both Windows and Linux platforms, it is imperative that your application avoids Windows-exclusive functions, commands or Python modules, ensuring Linux compatibility.
Highly Secure: Omniverse Cloud PaaS prioritizes security. Network traffic in and out of your Omniverse Cloud PaaS instance is restricted. Connecting to external services may require collaboration between your IT, security teams, and the Omniverse Cloud PaaS team.
Python Libraries & Binaries: For security reasons, compiled binaries are not accepted, and only standard Python modules are accessible. Any non-standard Python modules, including popular OSS ones, should be packaged along with your application
Application Streaming: Omniverse Cloud PaaS applications are pixel-streamed to users, usually in a web browser. Input commands are relayed back to the application. Users interact only with the application window, without access to the base computing environment unless granted by your application.
Ephemeral Environment: The host environment is ephemeral; it is created when the stream begins and deleted once the stream concludes. Do not assume persistent local storage or that an end-user will operate on a consistent system.
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.
Setup an NGC Organization and Private Registry
NVIDIA NGC™ is the cloud platform offering fully managed services, and hosting a catalog of GPU-optimized AI software, SDKs, and Jupyter Notebooks that help accelerate AI and Omniverse workflows. Enterprises gain access to their cloud services through a dedicated virtual NGC organization where their services are enabled and user setup can be provided. Furthermore, required for Omniverse Cloud PaaS custom deployment, NGC Private Registries are used to securely share proprietary AI software within your organization. You can find additional information in the NGC User Guide.
To share custom application images with the NVIDIA Enterprise Support team, you will need access to an NGC organization and a private container registry. This process will be covered and assisted by the NVIDIA team during OVC onboarding. The Private Registry will also be created for you upon subscription start. Your administrator will receive a dedicated welcome email with detailed instructions on how to set up and proceed.
Once the setup is complete, you can access your NGC organization by logging in with this link.
Adding users and teams to your NGC Organization
After the initial setup, your administrator can configure additional user access and other organizational settings.
Additional information, including a complete walkthrough with screenshots, can be found in the NGC Private Registry User Guide.
Adding a Service Account for Application Publishing
For Omniverse Cloud PaaS custom application publishing, you must add a Service Account as an admin to your Private Registry. This allows NVIDIA to publish your containers to Omniverse Cloud PaaS.
Note
The details for this Service Account will be provided by the NVIDIA Account Team.
Installing Required Software for Containerizing the Omniverse Kit Application
Install cURL
Install cURL using the following command:
sudo apt install curl
Installing Docker
Docker can be installed using instructions from the Docker website. If using Ubuntu, Docker-CE can be set up using Docker’s official convenience script. The basic steps are copied here for your convenience, but additional information can be found in the following documentation:
Note
Enabling non-sudo support for Docker, described in the official Docker post-install guide, can ease development and is reflected in the instructions below. Appending “sudo” will otherwise be required, which may have other implications around file and folder permissions.
Install Docker using the following command:
sudo curl https://get.docker.com | sh && sudo systemctl --now enable docker
Verify Docker was properly installed by running the following Hello World sample:
sudo docker run hello-world
Install the NVIDIA Container Toolkit
Install the NVIDIA Container Toolkit using the following commands:
sudo curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o \ /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit
Configure Docker to use the NVIDIA runtime using the following commands:
sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
To run Docker without requiring sudo then use these steps: (Additional information is available here.)
sudo groupadd docker sudo usermod -aG docker $USER
Note
The group named docker
may already exist.
Create a separate directory for the build environment to start the build process. In this example, the directory is named dockerfile:
sudo mkdir /opt/dockerfile sudo chmod 777 -R /opt/dockerfile
Install Node.JS and NPM
To build the sample web application we will use for container local validation, and npm must be previously installed. The minimum version requirements are:
NodeJS > 18.0
NPM > 10.0
sudo apt install ca-certificates curl gnupg sudo mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg NODE_MAJOR=20 echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \ | sudo tee /etc/apt/sources.list.d/nodesource.list sudo apt update sudo apt install nodejs
Verify your Node.JS and NPM using the following commands:
$ node --version $ npm --version