This folder contains an Azure IoT Operations (AIO) setup sample for an Arc-enabled Kubernetes cluster using Azure Workload Orchestration (Microsoft.Edge). Configure main.bicepparam and follow the steps below; you do not need to edit the Bicep source to deploy the sample.
Deploying main.bicep provisions the AIO infrastructure through Workload Orchestration's Cloud Target → Solution Template → Solution Deployment flow, with separate, ordered deployments for enablement and instance creation:
| Deployment | Purpose |
|---|---|
| Enablement | Prepares the Arc-connected cluster with the extensions required by AIO. |
| Instance | Creates the AIO Custom Location and instance on that cluster. |
-
Fork or push this repository to GitHub or Azure DevOps.
-
Complete the Pipelines Setup.
-
Connect a Kubernetes cluster to Azure Arc and enable the Custom Locations feature.
-
A storage account with hierarchical namespace enabled:
az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace true
-
A schema registry connected to the storage account:
az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT --resource-group $RESOURCE_GROUP -o tsv --query id)
-
An Azure Device Registry namespace:
az iot ops ns create -n myqsnamespace -g $RESOURCE_GROUP
-
Set
resourceGroup,templateFile, andparametersFileinworkload-orchestration.yaml:resourceGroup: "<your-resource-group>" templateFile: "./samples/aio/main.bicep" parametersFile: "./samples/aio/main.bicepparam"
-
Fill in
main.bicepparam: setschemaRegistryIdandadrNamespaceId. Each entry intargetshas three fields:name(the cloud target),resourceGroupName(the resource group containing the Arc cluster), andconfiguration(the existing ArcclusterName, desiredcustomLocationName, and desiredaioInstanceName). The deployment identity needs access to each target resource group. -
Open a PR to run WO Validate, then merge to
mainto run WO Sync Resources and deploy AIO.