Application & Profile service#
Before a containerized Kit App can be streamed, it must be registered with the Application & Profile service (APS).
Omniverse applications, application versions, and application profiles are managed using Kubernetes Custom Resource Definitions (CRDs) deployed to the cluster and used by the APS.
Kubernetes CRDs allow you to extend Kubernetes with your own custom resources. They are a way to define new resource types in addition to standard Kubernetes resources and this is a common method for managing complex applications or infrastructure that do not fit neatly into the existing Kubernetes object model.
The CRDs used by the APS describe what an application, application version and application profile look like. The benefit is that the state is completely managed by Kubernetes, so no additional configmaps, restarts, or external databases are required, and can be managed as any other resource in Kubernetes. An additional benefit is that this allows for the management of applications via CI/CD or by users with specific permissions to create them using standard RBAC, or similar permissions without necessarily having to make the API available.
Inspecting the CRDs#
Three CRDs are created as part of the deployment of the AP service.
applications.omniverse.nvidia.com
applicationversions.omniverse.nvidia.com
applicationprofiles.omniverse.nvidia.com
Each can be inspected using:
kubectl describe crd applications.omniverse.nvidia.com
The output resembles the following:
Name: applications.omniverse.nvidia.com
Namespace:
Labels: <none>
Annotations: <none>
API Version: apiextensions.k8s.io/v1
Kind: CustomResourceDefinition
Metadata:
Creation Timestamp: 2024-04-10T11:10:06Z
Generation: 1
Resource Version: 1013264
UID: 73569789-fdf6-4eed-b69b-1638a802f97b
Spec:
Conversion:
Strategy: None
Group: omniverse.nvidia.com
Names:
Kind: Application
List Kind: ApplicationList
Plural: applications
Singular: application
Scope: Namespaced
Versions:
Name: v1
Schema:
openAPIV3Schema:
Properties:
Spec:
Properties:
Description:
Type: string
Name:
Type: string
Type: object
Type: object
Served: true
Storage: true
Status:
Accepted Names:
Kind: Application
List Kind: ApplicationList
Plural: applications
Singular: application
Conditions:
Last Transition Time: 2024-04-10T11:10:06Z
Message: no conflicts found
Reason: NoConflicts
Status: True
Type: NamesAccepted
Last Transition Time: 2024-04-10T11:10:06Z
Message: the initial names have been accepted
Reason: InitialNamesAccepted
Status: True
Type: Established
Stored Versions:
v1
Events: <none>
The spec
section defines what is needed for an Application
to be registered.
The ApplicationVersion
and ApplicationProfile
CRDs have equivalent sections.
The following section explains creating these applications, versions, and profiles.