This is a Helm chart package to manage NMOS Controller deployment on your Kubernetes cluster.
NMOS Controller Helm Chart
Basic Introduction
This is a Helm chart package to manage NMOS Controller deployment on your Kubernetes cluster.
Prerequisites
- Image pull secret
- Create a secret to pull images from the NGC registry in the same namespace as the pod that uses it:
where:
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><secret-name>is a short name likealice-ngc-secretto 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 justdefaultwhen you're getting started
- Create a secret to pull images from the NGC registry in the same namespace as the pod that uses it:
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
-
Login to the NGC registry
helm registry login nvcr.io -
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 likeholoscan-for-mediato be used on your local system to indicate the chart repository on NGC specified by the URL<API-KEY>is your NGC API Key
-
Update the repo or fetch particular chart
helm repo updateor
helm pull <your-repo-name>/controller-uiwhere:
<your-repo-name>is the short name you used in thehelm repo addcommand above
-
Now you can see all the charts available
helm search repo -
You are ready to install NMOS Controller 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>,highSpeedNetwork.name=media-a-rx-net-static,highSpeedNetwork.ip=<ip-address>,uiConfig.NMOSRegistryBaseUrl="http://<registry-host>:<query-port>" <release-name> <your-repo-name>/controller-uielse
helm install --set imageCredentials.password=<API-KEY>,highSpeedNetwork.name=media-a-rx-net-static,highSpeedNetwork.ip=<ip-address>,uiConfig.NMOSRegistryBaseUrl="http://<registry-host>:<query-port>" <release-name> <your-repo-name>/controller-uiwhere:
<secret-name>is the short name you used in thekubectl create secretcommand above<API-KEY>is your NGC API Key<ip-address>is a static IP address on the high-speed secondary network of your cluster you want to allocate to this particular installation of this application<registry-host>and<query-port>are the IP address or fully-qualified domain name of your NMOS Registry and its Query API port (see the NMOS Registry Helm chart)<release-name>is a short name, likecontroller-ui, 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 thehelm repo addcommand above
-
After installation you can check the status
kubectl get all -o wide -
Once the pod is running you can use the NMOS Controller
Access it through the high-speed secondary network, at
http://<ip-address>/where:<ip-address>is the IP address specified in thehelm installcommand above
-
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 thehelm installcommand above
High Speed Network Configuration
Single Network Attachment (Default)
For a single high-speed network attachment, use the dictionary format:
highSpeedNetwork:
name: "media-a-rx-net"
Multiple Network Attachments
For multiple high-speed network attachments, use the list format:
highSpeedNetwork:
- name: "media-a-rx-net"
- name: "media-b-rx-net-static"
ip: "198.51.100.2/24"
For networks with static IP address management, the ip property is required as well as the network name.