You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
title: Deploy Azure IoT Operations to a Production Cluster
3
3
description: Use the Azure portal to deploy Azure IoT Operations to an Arc-enabled Kubernetes cluster.
4
4
author: SoniaLopezBravo
5
5
ms.author: sonialopez
@@ -10,11 +10,15 @@ ms.date: 04/08/2025
10
10
#CustomerIntent: As an OT professional, I want to deploy Azure IoT Operations to a Kubernetes cluster.
11
11
---
12
12
13
-
# Deploy Azure IoT Operations to an Arc-enabled Kubernetes cluster
13
+
# Deploy Azure IoT Operations to a production cluster
14
14
15
-
Learn how to deploy Azure IoT Operations to a Kubernetes cluster using the Azure portal.
15
+
Learn how to deploy Azure IoT Operations to a Kubernetes cluster with secure settings using the Azure portal.
16
16
17
-
In this article, we discuss Azure IoT Operations *deployments* and *instances*, which are two different concepts:
17
+
If you deployed a [test instance](./howto-deploy-iot-test-operations.md) of Azure IoT Operations to a cluster want to use the same cluster for production scenarios, follow the steps in [Enable secure settings on an existing Azure IoT Operations instance](./howto-enable-secure-settings.md).
18
+
19
+
## Before you begin
20
+
21
+
This article discusses Azure IoT Operations *deployments* and *instances*, which are two different concepts:
18
22
19
23
* An Azure IoT Operations *deployment* describes all of the components and resources that enable the Azure IoT Operations scenario. These components and resources include:
20
24
* An Azure IoT Operations instance
@@ -58,7 +62,9 @@ A cluster host:
58
62
59
63
The Azure portal deployment experience is a helper tool that generates a deployment command based on your resources and configuration. The final step is to run an Azure CLI command, so you still need the Azure CLI prerequisites described in the previous section.
60
64
61
-
1. In the [Azure portal](https://portal.azure.com), search for and select **Azure IoT Operations**.
65
+
1. Sign in to [Azure portal](https://portal.azure.com).
66
+
67
+
1. In the search box, search for and select **Azure IoT Operations**.
62
68
63
69
1. Select **Create**.
64
70
@@ -106,78 +112,9 @@ The Azure portal deployment experience is a helper tool that generates a deploym
106
112
107
113
1. Select **Apply** to confirm the schema registry configurations.
108
114
109
-
1. On the **Dependency management** tab, select either the **Test settings** or the **Secure settings** deployment option. If you aren't sure which is right for your scenario, review the guidance in [Deployment details > Choose your features](overview-deploy.md#choose-your-features).
110
-
111
-
Depending on your choice, follow the steps to either:
112
-
113
-
*[Deploy with test settings](#deploy-with-test-settings), or
114
-
*[Deploy with secure settings](#deploy-with-secure-settings)
115
-
116
-
### Deploy with test settings
117
-
118
-
Use these steps if you chose the **Test settings** option on the **Dependency management** tab.
119
-
120
-
1. Select **Next: Automation**.
121
-
122
-
1. One at a time, run each Azure CLI command on the **Automation** tab in a terminal:
123
-
124
-
1. Sign in to Azure CLI interactively with a browser even if you already signed in before. If you don't sign in interactively, you might get an error that says *Your device is required to be managed to access your resource*.
125
-
126
-
```azurecli
127
-
az login
128
-
```
129
-
130
-
1. Install the latest Azure IoT Operations CLI extension if you haven't already.
131
-
132
-
```azurecli
133
-
az extension add --upgrade --name azure-iot-ops
134
-
```
135
-
136
-
1. Create a schema registry which will be used by Azure IoT Operations components. Copy and run the provided [az iot ops schema registry create](/cli/azure/iot/ops/schema/registry#az-iot-ops-schema-registry-create) command.
137
-
138
-
If you chose to use an existing schema registry, this command isn't displayed on the **Automation** tab.
139
-
140
-
1. Prepare the cluster for Azure IoT Operations deployment. Copy and run the provided [az iot ops init](/cli/azure/iot/ops#az-iot-ops-init) command.
141
-
142
-
>[!TIP]
143
-
>The `init` command only needs to be run once per cluster. If you followed the optional prerequisite to set up your own certificate authority issuer, follow the steps in [Bring your own issuer](../secure-iot-ops/howto-manage-certificates.md#bring-your-own-issuer).
144
-
145
-
This command might take several minutes to complete. You can watch the progress in the deployment progress display in the terminal.
146
-
147
-
1. Deploy Azure IoT Operations. Copy and run the provided [az iot ops create](/cli/azure/iot/ops#az-iot-ops-create) command.
148
-
149
-
* If you want to use the preview connector configuration, add the following parameter to the `create` command:
115
+
1. On the **Dependency management** tab, select the **Secure settings** deployment option.
150
116
151
-
```bash
152
-
--feature connectors.settings.preview=Enabled
153
-
```
154
-
155
-
* If you followed the optional prerequisites to prepare your cluster for observability, add the following parameters to the `create` command:
156
-
157
-
| Parameter | Value | Description |
158
-
| --------- | ----- | ----------- |
159
-
| `--ops-config` | `observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT>` | Provide the OpenTelemetry (OTel) collector address you configured in the otel-collector-values.yaml file.<br><br>The sample values used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) are **fullnameOverride=aio-otel-collector** and **grpc.endpoint=4317**. |
160
-
| `--ops-config` | `observability.metrics.exportInternalSeconds=<CHECK_INTERVAL>` | Provide the **check_interval** value you configured in the otel-collector-values.yaml file.<br><br>The sample value used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) is **check_interval=60**. |
161
-
162
-
* If you followed the optional prerequisites to set up your own certificate authority issuer, add the `--trust-settings` parameters to the `create` command:
This command might take several minutes to complete. You can watch the progress in the deployment progress display in the terminal.
169
-
170
-
1. Once all of the Azure CLI commands complete successfully, you can close the **Install Azure IoT Operations** wizard.
171
-
172
-
Once the `create` command completes successfully, you have a working Azure IoT Operations instance running on your cluster. At this point, your instance is configured for most testing and evaluation scenarios.
173
-
174
-
If at any point in the future you want to prepare your instance for production scenarios, follow the steps in [Enable secure settings on an existing Azure IoT Operations instance](./howto-enable-secure-settings.md).
175
-
176
-
### Deploy with secure settings
177
-
178
-
Use these steps if you chose the **Secure settings** option on the **Dependency management** tab.
179
-
180
-
<!-- :::image type="content" source="./media/howto-deploy-iot-operations/deploy-dependency-management-1.png" alt-text="A screenshot that shows selecting secure settings on the third tab for deploying Azure IoT Operations from the portal."::: -->
117
+
:::image type="content" source="./media/howto-deploy-iot-operations/deploy-dependency-management-1.png" alt-text="A screenshot that shows selecting secure settings on the third tab for deploying Azure IoT Operations from the portal.":::
181
118
182
119
1. In the **Deployment options** section, provide the following information:
183
120
@@ -192,71 +129,77 @@ Use these steps if you chose the **Secure settings** option on the **Dependency
192
129
193
130
1. Select **Next: Automation**.
194
131
195
-
1. One at a time, run each Azure CLI command on the **Automation** tab in a terminal:
132
+
### Run Azure CLI commands
196
133
197
-
1. Sign in to Azure CLI interactively with a browser even if you already signed in before. If you don't sign in interactively, you might get an error that says *Your device is required to be managed to access your resource* when you continue to the next step to deploy Azure IoT Operations.
134
+
The final step in the Azure portal deployment experience is to run a set of Azure CLI commands to deploy Azure IoT Operations to your cluster. The commands are generated based on the information you provided in the previous steps.
198
135
199
-
```azurecli
200
-
az login
201
-
```
136
+
One at a time, run each Azure CLI command on the **Automation** tab in a terminal:
202
137
203
-
1. Install the latest Azure IoT Operations CLI extension.
138
+
1. Sign in to Azure CLI interactively with a browser even if you already signed in before. If you don't sign in interactively, you might get an error that says *Your device is required to be managed to access your resource* when you continue to the next step to deploy Azure IoT Operations.
204
139
205
-
```azurecli
206
-
az upgrade
207
-
az extension add --upgrade --name azure-iot-ops
208
-
```
140
+
```azurecli
141
+
az login
142
+
```
143
+
144
+
1. Install the latest Azure IoT Operations CLI extension.
145
+
146
+
```azurecli
147
+
az upgrade
148
+
az extension add --upgrade --name azure-iot-ops
149
+
```
150
+
151
+
1. Create a schema registry which will be used by Azure IoT Operations components. Copy and run the provided [az iot ops schema registry create](/cli/azure/iot/ops/schema/registry#az-iot-ops-schema-registry-create) command. If you chose to use an existing schema registry, this command isn't displayed on the **Automation** tab.
209
152
210
-
1. Create a schema registry which will be used by Azure IoT Operations components. Copy and run the provided [az iot ops schema registry create](/cli/azure/iot/ops/schema/registry#az-iot-ops-schema-registry-create) command.
153
+
> [!NOTE]
154
+
> This command requires that you have role assignment write permissions because it assigns a role to give schema registry access to the storage account. By default, the role is the built-in **Storage Blob Data Contributor** role, or you can create a custom role with restricted permissions to assign instead. For more information, see [az iot ops schema registry create](/cli/azure/iot/ops/schema/registry#az-iot-ops-schema-registry-create).
211
155
212
-
If you chose to use an existing schema registry, this command isn't displayed on the **Automation** tab.
156
+
1. To prepare the cluster for Azure IoT Operations deployment, copy and run the provided [az iot ops init](/cli/azure/iot/ops#az-iot-ops-init) command.
213
157
214
-
>[!NOTE]
215
-
>This command requires that you have role assignment write permissions because it assigns a role to give schema registry access to the storage account. By default, the role is the built-in **Storage Blob Data Contributor** role, or you can create a custom role with restricted permissions to assign instead. For more information, see [az iot ops schema registry create](/cli/azure/iot/ops/schema/registry#az-iot-ops-schema-registry-create).
158
+
> [!TIP]
159
+
> The `init`command only needs to be run once per cluster. If you're reusing a cluster that already had Azure IoT Operations version 0.8.0 deployed on it, you can skip this step.
216
160
217
-
1. Prepare the cluster for Azure IoT Operations deployment. Copy and run the provided [az iot ops init](/cli/azure/iot/ops#az-iot-ops-init) command.
161
+
This command might take several minutes to complete. You can watch the progress in the deployment progress display in the terminal.
218
162
219
-
>[!TIP]
220
-
>The `init` command only needs to be run once per cluster. If you're reusing a cluster that already had Azure IoT Operations version 0.8.0 deployed on it, you can skip this step.
163
+
1. Deploy Azure IoT Operations. Copy and run the provided [az iot ops create](/cli/azure/iot/ops#az-iot-ops-create) command.
221
164
222
-
This command might take several minutes to complete. You can watch the progress in the deployment progress display in the terminal.
165
+
* If you want to use the preview connector configuration, add the following parameter to the `create` command:
223
166
224
-
1. Deploy Azure IoT Operations. Copy and run the provided [az iot ops create](/cli/azure/iot/ops#az-iot-ops-create) command.
225
-
226
-
* If you want to use the preview connector configuration, add the following parameter to the `create` command:
167
+
```bash
168
+
--feature connectors.settings.preview=Enabled
169
+
```
170
+
171
+
* If you followed the optional prerequisites to prepare your cluster for observability, add the following optional parameters to the `create` command:
172
+
173
+
| Optional parameter | Value | Description |
174
+
| --------- | ----- | ----------- |
175
+
|`--ops-config`|`observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT>`| Provide the OpenTelemetry (OTel) collector address you configured in the otel-collector-values.yaml file.<br><br>The sample values used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) are **fullnameOverride=aio-otel-collector** and **grpc.endpoint=4317**. |
176
+
|`--ops-config`|`observability.metrics.exportInternalSeconds=<CHECK_INTERVAL>`| Provide the **check_interval** value you configured in the otel-collector-values.yaml file.<br><br>The sample value used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) is **check_interval=60**. |
227
177
228
-
```bash
229
-
--feature connectors.settings.preview=Enabled
230
-
```
178
+
This command might take several minutes to complete. You can watch the progress in the deployment progress display in the terminal.
231
179
232
-
* If you followed the optional prerequisites to prepare your cluster for observability, add the following optional parameters to the `create` command:
180
+
1. Enable secret sync forthe deployed Azure IoT Operations instance. Copy and run the provided [az iot ops secretsync enable](/cli/azure/iot/ops/secretsync#az-iot-ops-secretsync-enable) command.
233
181
234
-
| Optional parameter | Value | Description |
235
-
| --------- | ----- | ----------- |
236
-
| `--ops-config` | `observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT>` | Provide the OpenTelemetry (OTel) collector address you configured in the otel-collector-values.yaml file.<br><br>The sample values used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) are **fullnameOverride=aio-otel-collector** and **grpc.endpoint=4317**. |
237
-
| `--ops-config` | `observability.metrics.exportInternalSeconds=<CHECK_INTERVAL>` | Provide the **check_interval** value you configured in the otel-collector-values.yaml file.<br><br>The sample value used in [Configure observability](../configure-observability-monitoring/howto-configure-observability.md) is **check_interval=60**. |
182
+
This command:
238
183
239
-
This command might take several minutes to complete. You can watch the progress in the deployment progress display in the terminal.
184
+
* Creates a federated identity credential using the user-assigned managed identity.
185
+
* Adds a role assignment to the user-assigned managed identity for access to the Azure Key Vault.
186
+
* Adds a minimum secret provider class associated with the Azure IoT Operations instance.
240
187
241
-
1. Enable secret sync for the deployed Azure IoT Operations instance. Copy and run the provided [az iot ops secretsync enable](/cli/azure/iot/ops/secretsync#az-iot-ops-secretsync-enable) command.
242
-
243
-
This command:
188
+
1. Assign a user-assigned managed identity to the deployed Azure IoT Operations instance. Copy and run the provided [az iot ops identity assign](/cli/azure/iot/ops/identity#az-iot-ops-identity-assign) command. This command creates a federated identity credential using the OIDC issuer of the indicated connected cluster and the Azure IoT Operations service account.
244
189
245
-
* Creates a federated identity credential using the user-assigned managed identity.
246
-
* Adds a role assignment to the user-assigned managed identity for access to the Azure Key Vault.
247
-
* Adds a minimum secret provider class associated with the Azure IoT Operations instance.
190
+
1. Restart the schema registry pods to apply the new identity.
248
191
249
-
1. Assign a user-assigned managed identity to the deployed Azure IoT Operations instance. Copy and run the provided [az iot ops identity assign](/cli/azure/iot/ops/identity#az-iot-ops-identity-assign) command.
250
-
251
-
This command creates a federated identity credential using the OIDC issuer of the indicated connected cluster and the Azure IoT Operations service account.
1. Once all of the Azure CLI commands complete successfully, you can close the **Install Azure IoT Operations** wizard.
254
197
255
198
Once the `create`command completes successfully, you have a working Azure IoT Operations instance running on your cluster. At this point, your instance is configured for production scenarios.
256
199
257
200
## Verify deployment
258
201
259
-
After the deployment is complete, use [az iot ops check](/cli/azure/iot/ops#az-iot-ops-check) to evaluate IoT Operations service deployment for health, configuration, and usability. The *check* command can help you find problems in your deployment and configuration.
202
+
After the deployment is complete, use [az iot ops check](/cli/azure/iot/ops#az-iot-ops-check) to evaluate IoT Operations service deployment forhealth, configuration, and usability. The `check` command can help you find problemsin your deployment and configuration.
260
203
261
204
```azurecli
262
205
az iot ops check
@@ -269,3 +212,5 @@ You can check the configurations of topic maps, QoS, and message routes by addin
269
212
## Next steps
270
213
271
214
If your components need to connect to Azure endpoints like SQL or Fabric, learn how to [Manage secrets for your Azure IoT Operations deployment](../deploy-iot-ops/howto-manage-secrets.md).
0 commit comments