Skip to content

Commit 02ecb3a

Browse files
Changes to deploy and restart the SR pods
1 parent 1e66bc2 commit 02ecb3a

File tree

6 files changed

+263
-118
lines changed

6 files changed

+263
-118
lines changed
Lines changed: 61 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Deploy Azure IoT Operations to a cluster
2+
title: Deploy Azure IoT Operations to a Production Cluster
33
description: Use the Azure portal to deploy Azure IoT Operations to an Arc-enabled Kubernetes cluster.
44
author: SoniaLopezBravo
55
ms.author: sonialopez
@@ -10,11 +10,15 @@ ms.date: 04/08/2025
1010
#CustomerIntent: As an OT professional, I want to deploy Azure IoT Operations to a Kubernetes cluster.
1111
---
1212

13-
# Deploy Azure IoT Operations to an Arc-enabled Kubernetes cluster
13+
# Deploy Azure IoT Operations to a production cluster
1414

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.
1616

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:
1822

1923
* An Azure IoT Operations *deployment* describes all of the components and resources that enable the Azure IoT Operations scenario. These components and resources include:
2024
* An Azure IoT Operations instance
@@ -58,7 +62,9 @@ A cluster host:
5862

5963
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.
6064

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**.
6268

6369
1. Select **Create**.
6470

@@ -106,78 +112,9 @@ The Azure portal deployment experience is a helper tool that generates a deploym
106112

107113
1. Select **Apply** to confirm the schema registry configurations.
108114

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.
150116

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:
163-
164-
```bash
165-
--trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>
166-
```
167-
168-
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.":::
181118

182119
1. In the **Deployment options** section, provide the following information:
183120

@@ -192,71 +129,77 @@ Use these steps if you chose the **Secure settings** option on the **Dependency
192129

193130
1. Select **Next: Automation**.
194131

195-
1. One at a time, run each Azure CLI command on the **Automation** tab in a terminal:
132+
### Run Azure CLI commands
196133

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.
198135

199-
```azurecli
200-
az login
201-
```
136+
One at a time, run each Azure CLI command on the **Automation** tab in a terminal:
202137

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.
204139

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.
209152

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).
211155
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.
213157

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.
216160
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.
218162

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.
221164

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:
223166

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**. |
227177

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.
231179

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 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.
233181

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:
238183

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.
240187

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.
244189

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.
248191

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.
192+
```azurecli
193+
kubectl delete pods adr-schema-registry-0 adr-schema-registry-1 -n azure-iot-operations
194+
```
252195

253196
1. Once all of the Azure CLI commands complete successfully, you can close the **Install Azure IoT Operations** wizard.
254197

255198
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.
256199

257200
## Verify deployment
258201

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 for health, configuration, and usability. The `check` command can help you find problems in your deployment and configuration.
260203

261204
```azurecli
262205
az iot ops check
@@ -269,3 +212,5 @@ You can check the configurations of topic maps, QoS, and message routes by addin
269212
## Next steps
270213

271214
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).
215+
216+

0 commit comments

Comments
 (0)