Appendix - Sim2Deploy Azure Cloud Quickstart

Deployment Config File Samples

config.yml

# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: LicenseRef-NvidiaProprietary
#
# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
# property and proprietary rights in and to this material, related
# documentation and any modifications thereto. Any use, reproduction,
# disclosure or distribution of this material and related documentation
# without an express license agreement from NVIDIA CORPORATION or
# its affiliates is strictly prohibited.

name: 'my-deployment-name'
spec:
  infra:
    csp: 'azure'
    backend:
      tenant_id: '########'
      subscription_id: '########'
      client_id: '########'
      client_secret: '########'
      resource_group_name: '########'
      storage_account_name: '########'
      container_name: '########'
    provider:
      tenant_id: '########'
      subscription_id: '########'
      client_id: '########'
      client_secret: '########'
    configs:
      access_cidrs:
      - 'my-org-ip-cidr'
      location: 'West US 2'
      coturn_settings:
        password: '########'    ## Password for Turn Server    
      isaacsim:
        create_isaac: true  ###Set to false if isaacsim is not required
        size: 'Standard_NV72ads_A10_v5'
      clusters:
        app:
          private_instance: true
          master:
            size: 'Standard_NC96ads_A100_v4'
            labels: {}
            taints: []
          nodes: {}
          ports:
            app:
              port: 31080
              path: /api/v2.1/analytics/livez  
            grafana:
              port: 32300
              path: login
            prometheus:
              port: 30090
              path: graph
            kibana:
              port: 31560
              path: /api/status                
          features:
            cns: true
            platform: true
            app: true
    secrets:
      ssh_public_key: 'ssh-rsa PUBLIC KEY BITS comment'
      ssh_private_key: |-
        -----BEGIN RSA PRIVATE KEY-----
        PEM KEY BITS
        -----END RSA PRIVATE KEY-----
  platform:
    configs:
      grafana_port: 'grafana'
      prometheus_port: 'prometheus'
    secrets:
      ngc_cli_api_key: 'my-ngc-key'
  app:
    configs:
      app_port: 'app'

      ### Values files for app chart(supported values are based on k8s-values shipped MTMC, RTLS, MTMC-RTLS-SDG, people-analytics).
      helm_values_dir:
        source_directory: "{{ playbook_dir }}/k8s-helm-values/MTMC-RTLS-SDG"      

      ### IsaacSim Configs
      isaacsim_configs:
        isaac_image: 'nvcr.io/nvidia/isaac-sim:4.0.0'

    secrets:
      ngc_cli_api_key: 'my-ngc-key' 

    ### App Configs for helm deployment
    helm_configs:

      ### Helm Chart NGC URLs for deploying different app charts
      app_chart_url: https://helm.ngc.nvidia.com/nfgnkvuikvjm/mdx-v2-0
      nvstreamer_app_chart_url: https://helm.ngc.nvidia.com/rxczgrvsg8nx/vst-1-0
      vst_app_chart_url: https://helm.ngc.nvidia.com/rxczgrvsg8nx/vst-1-0
      wdm_ds_app_chart_url: https://helm.ngc.nvidia.com/nfgnkvuikvjm/mdx-v2-0

      ###App helm chart versions for deploying different app charts
      app_chart_version: 1.0.37
      nvstreamer_app_chart_version: 0.2.32
      vst_app_chart_version: 1.0.30
      wdm_ds_app_chart_version: 0.0.33

      ### Chart Ref can be any app chart ref name(eg: mdx-people-analytics or mdx-rtls-app) for deploying different app charts
      app_chart_ref: nv-mdx/mdx-mtmc-app
        
      ### Deploy name can be any app name(eg: mdx-people-analytics or mdx-rtls-app) for deploying different app charts
      app_deploy_name: mdx-mtmc-app

      #### Helm K8s Values file path for defined charts
      app_values: "/mnt/helm-values/MTMC-RTLS-SDG/mtmc-rtls-app-override-values.yaml"
      nvstreamer_app_values: "/mnt/helm-values/MTMC-RTLS-SDG/nvstreamer-with-ingress-values.yaml"
      vst_app_values: "/mnt/helm-values/MTMC-RTLS-SDG/vst-app-with-ingress-values.yaml"
      wdm_ds_app_values: "/mnt/helm-values/MTMC-RTLS-SDG/wdm-deepstream-mtmc-rtls-values.yaml"

Parameter Explanation

  • Explanation of each and every entry of config.yml file are explained in below table:

    RTLS and SDG Deploy Template for Azure CSP

    Parameter name

    Type

    Optional

    Description

    name

    string

    A unique name to identify the project. This is important to tear down resources later.

    spec

    map

    Configuration specifications for Azure Subscription for connecting to backend for state management and infra provisioning.

    spec > infra

    map

    Configuration specifications for infrastructure provisioning and maintaing state in azure csp.

    spec > infra > backend

    map

    Backend configuration.

    spec > infra > backend > tenant_id

    string

    Azure tenant id of the state storage account.

    spec > infra > backend > subscription_id

    string

    Azure subscription id of the state storage account.

    spec > infra > backend > client_id

    string

    Azure client id of the app registration with access to subscription.

    spec > infra > backend > client_secret

    string

    Azure client secret of the app registration with access to subscription for authentication.

    spec > infra > backend > resource_group_name

    string

    Azure resource group name of the state storage account.

    spec > infra > backend > storage_account_name

    string

    Azure storage account name of the state storage account.

    spec > infra > backend > container_name

    string

    Azure storage account container name of the container for state storage in the state storage account.

    spec > infra > provider

    map

    Provider configuration.

    spec > infra > provider > tenant_id

    string

    Azure tenant id where application will be deployed.

    spec > infra > provider > subscription_id

    string

    Azure subscription id where application will be deployed.

    spec > infra > provider > client_id

    string

    Azure client id of the app registration with access to subscription.

    spec > infra > provider > client_secret

    string

    Azure client secret of the app registration with access to subscription for authentication.

    spec > infra > configs

    map

    Infra related configuration in order to provision user defined infra.

    spec > infra > configs > access_cidrs

    array

    CIDR ranges from where VM ssh access and application UI and APP will be able to access. So as to limit the access to corp vpn network and not open to internet.

    spec > infra > configs > location

    string

    Azure region in which resources will be created.

    spec > infra > configs > coturn_settings

    map

    COTURN instance configs used for configuring turn server.

    spec > infra > configs > coturn_settings > password

    string

    Password used to connect to COTURN server.

    spec > infra > configs > isaacsim

    map

    IsaacSim Infra related configs like VM size.

    spec > infra > configs > isaacsim > create_isaac

    string

    Flag to control enabling deployment of isaacsim app. Defaults to true for sim2deploy.

    spec > infra > configs > isaacsim > size

    string

    VM type to provision IsaacSim App vm. Defaults to Nvidia 2x A10 GPU type Standard_NV72ads_A10_v5.

    spec > secrets

    map

    Secrets required to manage infra configs.

    spec > secrets > ssh_public_key

    string

    Content of the public key of the ssh key-pair used for instance access.

    spec > secrets > ssh_private_key

    string

    Content of the private key of the ssh key-pair used for instance access. Please make sure spacing is followed while pasting contents of private key.

    spec > platform

    map

    Configuration specifications for platform to download app related resources.

    spec > platform > secrets

    map

    Secrets required to manage platform configs to run application on provisioned infra.

    spec > platform > secrets > ngc_cli_api_key

    string

    NGC API key with access to deployment artifacts.

    spec > app

    map

    Configuration specifications for managing app to be configured on the provisioned infra.

    spec > app > secrets

    map

    Secrets required to manage app configs like downloading app based artifacts.

    spec > app > secrets > ngc_cli_api_key

    string

    NGC API key with access to deployment artifacts.

    spec > app > isaacsim_configs

    map

    Configs required to deploy isaacsim application.

    spec > app > isaacsim_configs > isaac_image

    string

    Docker image for IsaacSim application to run docker app on IsaacSim VM. Defaults to image tag 4.0.0.

    spec > app > helm_configs

    map

    yes

    Configs required to deploy MDX app for k8s setup. It helps to user provide charts for different apps and override values to be used while app deployment using deploy script.

Sample Output for RTLS + SDG Workflow deploy Script

===========================================================================================
access_urls:
  app:
    app: http://<App-gw-public-ip>:31080/ui/rtls/
    grafana: http://<App-gw-public-ip>:32300/login
    kibana: http://<App-gw-public-ip>:31560/app/kibana
    prometheus: http://<App-gw-public-ip>:30090/graph
sdg_details:
  sdg_info: |
          ************************************************************
          * Isaac Sim is deployed at <IsaacSim-VM-Public-IP> *
          ************************************************************

          * To connect to Isaac Sim via SSH:
          ssh -i <key-path/ssh.pem> -o StrictHostKeyChecking=no ubuntu@<IsaacSim-VM-Public-IP>

          * To connect to Isaac Sim via noVNC:
          1. Open http://<IsaacSim-VM-Public-IP>:6080/vnc.html?host=<IsaacSim-VM-Public-IP>&port=6080 in your browser.
          2. Click "Connect" and use password "<generated-pass>"

          * To connect to Isaac Sim via NoMachine:
          0. Download NoMachine client at https://www.nomachine.com/download, install, and launch it.
          1. Click "Add" button.
          2. Enter Host: "<IsaacSim-VM-Public-IP>".
          3. In "Configuration" > "Use key-based authentication with a key you provide",
             select file "<key-path/ssh.pem>".
          4. Click "Connect" button.
          5. Enter "ubuntu" as the username when prompted.
ssh_command:
  app:
    bastion: ssh -i <key-path/ssh.pem> -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ubuntu@<Basion-VM-Public-IP>
    coturn: ssh -i <key-path/ssh.pem> -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ubuntu@<Coturn-VM-Public-IP>
    isaacsim: ssh -i <key-path/ssh.pem> -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ubuntu@<IsaacSim-VM-Public-IP>
    master: ssh -i <key-path/ssh.pem>-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ProxyCommand="ssh -i <key-path/ssh.pem> -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p ubuntu@<RTLS-VM-Public-IP>" ubuntu@<RTLS-VM-Private-IP>

===========================================================================================    

Tear Down Deployment

To tear down all the infrastructure along with application that we created through above scripts,

run ./envbuild.sh uninstall -c all command for RTLS + SDG app infra teardown.

Important

Both install and uninstall Options needs to be run with care. We recommend dry-run with flag -d option to see the changes before install.