Edit

Share via


Production deployment guidelines

Security and scalability are a priority for deploying Azure IoT Operations. This article outlines guidelines that you should take into consideration when setting up Azure IoT Operations for production.

Decide whether you're deploying Azure IoT Operations to a single-node or multi-node cluster before considering the appropriate configuration. Many of the guidelines in this article apply regardless of the cluster type, but when there is a difference it's called out specifically.

Platform

Currently, K3s on Ubuntu 24.04 is the only generally available platform for deploying Azure IoT Operations in production.

Cluster setup

Ensure that your hardware setup is sufficient for your scenario and that you begin with a secure environment.

System configuration

Create an Arc-enabled K3s cluster that meets the system requirements.

Security

Consider the following measures to ensure your cluster setup is secure before deployment.

  • Validate images to ensure they're signed by Microsoft.
  • When doing TLS encryption, bring your own issuer and integrate with an enterprise PKI.
  • Use secrets for on-premises authentication.
  • Use user-assigned managed identities for cloud connections.
  • Keep your cluster and Azure IoT Operations deployment up to date with the latest patches and minor releases to get all available security and bug fixes.

Networking

If you use enterprise firewalls or proxies, add the Azure IoT Operations endpoints to your allowlist.

Observability

For production deployments, deploy observability resources on your cluster before deploying Azure IoT Operations. We also recommend setting up Prometheus alerts in Azure Monitor.

Deployment

For a production-ready deployment, include the following configurations during the Azure IoT Operations deployment.

MQTT broker

In the Azure portal deployment wizard, the broker resource is set up in the Configuration tab.

Schema registry and storage

In the Azure portal deployment wizard, the schema registry and its required storage account are set up in the Dependency management tab.

  • The storage account must have hierarchical namespace enabled.
  • The schema registry's managed identity must have contributor permissions for the storage account.
  • The storage account is only supported with public network access enabled.

For production deployments, scope the storage account's public network access to allow traffic only from trusted Azure services. For example:

  1. In the Azure portal, navigate to the storage account that your schema registry uses.
  2. Select Security + networking > Networking from the navigation menu.
  3. For the public network access setting, select Enabled from selected virtual networks and IP addresses.
  4. In the Exceptions section of the networking page, ensure that the Allow trusted Microsoft services to access this resource option is selected.
  5. Select Save to apply the changes.

For more information, see Configure Azure Storage firewalls and virtual networks > Grant access to trusted Azure services.

Fault tolerance

Multi-node clusters: Fault tolerance can be enabled in the Dependency management tab of the Azure portal deployment wizard. It's only supported on multi-node clusters, and is recommended for production deployment.

Secure settings

During deployment, you have the option to use test settings or secure settings. For production deployments, choose secure settings. If you're upgrading an existing test settings deployment for production, follow the steps in Enable secure settings.

Post-deployment

After deploying Azure IoT Operations, have the following configurations in place for a production scenario.

MQTT broker

After deployment, you can edit BrokerListener resources:

You can also edit BrokerAuthentication resources.

When you create a new resource, manage its authorization:

OPC UA broker

For connecting to assets at production, configure OPC UA authentication:

Data flows

When using data flows in production: