Skip to content

Commit 6751027

Browse files
committed
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)
1 parent 022d2ea commit 6751027

1 file changed

Lines changed: 95 additions & 39 deletions

File tree

articles/iot-operations/develop-edge-apps/howto-configure-registry-endpoint.md

Lines changed: 95 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ ai-usage: ai-assisted
1818
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:
1919

2020
- Docker Hub
21+
- GitHub Container Registry (ghcr.io)
2122
- Harbor
2223
- AWS Elastic Container Registry
2324
- Google Container Registry
@@ -29,40 +30,22 @@ The examples in this article show how to configure a registry endpoint using ACR
2930
- An instance of [Azure IoT Operations](../deploy-iot-ops/howto-deploy-iot-operations.md), version 1.2 or later.
3031
- Access to a container registry, such as ACR.
3132

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-
4633
## Create a registry endpoint
4734

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

5037
- 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.
5138
- 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.
5239

53-
# [Azure portal](#tab/portal)
40+
# [Operations experience](#tab/portal)
5441

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

5744
- Registry endpoint name.
5845
- 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.
6447

65-
To create a registry endpoint in the Azure portal, follow these steps.
48+
To create a registry endpoint, follow these steps.
6649

6750
### Create registry endpoints with anonymous authentication
6851

@@ -89,7 +72,7 @@ Create a new registry endpoint by specifying the host details of an ACR. Authent
8972

9073
### Create registry endpoints with artifact secrets
9174

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

9477
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:
9578

@@ -101,7 +84,7 @@ Set up artifact secrets from Azure Key Vault by creating new secrets and storing
10184

10285
# [Bicep](#tab/bicep)
10386

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

10689
```bicep
10790
param aioInstanceName string = '<AIO_INSTANCE_NAME>'
@@ -142,9 +125,9 @@ Deploy the Bicep file by using Azure CLI:
142125
az deployment group create --resource-group <RESOURCE_GROUP> --template-file <FILE>.bicep
143126
```
144127

145-
# [Kubernetes](#tab/kubernetes)
128+
# [Kubernetes (preview)](#tab/kubernetes)
146129

147-
Create a Kubernetes manifest `.yaml` file with the following content:
130+
Create a Kubernetes manifest `.yaml` file with the following content. This example uses system-assigned managed identity authentication:
148131

149132
```yaml
150133
apiVersion: connectivity.iotoperations.azure.com/v1beta1
@@ -166,11 +149,11 @@ Apply the manifest file to the Kubernetes cluster:
166149
kubectl apply -f <FILE>.yaml
167150
```
168151

152+
---
153+
169154
> [!NOTE]
170155
> You can reuse registry endpoints across multiple data flow graphs and other Azure IoT Operations components, like Akri connectors.
171156
172-
---
173-
174157
## Configuration options
175158

176159
This section describes the configuration options available for registry endpoints.
@@ -179,13 +162,14 @@ This section describes the configuration options available for registry endpoint
179162

180163
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.
181164

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.
167+
182168
**Examples**:
183169
- `myregistry.azurecr.io` (Azure Container Registry)
184170
- `ghcr.io/azure-samples/explore-iot-operations` (GitHub Container Registry with path)
185171
- `docker.io/myorg` (Docker Hub)
186172

187-
The host property supports any OCI-compatible registry hostname, with an optional path prefix for registries that use repository namespaces.
188-
189173
### Authentication methods
190174

191175
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
203187
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**.
204188
1. Select **Review + assign** to complete the role assignment.
205189

190+
The following snippet shows how to configure system-assigned managed identity authentication:
191+
192+
# [Operations experience](#tab/portal)
206193

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)
208197

209198
```bicep
210199
authentication: {
@@ -217,6 +206,18 @@ authentication: {
217206
}
218207
```
219208

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+
220221
**System-assigned managed identity settings**:
221222
222223
| Property | Description | Required | Type |
@@ -233,7 +234,13 @@ User-assigned managed identity allows you to use a specific managed identity tha
233234

234235
Before configuring the registry endpoint, ensure the user-assigned managed identity has the `AcrPull` role on your container registry.
235236

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).
242+
243+
# [Bicep](#tab/bicep)
237244

238245
```bicep
239246
authentication: {
@@ -246,6 +253,19 @@ authentication: {
246253
}
247254
```
248255

256+
# [Kubernetes (preview)](#tab/kubernetes)
257+
258+
```yaml
259+
spec:
260+
authentication:
261+
method: UserAssignedManagedIdentity
262+
userAssignedManagedIdentitySettings:
263+
clientId: <CLIENT_ID>
264+
tenantId: <TENANT_ID>
265+
```
266+
267+
---
268+
249269
**User-assigned managed identity settings**:
250270

251271
| Property | Description | Required | Type |
@@ -270,7 +290,13 @@ kubectl create secret docker-registry my-registry-secret \
270290
-n azure-iot-operations
271291
```
272292

273-
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)
274300

275301
```bicep
276302
authentication: {
@@ -281,11 +307,29 @@ authentication: {
281307
}
282308
```
283309

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+
284322
#### Anonymous authentication
285323

286324
Anonymous authentication is used for public registries that don't require authentication.
287325

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)
289333

290334
```bicep
291335
authentication: {
@@ -294,6 +338,17 @@ authentication: {
294338
}
295339
```
296340

341+
# [Kubernetes (preview)](#tab/kubernetes)
342+
343+
```yaml
344+
spec:
345+
authentication:
346+
method: Anonymous
347+
anonymousSettings: {}
348+
```
349+
350+
---
351+
297352
## Azure Container Registry integration
298353

299354
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
310365

311366
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.
312367

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.
371+
313372
# [Bicep](#tab/bicep)
314373

315374
```bicep
@@ -330,7 +389,7 @@ resource publicRegistryEndpoint 'Microsoft.IoTOperations/instances/registryEndpo
330389
}
331390
```
332391

333-
# [Kubernetes](#tab/kubernetes)
392+
# [Kubernetes (preview)](#tab/kubernetes)
334393

335394
```yaml
336395
apiVersion: connectivity.iotoperations.azure.com/v1beta1
@@ -349,9 +408,6 @@ spec:
349408

350409
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.
351410

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-
355411
> [!NOTE]
356412
> Public registries don't require authentication, but they may have rate limits. For production workloads, consider using a private registry like Azure Container Registry.
357413

0 commit comments

Comments
 (0)