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#
Set up the NGC Organization, a Private Registry, and User Access (This is only required once.)
Review the information found here to develop, package, and containerize the application.
Perform 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 containerized custom Omniverse Kit application prepared using the following requirements:
Linux compatible (Ubuntu 22.04 or greater is required)
Omniverse Cloud PaaS targeted Omniverse Kit file
Omniverse Cloud PaaS container built upon Kit 105.1.x or Kit 106.x (106.4 or greater)
Omniverse Kit Application packaged into a .zip archive
To containerize Omniverse Kit applications, NVIDIA recommends the following:
A Linux-based system with
sudo
rights. You should use Virtual Machines since you can easily rebuild them as/if necessary. A basic configuration should be similar to the following:
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:
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 need access to an NGC organization and a private container registry. This process is covered and assisted by the NVIDIA Team during the OVC onboarding.
The Private Registry is also 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 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, add a Service Account as an admin to your Private Registry. This enables 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 sudo docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
To run Docker without requiring sudo, use these commands (additional information is available here):
sudo groupadd docker sudo usermod -aG docker $USER
Note
The group named Docker
may already exist.
Verify the NVIDIA Container Toolkit was properly installed by running the following command:
sudo docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
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
Install Node.JS and NPM using the following commands:
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 NodeJS and NPM versions by using the following commands:
node --version npm --version