If you do not have an Azure Subscription, you can sign up for a free Azure account and create an Azure Subscription.
To deploy this solution successfully, your Azure account must have the following permissions on the targeted Azure Subscription:
- Microsoft.Authorization/roleAssignments/write permissions at the subscription scope. (typically included if you have Role Based Access Control Administrator, User Access Administrator, or Owner role)
- Microsoft.Resources/deployments/write permissions at the subscription scope.
For more details on Azure account setup, see the Azure account setup guide.
- VI Arc Extension Approval - Submit your subscription for approval via this form before deploying
- GPU Quota - Sufficient GPU quota for your chosen VM sizes in your target region. See the quota check guide for details
- Required CLI Tools:
- Azure CLI (v2.x+)
- kubectl
- Helm 3
- Azure Developer CLI (azd) (v1.18.0+)
Check the Azure Products by Region page and select a region where the following services are available:
- Azure Kubernetes Service (AKS)
- Azure Arc
- Azure Video Indexer
- Azure AI Foundry (if deploying AI agents)
- GPU-enabled VM SKUs (e.g., NCasv3, NCadsA100v4 families)
If you encounter issues running PowerShell scripts due to execution policy, you can temporarily adjust it:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy BypassPick from the options below to see step-by-step instructions for GitHub Codespaces, VS Code Dev Containers, or local environments.
Deploy in GitHub Codespaces
You can run this template virtually by using GitHub Codespaces. The button will open a web-based VS Code instance in your browser:
-
Open the template (this may take several minutes):
-
Open a terminal window
-
Continue with the deploying steps
Deploy in VS Code Dev Containers
A related option is VS Code Dev Containers, which will open the project in your local VS Code using the Dev Containers extension:
-
Start Docker Desktop (install it if not already installed: Docker Desktop)
-
Open the project:
-
In the VS Code window that opens, once the project files show up (this may take several minutes), open a terminal window
-
Continue with the deploying steps
Deploy in your local environment
If you're not using one of the above options, then you'll need to:
-
Make sure the following tools are installed:
- Azure Developer CLI (azd) (v1.18.0+)
- Azure CLI (v2.x+)
- kubectl
- Helm 3
- Git
- [Windows Only] PowerShell - Make sure
pwsh.exeis added toPATH
-
Clone the repository:
azd init -t Video-Agents-Foundry-Solution
-
Open the project folder in your terminal or editor
-
Continue with the deploying steps
Configurable Deployment Settings
When you start a deployment, most parameters will have default values. You can change the following settings:
| Setting | Description | Default |
|---|---|---|
| Azure Region | Select a region with GPU quota | eastus2 |
| Kubernetes Version | AKS cluster Kubernetes version | 1.32 |
| System VM Size | System node pool VM size | Standard_D4a_v4 |
| Workload VM Size | Workload node pool VM size | Standard_D32a_v4 |
| DeepStream GPU VM Size | DeepStream GPU node pool | Standard_NC24ads_A100_v4 |
| Inference GPU VM Size | Inference GPU node pool | Standard_NC24ads_A100_v4 |
| Create Foundry Project | Deploy AI Foundry project | true |
| AI Model Name | OpenAI model for agents | gpt-5.2 |
| AI Model Version | Model version | 2025-12-11 |
For a detailed description of customizable fields, view the deployment customization guide.
Once you've opened the project in Codespaces, Dev Containers, or locally, deploy to Azure:
-
(Optional) Customize your deployment settings. See the deployment customization guide for details.
-
Run the deployment:
azd up
-
You will be prompted to:
- Provide an
azdenvironment name (e.g., "vi-agents-solution") - Select a subscription from your Azure account
- Select a location with sufficient GPU quota
- Choose VM sizes for each AKS node pool (interactive menu with live quota checking)
Note: The
preprovisionhook validates prerequisites including Azure CLI authentication, required CLI tools, Azure resource provider registration, and GPU quota availability. - Provide an
-
The deployment process will:
- Provision Azure resources via Bicep (AKS cluster, Video Indexer account, storage, managed identity, and optionally AI Foundry)
- Connect AKS to Azure Arc
- Install NVIDIA GPU Operator via Helm
- Deploy Video Indexer Arc Extension
- Run a health check dashboard showing pod status across namespaces
This process typically takes 15-25 minutes. After
azd upcompletes, allow an additional 20-35 minutes for GPU drivers and VI extension pods to fully initialize (45-60 minutes total). -
After deployment completes, the health dashboard will show the status of all components:
gpu-operatornamespace (NVIDIA GPU Operator)video-indexernamespace (VI Arc Extension)app-routing-systemnamespaceazure-arcnamespacecert-managernamespace
-
View information about your deployment:
azd show
When you no longer need the deployed resources, clean up by running:
azd downThis will delete the resource group and all associated Azure resources.
This repo includes a GitHub Actions workflow (.github/workflows/azure-dev.yml) for automated deployments. To set it up:
- Configure OpenID Connect (OIDC) federated credentials for your Azure service principal
- Set the required GitHub repository variables (see the workflow file for the full list)
- Set the
AZD_INITIAL_ENVIRONMENT_CONFIGsecret
The workflow triggers on push to main or manual dispatch, and runs azd provision followed by azd deploy.
- Review the troubleshooting guide if you encounter issues
- Check deployment customization for advanced configuration
- Explore observability features for monitoring and tracing