Preparing & Prerequisites

../_images/ovc_banner.jpg

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

  1. Setup NGC Organization, Private Registry, and User Access (This is only required once.)

  2. Develop a custom Kit Application, including creating an Omniverse Cloud PaaS version of the application.

  3. Package the Application into a “Fat Package”, containing all the necessary resources and dependencies.

  4. Containerize the application.

  5. Local Validation of the application container.

  6. Push the container image to an NGC Private Registry.

  7. Create a case via the Enterprise Support Portal.

  8. 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:

  • 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