This Helm chart is designed for the deployment of the Omniverse Application service within Kubernetes environments. Serving as a core component of the Omniverse streaming application stack, this service facilitates the management and deployment of streaming applications.
The nv.ov.svc.applications
service within the Omniverse ecosystem provides a comprehensive solution for managing streaming applications.
By leveraging this service, users can engage with the Omniverse platform more effectively, managing applications and their versions with ease.
Application Management: Enables listing all registered applications and retrieving comprehensive details about each one, facilitating better organization and control within the streaming application stack.
Version Control: Allows for detailed management of application versions, including listing available versions and retrieving specific version information, which aids in maintaining the lifecycle of streaming applications.
Profile Management: Supports defining and managing runtime profiles for different application versions, which optimizes the performance and resource utilization of streaming applications under various conditions.
This Helm chart includes all necessary components for deploying the Omniverse Application service, ensuring a seamless integration into your Kubernetes environment.
The Helm chart introduces several Custom Resource Definitions (CRDs) to facilitate advanced application management within Kubernetes. These CRDs enable the definition of applications, their versions, and deployment profiles in a structured and Kubernetes-native manner.
The Application
CRD represents a high-level definition of an application.
Fields:
name
: The human-readable name of the application.description
: A brief description of the application's purpose and functionality.Purpose:
This CRD abstracts the core identity and metadata of an application, separating it from operational details, which are managed by the ApplicationVersion
and ApplicationProfile
CRDs. It centralizes the management of application metadata.
The ApplicationVersion
CRD defines specific versions of an application, detailing the associated Helm chart and container image.
Fields:
helm_chart
: Specifies the Helm chart used for deploying this application version.helm_chart_version
: The version of the Helm chart.container
: The container image used for this version.container_version
: The version of the container.Labels (mandatory):
applicationName
: Identifies the application to which this version belongs.version
: The version identifier of the application.Purpose:
The ApplicationVersion
CRD enables precise management of application versions, allowing for the coexistence and independent management of multiple versions. It also facilitates specific configurations for each version, enabling detailed and controlled deployment strategies.
The ApplicationProfile
CRD specifies deployment profiles for applications, defining the deployment configurations for application versions.
Fields:
supportedApplications
: Lists the applications and their specific versions that this profile supports, with wildcard support for version flexibility.chart_mappings
: Defines the mappings from ApplicationVersion
fields to Helm chart values, allowing dynamic configuration based on the application version.chart_values
: Specifies the actual values used when deploying the Helm chart, serving as a template for deployment configurations.Purpose:
The ApplicationProfile
CRD enables the definition of complex deployment scenarios, allowing for customizable and dynamic deployments based on application requirements. It acts as a bridge between the details of application versions and the Helm chart deployment process, facilitating a high degree of customization in application deployments.
To view values via helm use helm show values
NOTE: There are global values.
Key | Type | Default | Description |
---|---|---|---|
applications.affinity | object | {} |
Affinity for pod assignment. https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity |
applications.applications | object | {} |
Applications to make available as part of this service NOTE: The applications and applicationversions are custom CRDs that can also be created after this chart has been deployed. |
applications.env | object | {} |
Env for the container of the service. https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#envvar-v1-core |
applications.fullnameOverride | string | "applications" |
Full override .fullname template |
applications.image.pullPolicy | string | "Always" |
Image pull policy. |
applications.image.repository | string | "nvcr.io/nvidia/omniverse/kit-appstreaming-applications" |
Image repository. |
applications.image.tag | string | "1.8.1" |
Image tag. |
applications.imagePullSecrets | list | [] |
Image Pull Secrets |
applications.ingress.enabled | bool | true |
Enables the creation of Ingress resource. |
applications.ingress.path | string | "/" |
Path for ingress. |
applications.ingress.pathType | string | "Prefix" |
Path Type for ingress. |
applications.livenessProbe | object | {"httpGet":{"path":"/health","port":"http"},"initialDelaySeconds":5,"periodSeconds":3} |
LivenessProbe for the service. NOTE: service must have an endpoint as specified by the "path" https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#probe-v1-core |
applications.monitoring.enabled | bool | false |
Enables the creation of ServiceMonitor resource. |
applications.monitoring.prometheusNamespace | string | "monitoring" |
Prometheus namespace. |
applications.name | string | "applications" |
|
applications.nameOverride | string | "" |
Partially override .fullname template (maintains the release name) |
applications.nodeSelector | object | {} |
Node labels for pod assignment. https://kubernetes.io/docs/user-guide/node-selection/ |
applications.podAnnotations | object | {} |
Pod annotations. https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ |
applications.podSecurityContext | object | {"runAsNonRoot":false} |
Security Context. https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod |
applications.profiles | object | {} |
Profiles to make available as part of this service NOTE: applicationprofiles are custom CRDs that can also be created after this chart has been deployed. |
applications.readinessProbe | object | {"httpGet":{"path":"/ready","port":"http"},"initialDelaySeconds":5,"periodSeconds":3} |
readinessProbe for the service. NOTE: service must have an endpoint as specified by the "path" https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#probe-v1-core |
applications.replicaCount | int | 1 |
Number of replicas. |
applications.resources | object | {"limits":{"cpu":"500m","ephemeral-storage":"2Gi","memory":"512Mi"},"requests":{"cpu":"100m","ephemeral-storage":"1Gi","memory":"256Mi"}} |
Container resource requests and limits. https://kubernetes.io/docs/user-guide/compute-resources/ |
applications.revisionHistoryLimit | int | 5 |
|
applications.securityContext | object | {} |
Security Context. https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod |
applications.service.containerPort | int | 8080 |
Container port. |
applications.service.name | string | "applications" |
Name of the service. |
applications.service.port | int | 80 |
Service port. |
applications.service.portName | string | "http" |
Port name. |
applications.service.resolverContainerPort | int | 8081 |
Container port for resolver container |
applications.service.resolverName | string | "resolver" |
Name of the service for the resolver container |
applications.service.type | string | "ClusterIP" |
Kubernetes service type. |
applications.serviceConfig | object | {"app_store_args":{"api_version":"v1","namespace":""},"app_store_cls":"nv.ov.svc.applications.store.crd.CRDApplicationStore","logging":{"level":"INFO","production_mode":true},"metrics":{"collector_url":"","enable_metrics_middleware":true,"export_interval_s":15,"export_metrics_to_collector":false,"export_metrics_to_console":false,"secure":false},"prefix_url":"cfg/apps","root_path":""} |
Configuration specific to this service. |
applications.serviceConfig.app_store_args | object | {"api_version":"v1","namespace":""} |
App store arguments |
applications.serviceConfig.app_store_cls | string | "nv.ov.svc.applications.store.crd.CRDApplicationStore" |
App store class |
applications.serviceConfig.logging.level | string | "INFO" |
Log level for the application (valid levels; INFO, DEBUG, WARN, ERROR) |
applications.serviceConfig.metrics | object | {"collector_url":"","enable_metrics_middleware":true,"export_interval_s":15,"export_metrics_to_collector":false,"export_metrics_to_console":false,"secure":false} |
Metrics related settings. |
applications.serviceConfig.prefix_url | string | "cfg/apps" |
URL prefix for the service. |
applications.serviceConfig.root_path | string | "" |
Root Path for the application. NOTE: useful when behind a proxy. https://fastapi.tiangolo.com/advanced/behind-a-proxy/ |
applications.startupProbe | object | {"httpGet":{"path":"/startup","port":"http"},"initialDelaySeconds":5,"periodSeconds":3} |
startupProbe for the service. NOTE: service must have an endpoint as specified by the "path" https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#probe-v1-core |
applications.tolerations | list | [] |
Tolerations for pod assignment. https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ |
global.imagePullSecrets | list | [] |
Global image pull secrets used within the services. |
global.ingress.annotations | object | {"kubernetes.io/ingress.class":"nginx"} |
Global Ingress annotations. |
global.ingress.host | string | "" |
Global Ingress host. |
global.ingress.paths | list | [] |
Global Ingress paths. |
global.ingress.tls | list | [] |
Global Ingress tls. |
global.transportHost | string | "0.0.0.0" |
Specify the services transport host. For IPv6 use "::". |
NVIDIA Omniverse is governed by the NVIDIA Agreements | Enterprise Software | NVIDIA Software License Agreement and NVIDIA Agreements | Enterprise Software | Product Specific Terms for Omniverse.
By downloading or using NVIDIA Omniverse, you agree to the NVIDIA Omniverse terms.