NGC Catalog
CLASSIC
Welcome Guest
Helm Charts
Media Gateway Next Helm Chart

Media Gateway Next Helm Chart

For versions and more information, please view on a desktop device.
Logo for Media Gateway Next Helm Chart
Description
This is a Helm chart package to manage Media Gateway Next deployment on your Kubernetes cluster.
Publisher
NVIDIA
Latest Version
0.1.5
Compressed Size
18.04 KB
Modified
December 11, 2024

Media Gateway Next Helm Chart

Basic Introduction

This is a Helm chart package to manage Media Gateway Next deployment on your Kubernetes cluster.

Prerequisites

  • Rivermax license

    • Request a developer license at Rivermax Download
    • Store the license file in a Secret:
      kubectl create secret generic rivermax-license --from-file=rivermax.lic -n <your-namespace>
      
      where:
      • <your-namespace> is the Kubernetes namespace in which you are going to deploy applications, often just default when you're getting started
    • The Helm chart creates a volume from this Secret which is mounted into the container at /opt/mellanox/rivermax
  • Image pull secret

    • Create a secret to pull images from the NGC registry in the same namespace as the pod that uses it:
      kubectl create secret docker-registry <secret-name> --docker-server=nvcr.io '--docker-username=$oauthtoken' --docker-password=<API-KEY> --docker-email=<your-email> -n <your-namespace>
      
      where:
      • <secret-name> is a short name like alice-ngc-secret to be used on your local system when deploying applications
      • <API-KEY> is your NGC API Key
      • <your-email> is the e-mail address you used to sign up for NGC
      • <your-namespace> is the Kubernetes namespace in which you are going to deploy applications, often just default when you're getting started

Installation

Using NGC CLI and NGC Web UI

Please see the NGC Helm Charts documentation for general guidance.

Using Helm Dashboard

This Helm chart can be installed on your Kubernetes cluster using the Helm Dashboard UI once the Helm Dashboard Helm Chart is installed.

Using Helm

  1. Login to the NGC registry

    helm registry login nvcr.io
    
  2. Add repo on your local system

    helm repo add <your-repo-name> https://helm.ngc.nvidia.com/nvidia/holoscan-for-media/ '--username=$oauthtoken' --password=<API-KEY>
    

    where:

    • <your-repo-name> is a short name like holoscan-for-media to be used on your local system to indicate the chart repository on NGC specified by the URL
    • <API-KEY> is your NGC API Key
  3. Update the repo or fetch particular chart

    helm repo update
    

    or

    helm pull <your-repo-name>/nvds-nmos-bin
    

    where:

    • <your-repo-name> is the short name you used in the helm repo add command above
  4. Now you can see all the charts available

    helm search repo
    
  5. You are ready to install Media Gateway Next using its Helm chart

    Install using below command if the image pull secret was created beforehand as mentioned in prerequisites

    helm install --set imagePullSecrets[0].name=<secret-name>,<...more key=value overrides...> <release-name> <your-repo-name>/nvds-nmos-bin
    

    else

    helm install --set imageCredentials.password=<API-KEY>,<...more key=value overrides...> <release-name> <your-repo-name>/nvds-nmos-bin
    

    where:

    • <secret-name> is the short name you used in the kubectl create secret command above
    • <API-KEY> is your NGC API Key
    • <...more key=value overrides...> are shown in the Helm chart's values.yaml file
    • <release-name> is a short name, like alice-nvds-nmos-bin-1, which should be unique on your local system, to indicate this particular installation of this application
    • <your-repo-name> is the short name you used in the helm repo add command above
  6. After installation you can check the status

    kubectl get all -o wide
    
  7. Once each pod is running its pipeline is started

    If the pipeline includes nvdsnmosbin, an NMOS device is created.

    Install the NMOS Registry and NMOS Controller to interact with NMOS devices.

  8. Other commands to manage the installed application

    helm status <release-name>
    helm get all <release-name>
    helm uninstall <release-name>
    

    where:

    • <release-name> is the short name you used in the helm install command above

Defining Pipelines in Helm Charts

Media Gateway Next is built on DeepStream. It provides NMOS registration and control of ST 2110 sinks and sources in a flexible GStreamer pipeline passed to the container.

Sample pipeline for a videotestsrc with corresponding SDP file for the sink, all defined in values.yaml

  • GST_DEBUG can be used to set the log level for GStreamer and elements/plugins for nvdsnmosbin

  • description is the actual pipeline that is appended to gst-launch-1.0. Apart from the pipeline we can define some additional properties of nvdsudpsink and/or nvdsudpsrc in the manner shown below.

    description: videotestsrc pattern=smpte100 is-live=true ! video/x-raw,width={{ .Values.width }},height={{ .Values.height }},format=UYVP,framerate={{ .Values.framerate }}/1 ! nvdsnmosbin dump-graphviz=true name=sender hostname="simple-video.local" sink_0::nvdsudpsink-desc="nvdsudpsink payload-size=1220 packets-per-line=4 internal-thread-core=0 render-thread-core=1 ptp-src=''" sink_0::sdp="file:///sdps/video"
    

    The rtp-caps allow simple control over the SDP media parameters. Alternatively, SDP files can be specified directly as above. The SDP files used in the pipeline are defined as below.

    sdps:
      video: |
          v=0
          o=- 1443716955 1443716955 IN IP4 0.0.0.0
          s=Static-color-bar {{ .Values.height }}p{{ .Values.framerate }}
          t=0 0
          m=video 50004 RTP/AVP 96
          c=IN IP4 233.252.0.1/64
          a=source-filter: incl IN IP4 233.252.0.1 0.0.0.0
          a=rtpmap:96 raw/90000
          a=fmtp:96 sampling=YCbCr-4:2:2; width={{ .Values.width }}; height={{ .Values.height }}; exactframerate={{ .Values.framerate }}; depth=10; TCS=SDR; colorimetry=BT709; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
          a=ts-refclk:ptp=IEEE1588-2008:traceable
    

Security Considerations

The main container used by this Helm chart requires the following capabilities to run properly:

Capability Purpose Related Function
IPC_LOCK To enable locking memory, to allocate hugepages via mmap Rivermax
NET_RAW To use RAW sockets Rivermax
SYS_CHROOT To start avahi-daemon, for name resolution and service discovery NMOS
SYS_NICE To set process and thread affinity Rivermax