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
Fix tab group consistency and structure in registry endpoint doc
- Fix validation warning: all tab groups now use same tab IDs
(portal/bicep/kubernetes) consistently across the article
- Rename 'Azure portal' tab to 'Operations experience' per convention
- Rename 'Kubernetes' to 'Kubernetes (preview)' per convention
- Add Operations experience tab to auth method sections and ghcr.io
section (was missing, causing mismatched tab sets)
- Move IMPORTANT callout about host prefix matching to Configuration
Options section where it's more discoverable
- Remove redundant 'Registry endpoint overview' section (duplicated
the intro paragraph)
Copy file name to clipboardExpand all lines: articles/iot-operations/develop-edge-apps/howto-configure-registry-endpoint.md
+95-39Lines changed: 95 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,7 @@ ai-usage: ai-assisted
18
18
Data flow graphs and the HTTP/REST connector use registry endpoints to pull WebAssembly (WASM) modules and graph definitions from container registries. Azure IoT Operations pulls any custom connector templates you develop from container registries. You can configure the endpoint settings, authentication, and other settings to connect to Azure Container Registry (ACR) or other OCI-compatible registries such as:
19
19
20
20
- Docker Hub
21
+
- GitHub Container Registry (ghcr.io)
21
22
- Harbor
22
23
- AWS Elastic Container Registry
23
24
- Google Container Registry
@@ -29,40 +30,22 @@ The examples in this article show how to configure a registry endpoint using ACR
29
30
- An instance of [Azure IoT Operations](../deploy-iot-ops/howto-deploy-iot-operations.md), version 1.2 or later.
30
31
- Access to a container registry, such as ACR.
31
32
32
-
## Registry endpoint overview
33
-
34
-
A registry endpoint defines the connection details and authentication method for accessing a container registry. Registry endpoints are used by:
35
-
36
-
-**Data flow graphs**: To pull WASM modules and graph definitions for custom processing
37
-
-**HTTP/REST connector**: To pull WASM modules and graph definitions for custom processing
38
-
-**Akri connectors**: To pull custom connector templates
39
-
40
-
Registry endpoints support authentication through:
41
-
- System-assigned managed identity
42
-
- User-assigned managed identity
43
-
- Artifact pull secrets (username and password)
44
-
- Anonymous access (for public registries)
45
-
46
33
## Create a registry endpoint
47
34
48
-
A registry endpoint defines the connection to your container registry. Data flow graphs use registry endpoints to pull WASM modules and graph definitions from container registries. Azure IoT Operations uses registry endpoints to pull custom connector templates from container registries. You can create a registry endpoint using the Azure portal, Azure CLI, Bicep, or Kubernetes. After you create a registry endpoint:
35
+
A registry endpoint defines the connection to your container registry. Data flow graphs use registry endpoints to pull WASM modules and graph definitions. Azure IoT Operations uses registry endpoints to pull custom connector templates. After you create a registry endpoint:
49
36
50
37
- You can use any graphs you [pushed to your container registry](howto-deploy-wasm-graph-definitions.md#push-modules-to-your-registry) in the operations experience in data flow graphs.
51
38
- You can use any [custom connectors you pushed](howto-build-akri-connectors-vscode.md#publish-a-connector-image) to your container registry in the operations experience to create device inbound endpoints.
52
39
53
-
# [Azure portal](#tab/portal)
40
+
# [Operations experience](#tab/portal)
54
41
55
-
Use the Azure portal to create registry endpoints. The portal experience prompts you to specify and provide host details of an ACR, and optionally provide credentials. Before you begin, make sure you have the following information:
42
+
Use the operations experience to create registry endpoints. The portal experience prompts you to specify and provide host details of an ACR, and optionally provide credentials. Before you begin, make sure you have the following information:
56
43
57
44
- Registry endpoint name.
58
45
- A host name for the ACR.
59
-
- Four types of authentication are supported:
60
-
- Anonymous
61
-
- System managed identity
62
-
- User managed identity
63
-
- Artifact secret
46
+
- Authentication type: Anonymous, System managed identity, User managed identity, or Artifact secret.
64
47
65
-
To create a registry endpoint in the Azure portal, follow these steps.
48
+
To create a registry endpoint, follow these steps.
66
49
67
50
### Create registry endpoints with anonymous authentication
68
51
@@ -89,7 +72,7 @@ Create a new registry endpoint by specifying the host details of an ACR. Authent
89
72
90
73
### Create registry endpoints with artifact secrets
91
74
92
-
Use artifact secrets to authenticate with private container registries like ACR, Docker Hub, or MCR when pulling container images. Secrets are essential when the registry requires credentials and the image isn't publicly accessible. This scenario enables you to manage data flow graphs across Azure IoT Operations and the operations experience. You can set up artifact secrets from Microsoft Azure Key Vault by selecting existing secrets.
75
+
Use artifact secrets to authenticate with private container registries like ACR, Docker Hub, or MCR when pulling container images. Secrets are essential when the registry requires credentials and the image isn't publicly accessible. You can set up artifact secrets from Microsoft Azure Key Vault by selecting existing secrets.
93
76
94
77
Create a new registry endpoint by specifying the host details of an ACR. Authenticate by using artifact secrets for secure access and store the configuration for reuse:
95
78
@@ -101,7 +84,7 @@ Set up artifact secrets from Azure Key Vault by creating new secrets and storing
101
84
102
85
# [Bicep](#tab/bicep)
103
86
104
-
Create a Bicep `.bicep` file with the following content:
87
+
Create a Bicep `.bicep` file with the following content. This example uses system-assigned managed identity authentication:
@@ -166,11 +149,11 @@ Apply the manifest file to the Kubernetes cluster:
166
149
kubectl apply -f <FILE>.yaml
167
150
```
168
151
152
+
---
153
+
169
154
> [!NOTE]
170
155
> You can reuse registry endpoints across multiple data flow graphs and other Azure IoT Operations components, like Akri connectors.
171
156
172
-
---
173
-
174
157
## Configuration options
175
158
176
159
This section describes the configuration options available for registry endpoints.
@@ -179,13 +162,14 @@ This section describes the configuration options available for registry endpoint
179
162
180
163
The `host` property specifies the container registry hostname. For ACR, use the format `<registry-name>.azurecr.io`. The host property supports HTTPS URLs or just the hostname.
181
164
165
+
> [!IMPORTANT]
166
+
> The `host` field must include the full path prefix that matches your artifact references. For example, if your artifacts are at `ghcr.io/azure-samples/explore-iot-operations/temperature:1.0.0`, set `host` to `ghcr.io/azure-samples/explore-iot-operations` (not just `ghcr.io`). The runtime matches the host as a prefix against the artifact reference. If the host doesn't match, you see "No valid registry endpoint configuration found" in the WASM graph controller logs.
-`ghcr.io/azure-samples/explore-iot-operations` (GitHub Container Registry with path)
185
171
-`docker.io/myorg` (Docker Hub)
186
172
187
-
The host property supports any OCI-compatible registry hostname, with an optional path prefix for registries that use repository namespaces.
188
-
189
173
### Authentication methods
190
174
191
175
Registry endpoints support several authentication methods to securely access container registries.
@@ -203,8 +187,13 @@ Before configuring the registry endpoint, ensure the Azure IoT Operations system
203
187
1. On the **Members** tab, for **Assign access to**, select **User, group, or service principal**, then select **+ Select members** and search for the Azure IoT Operations Arc extension name. Choose the extension and select **Select**.
204
188
1. Select **Review + assign** to complete the role assignment.
205
189
190
+
The following snippet shows how to configure system-assigned managed identity authentication:
191
+
192
+
# [Operations experience](#tab/portal)
206
193
207
-
The following snippet shows how to configure system-assigned managed identity authentication in the Bicep file that configures the registry endpoint:
194
+
When creating a registry endpoint in the operations experience, select **System managed identity** as the authentication method. See the screenshot in [Create registry endpoints with system managed identity authentication](#create-registry-endpoints-with-system-managed-identity-authentication).
195
+
196
+
# [Bicep](#tab/bicep)
208
197
209
198
```bicep
210
199
authentication: {
@@ -217,6 +206,18 @@ authentication: {
217
206
}
218
207
```
219
208
209
+
# [Kubernetes (preview)](#tab/kubernetes)
210
+
211
+
```yaml
212
+
spec:
213
+
authentication:
214
+
method: SystemAssignedManagedIdentity
215
+
systemAssignedManagedIdentitySettings:
216
+
audience: https://management.azure.com/
217
+
```
218
+
219
+
---
220
+
220
221
**System-assigned managed identity settings**:
221
222
222
223
| Property | Description | Required | Type |
@@ -233,7 +234,13 @@ User-assigned managed identity allows you to use a specific managed identity tha
233
234
234
235
Before configuring the registry endpoint, ensure the user-assigned managed identity has the `AcrPull` role on your container registry.
235
236
236
-
The following snippet shows how to configure user-assigned managed identity authentication in the Bicep file that configures the registry endpoint:
237
+
The following snippet shows how to configure user-assigned managed identity authentication:
238
+
239
+
# [Operations experience](#tab/portal)
240
+
241
+
When creating a registry endpoint in the operations experience, select **User managed identity** as the authentication method. Enter the client ID and tenant ID. See the screenshot in [Create registry endpoints with user managed identity](#create-registry-endpoints-with-user-managed-identity).
The following snippet shows how to configure artifact pull secret authentication in the Bicep file that configures the registry endpoint:
293
+
The following snippet shows how to configure artifact pull secret authentication:
294
+
295
+
# [Operations experience](#tab/portal)
296
+
297
+
When creating a registry endpoint in the operations experience, select **Artifact secret** as the authentication method. See the screenshot in [Create registry endpoints with artifact secrets](#create-registry-endpoints-with-artifact-secrets).
298
+
299
+
# [Bicep](#tab/bicep)
274
300
275
301
```bicep
276
302
authentication: {
@@ -281,11 +307,29 @@ authentication: {
281
307
}
282
308
```
283
309
310
+
# [Kubernetes (preview)](#tab/kubernetes)
311
+
312
+
```yaml
313
+
spec:
314
+
authentication:
315
+
method: ArtifactPullSecret
316
+
artifactPullSecretSettings:
317
+
secretRef: my-registry-secret
318
+
```
319
+
320
+
---
321
+
284
322
#### Anonymous authentication
285
323
286
324
Anonymous authentication is used for public registries that don't require authentication.
287
325
288
-
The following snippet shows how to configure anonymous authentication in the Bicep file that configures the registry endpoint:
326
+
The following snippet shows how to configure anonymous authentication:
327
+
328
+
# [Operations experience](#tab/portal)
329
+
330
+
When creating a registry endpoint in the operations experience, select **Anonymous** as the authentication method. See the screenshot in [Create registry endpoints with anonymous authentication](#create-registry-endpoints-with-anonymous-authentication).
331
+
332
+
# [Bicep](#tab/bicep)
289
333
290
334
```bicep
291
335
authentication: {
@@ -294,6 +338,17 @@ authentication: {
294
338
}
295
339
```
296
340
341
+
# [Kubernetes (preview)](#tab/kubernetes)
342
+
343
+
```yaml
344
+
spec:
345
+
authentication:
346
+
method: Anonymous
347
+
anonymousSettings: {}
348
+
```
349
+
350
+
---
351
+
297
352
## Azure Container Registry integration
298
353
299
354
ACR is the recommended container registry for Azure IoT Operations. ACR provides secure, private Docker container registries with integrated authentication through Microsoft Entra ID (Entra ID).
@@ -310,6 +365,10 @@ You can configure a registry endpoint to point directly at a public OCI-compatib
310
365
311
366
For example, the Azure IoT Operations sample WASM modules and graph definitions are published at `ghcr.io/azure-samples/explore-iot-operations`. You can create a registry endpoint that points directly to this public registry by using anonymous authentication.
312
367
368
+
# [Operations experience](#tab/portal)
369
+
370
+
When creating a registry endpoint in the operations experience, enter `ghcr.io/azure-samples/explore-iot-operations` as the host name and select **Anonymous** as the authentication method.
After you create this registry endpoint, you can reference it in your data flow graph as `registryEndpointRef: public-ghcr`. No ORAS pull/push steps are needed because the runtime pulls the artifacts directly from the public registry.
351
410
352
-
> [!IMPORTANT]
353
-
> The `host` field must include the full path prefix that matches your artifact references. For example, if your artifacts are at `ghcr.io/azure-samples/explore-iot-operations/temperature:1.0.0`, set `host` to `ghcr.io/azure-samples/explore-iot-operations` (not just `ghcr.io`). The runtime matches the host as a prefix against the artifact reference. If the host doesn't match, you see "No valid registry endpoint configuration found" in the WASM graph controller logs.
354
-
355
411
> [!NOTE]
356
412
> Public registries don't require authentication, but they may have rate limits. For production workloads, consider using a private registry like Azure Container Registry.
0 commit comments