Skip to content

Commit bcbea55

Browse files
authored
Merge pull request #291202 from EthanChangAED/main
Layered Network Management post-GA doc update
2 parents 6af635d + 9303b44 commit bcbea55

5 files changed

+108
-232
lines changed

articles/iot-operations/manage-layered-network/howto-configure-aks-edge-essentials-layered-network.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,23 @@ ms.author: patricka
77
ms.topic: how-to
88
ms.custom:
99
- ignite-2023
10-
ms.date: 10/22/2024
10+
ms.date: 12/12/2024
1111

1212
#CustomerIntent: As an operator, I want to Azure Arc enable AKS Edge Essentials clusters using Layered Network Management so that I have secure isolate devices.
1313
ms.service: azure-iot-operations
1414
---
1515

1616
# Configure Layered Network Management (preview) to use Azure IoT Operations in an isolated network
1717

18-
This walkthrough is an example of deploying Azure IoT Operations to a special environment that's different than the default [Azure IoT Operations scenario](../get-started-end-to-end-sample/quickstart-deploy.md). By default, Azure IoT Operations is deployed to an Arc-enabled cluster that has direct internet access. In this scenario, you deploy Azure IoT Operations to an isolated network environment. The hardware and cluster must meet the prerequisites of Azure IoT Operations and there are additional configurations for the network, host OS, and cluster. As a result, the Azure IoT Operations components run and connect to Arc through the Azure IoT Layered Network Management (preview) service.
18+
This walkthrough is an example of deploying Azure IoT Operations to a special environment that's different than the default [Azure IoT Operations scenario](../get-started-end-to-end-sample/quickstart-deploy.md). By default, Azure IoT Operations is deployed to an Arc-enabled cluster that has direct internet access. In this scenario, you deploy Azure IoT Operations to an isolated network environment. The hardware and cluster must meet the prerequisites of Azure IoT Operations and there are extra configurations for the network, host OS, and cluster. As a result, the Azure IoT Operations components run and connect to Arc through the Azure IoT Layered Network Management (preview) service.
1919

2020
>[!IMPORTANT]
2121
> This is an advanced scenario for Azure IoT Operations. You should complete the following steps to get familiar with the basic concepts before you start this advanced scenario.
2222
> - [Deploy Azure IoT Layered Network Management to an AKS cluster](howto-deploy-aks-layered-network.md)
2323
> - [Deployment overview - Azure IoT Operations](../deploy-iot-ops/overview-deploy.md)
2424
> - [Prepare your Kubernetes cluster - Azure IoT Operations](../deploy-iot-ops/howto-prepare-cluster.md)
2525
> - [Deploy Azure IoT Operations to an Arc-enabled Kubernetes cluster - Azure IoT Operations](../deploy-iot-ops/howto-deploy-iot-operations.md)
26+
> - You can reuse the cloud dependencies you create for this trial to reduce the complexity when setting up Azure IoT Operations in a Purdue Network environment. For example, **Key vault**, **Managed Identity**, and **Storage account**.
2627
>
2728
> You can't migrate a previously deployed Azure IoT Operations from its original network to an isolated network. For this scenario, follow the steps to begin with creating new clusters.
2829
@@ -60,18 +61,21 @@ The next step is to set up an Arc-enabled cluster in level 3 that's compatible f
6061

6162
# [K3S Cluster](#tab/k3s)
6263

63-
- Follow the [Prepare your Azure Arc-enabled Kubernetes cluster](../deploy-iot-ops/howto-prepare-cluster.md) to set up and Arc-enable your K3s cluster.
64-
1. You can prepare your K3s cluster with internet access.
65-
1. After install the required software components and set up the K3s cluster, you can restrict the internet access for this cluster and rely on the **custom DNS** that is prepared from earlier steps to direct the network traffic to the Layered Network Management component at level 4.
66-
- If you choose to use CoreDNS instead of DNS server, you need to configure the [CoreDNS](howto-configure-layered-network.md#configure-custom-dns) after setup the K3S cluster.
67-
1. Proceed to Arc-enable the cluster.
64+
Follow the [Prepare your Azure Arc-enabled Kubernetes cluster](../deploy-iot-ops/howto-prepare-cluster.md) to set up and Arc-enable your K3s cluster.
65+
66+
1. Prepare your K3s cluster with internet access.
67+
1. It's recommended to install the kubectl client with [these steps](/azure/azure-arc/kubernetes/troubleshooting#azure-cli) to ensure kubectl client is installed properly for Arc-enablement.
68+
1. Proceed to Arc-enable the cluster.
69+
1. Before you disable internet access of your cluster, you also need to complete the [Prerequisites for deploying Azure IoT Operations](/azure/iot-operations/deploy-iot-ops/howto-deploy-iot-operations#prerequisites).
70+
1. After installing the required software components and setting up the K3s cluster, you can restrict the internet access for this cluster and configure the [CoreDNS](howto-configure-layered-network.md#configure-custom-dns) to redirect network traffic to your Layered Network Management service at level 4.
6871

6972
# [AKS Edge Essentials](#tab/aksee)
7073

71-
- Follow the [Prepare your Azure Arc-enabled Kubernetes cluster](../deploy-iot-ops/howto-prepare-cluster.md) to set up and Arc-enable your AKS Edge Essentials cluster.
72-
1. You can prepare the AKS Edge Essentials with internet access.
73-
1. For the step of **Get the `objectID`** you run the command on a different machine that has internet access.
74-
1. After setting up the AKS Edge Essentials cluster, you can restrict the internet access for this cluster and rely on the **DNS server** that is prepared from earlier steps to direct the network traffic to the Layered Network Management component at level 4.
74+
Follow the [Prepare your Azure Arc-enabled Kubernetes cluster](../deploy-iot-ops/howto-prepare-cluster.md) to set up and Arc-enable your AKS Edge Essentials cluster.
75+
76+
1. Prepare the AKS Edge Essentials with internet access.
77+
1. Before you disable internet access of your cluster, you also need to complete the [Prerequisites for deploying Azure IoT Operations](/azure/iot-operations/deploy-iot-ops/howto-deploy-iot-operations#prerequisites).
78+
1. After setting up the AKS Edge Essentials cluster, you can restrict the internet access for this cluster and rely on the **DNS server** that is prepared from earlier steps to redirect the network traffic to the Layered Network Management service at level 4.
7579

7680
---
7781

articles/iot-operations/manage-layered-network/howto-configure-l3-cluster-layered-network.md

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ ms.subservice: layered-network-management
66
ms.author: patricka
77
ms.topic: how-to
88
ms.custom: ignite-2023, devx-track-azurecli
9-
ms.date: 10/22/2024
9+
ms.date: 12/12/2024
1010

1111
#CustomerIntent: As an operator, I want to configure Layered Network Management so that I have secure isolate devices.
1212
ms.service: azure-iot-operations
1313
---
1414

1515
# Configure level 3 cluster in an isolated network with Azure IoT Layered Network Management (preview)
1616

17-
You can configure a special isolated network environment for deploying Azure IoT Operations. For example, level 3 or lower in the ISA-95 network architecture. In this article, you set up a Kubernetes cluster to meet all the prerequisites of Azure IoT Operations and Arc-enable the cluster through the Azure IoT Layered Network Management (preview) service in the upper level. Before you start this process, the Layered Network Management (preview) service has to be ready for accepting the connection request from this level.
17+
You can configure a special isolated network environment for deploying Azure IoT Operations. For example, level 3 or lower in the ISA-95 network architecture. In this article, you set up a Kubernetes cluster and Arc-enable it through the Azure IoT Layered Network Management (preview) service in the upper level. Before you start this process, the Layered Network Management (preview) service has to be ready for accepting the connection request from this level.
1818

1919
You'll complete the following tasks:
2020
- Set up the host system and install all the required software in an internet facing environment.
@@ -111,6 +111,10 @@ After the device is moved to your level 3 isolated network layer, it's required
111111
1. Open the **Wi-Fi Settings**.
112112
1. Select the setting of the current connection.
113113
1. In the IPv4 tab, disable the **Automatic** setting for DNS and enter the local IP of DNS server.
114+
1. Restart the CoreDNS service.
115+
```bash
116+
kubectl rollout restart -n kube-system deployment/coredns
117+
```
114118
115119
# [AKS Edge Essentials](#tab/aksee)
116120
There are few limitations for setting up AKS Edge Essentials as the level 3 cluster.
@@ -129,9 +133,6 @@ If you're using VM to create your Windows 11 machines, use the [VM image](https:
129133
1. Download the [installer for the validated AKS Edge Essentials](https://aka.ms/aks-edge/msi-k3s-1.2.414.0) version.
130134
1. Install AKS Edge Essentials. Follow the steps in [Prepare your machines for AKS Edge Essentials](/azure/aks/hybrid/aks-edge-howto-setup-machine). Be sure to use the installer you downloaded in the previous step and not the most recent version.
131135
1. **Certificates:** For level 3 and lower, you ARC onboard the cluster that isn't connected to the internet. Therefore, you need to install certificates steps in [Prerequisites for AKS Edge Essentials offline installation](/azure/aks/hybrid/aks-edge-howto-offline-install).
132-
1. Install the following optional software if you plan to try Azure IoT Operations quickstarts or MQTT related scenarios.
133-
- [MQTTUI](https://github.com/EdJoPaTo/mqttui/releases) or other MQTT client
134-
- [Mosquitto](https://mosquitto.org/)
135136
1. Install Azure CLI. You can install the Azure CLI directly onto the level 3 machine or on another *developer* or *jumpbox* machine if you plan to access the level 3 cluster remotely. If you choose to access the Kubernetes cluster remotely to keep the cluster host clean, you run the *kubectl* and *az* related commands from the developer machine for the rest of the steps in this article.
136137
The *AKS Edge Essentials - Single machine deployment* does not support accessing Kubernetes remotely. If you want to enable remote kubectl access, you will need to create the [Full Kubernetes Deployment](/azure/aks/hybrid/aks-edge-howto-multi-node-deployment) instead. Additional configurations are needed when creating this type of Kubernetes cluster.
137138
- Install Azure CLI. Follow the steps in [Install Azure CLI on Windows](/cli/azure/install-azure-cli-windows).
@@ -150,25 +151,6 @@ To create the AKS Edge Essentials cluster that's compatible with Azure IoT Opera
150151
1. Complete the steps in [Create a single machine deployment](/azure/aks/hybrid/aks-edge-howto-single-node-deployment).
151152
Create a [Full Kubernetes Deployment](/azure/aks/hybrid/aks-edge-howto-multi-node-deployment) instead if you plan to remotely access the kubernetes from another machine.
152153
153-
At the end of [Step 1: single machine configuration parameters](/azure/aks/hybrid/aks-edge-howto-single-node-deployment#step-1-single-machine-configuration-parameters), modify the following values in the *aksedge-config.json* file as follows:
154-
155-
- `Init.ServiceIPRangeSize` = 10
156-
- `LinuxNode.DataSizeInGB` = 30
157-
- `LinuxNode.MemoryInMB` = 8192
158-
159-
In the **Network** section, set the `SkipDnsCheck` property to **true**. Add and set the `DnsServers` to the address of the DNS server in the subnet.
160-
161-
```json
162-
"DnsServers": ["<IP ADDRESS OF THE DNS SERVER IN SUBNET>"],
163-
"SkipDnsCheck": true,
164-
```
165-
166-
1. Install **local-path** storage in the cluster by running the following command:
167-
168-
```cmd
169-
kubectl apply -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/storage/local-path-provisioner/local-path-storage.yaml
170-
```
171-
172154
## Move the device to level 3 isolated network
173155
174156
In your isolated network layer, the DNS server was configured in a prerequisite step using [Create sample network environment](./howto-configure-layered-network.md). Complete the step if you haven't done so.
@@ -256,19 +238,6 @@ login.microsoftonline.com. 0 IN A 100.104.0.165
256238
```
257239
> [!TIP]
258240
> If the `connectedk8s` commands fail, try using the cmdlets in [Connect your AKS Edge Essentials cluster to Arc](/azure/aks/hybrid/aks-edge-howto-connect-to-arc).
259-
1. Fetch the `objectId` or `id` of the Microsoft Entra ID application that the Azure Arc service uses. Run the following command exactly as written, without changing the GUID value. The command you use depends on your version of Azure CLI:
260-
```powershell
261-
# If you're using an Azure CLI version lower than 2.37.0, use the following command:
262-
az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
263-
```
264-
```powershell
265-
# If you're using Azure CLI version 2.37.0 or higher, use the following command:
266-
az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
267-
```
268-
1. Use the [az connectedk8s enable-features](/cli/azure/connectedk8s#az-connectedk8s-enable-features) command to enable custom location support on your cluster. Use the `objectId` or `id` value from the previous command to enable custom locations on the cluster:
269-
```bash
270-
az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid <objectId/id> --features cluster-connect custom-locations
271-
```
272241
273242
### Configure cluster network
274243

articles/iot-operations/manage-layered-network/howto-configure-l4-cluster-layered-network.md

Lines changed: 23 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.subservice: layered-network-management
66
ms.author: patricka
77
ms.topic: how-to
88
ms.custom: ignite-2023, devx-track-azurecli
9-
ms.date: 10/22/2024
9+
ms.date: 12/12/2024
1010

1111
#CustomerIntent: As an operator, I want to configure Layered Network Management so that I have secure isolate devices.
1212
ms.service: azure-iot-operations
@@ -182,6 +182,8 @@ Once your Kubernetes cluster is Arc-enabled, you can deploy the Layered Network
182182
Create the Layered Network Management custom resource.
183183
184184
1. Create a `lnm-cr.yaml` file as specified:
185+
- For debugging or experimentation, you can change the value of **loglevel** parameter to **debug**.
186+
- For more detail about the endpoints, see [Azure IoT Operations endpoints](/azure/iot-operations/deploy-iot-ops/overview-deploy#azure-iot-operations-endpoints).
185187
186188
```yaml
187189
apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1
@@ -201,104 +203,59 @@ Create the Layered Network Management custom resource.
201203
allowList:
202204
enableArcDomains: true
203205
domains:
204-
- destinationUrl: "*.arc.azure.net"
205-
destinationType: external
206-
- destinationUrl: "*.data.mcr.microsoft.com"
206+
- destinationUrl: "management.azure.com"
207207
destinationType: external
208208
- destinationUrl: "*.dp.kubernetesconfiguration.azure.com"
209209
destinationType: external
210-
- destinationUrl: "*.guestnotificationservice.azure.com"
211-
destinationType: external
212-
- destinationUrl: "*.his.arc.azure.com"
210+
- destinationUrl: "login.microsoftonline.com"
213211
destinationType: external
214212
- destinationUrl: "*.login.microsoft.com"
215213
destinationType: external
216-
- destinationUrl: "*.login.microsoftonline.com"
217-
destinationType: external
218-
- destinationUrl: "*.obo.arc.azure.com"
219-
destinationType: external
220-
- destinationUrl: "*.servicebus.windows.net"
221-
destinationType: external
222-
- destinationUrl: "graph.microsoft.com"
223-
destinationType: external
224214
- destinationUrl: "login.windows.net"
225215
destinationType: external
226-
- destinationUrl: "management.azure.com"
227-
destinationType: external
228216
- destinationUrl: "mcr.microsoft.com"
229217
destinationType: external
230-
- destinationUrl: "sts.windows.net"
231-
destinationType: external
232-
- destinationUrl: "*.ods.opinsights.azure.com"
233-
destinationType: external
234-
- destinationUrl: "graph.windows.net"
235-
destinationType: external
236-
- destinationUrl: "msit-onelake.pbidedicated.windows.net"
237-
destinationType: external
238-
- destinationUrl: "*.azurecr.io"
218+
- destinationUrl: "*.data.mcr.microsoft.com"
239219
destinationType: external
240-
- destinationUrl: "*.azureedge.net"
220+
- destinationUrl: "gbl.his.arc.azure.com"
241221
destinationType: external
242-
- destinationUrl: "*.blob.core.windows.net"
222+
- destinationUrl: "*.his.arc.azure.com"
243223
destinationType: external
244-
- destinationUrl: "*.prod.hot.ingestion.msftcloudes.com"
224+
- destinationUrl: "k8connecthelm.azureedge.net"
245225
destinationType: external
246-
- destinationUrl: "*.prod.microsoftmetrics.com"
226+
- destinationUrl: "guestnotificationservice.azure.com"
247227
destinationType: external
248-
- destinationUrl: "adhs.events.data.microsoft.com"
228+
- destinationUrl: "*.guestnotificationservice.azure.com"
249229
destinationType: external
250-
- destinationUrl: "dc.services.visualstudio.com"
230+
- destinationUrl: "sts.windows.net"
251231
destinationType: external
252-
- destinationUrl: "go.microsoft.com"
232+
- destinationUrl: "k8sconnectcsp.azureedge.net"
253233
destinationType: external
254-
- destinationUrl: "packages.microsoft.com"
234+
- destinationUrl: "*.servicebus.windows.net"
255235
destinationType: external
256-
- destinationUrl: "www.powershellgallery.com"
236+
- destinationUrl: "graph.microsoft.com"
257237
destinationType: external
258-
- destinationUrl: "*.gw.arc.azure.com"
238+
- destinationUrl: "*.arc.azure.net"
259239
destinationType: external
260-
- destinationUrl: "*.gcs.prod.monitoring.core.windows.net"
240+
- destinationUrl: "*.obo.arc.azure.com"
261241
destinationType: external
262-
- destinationUrl: "*.prod.warm.ingest.monitor.core.windows.net"
242+
- destinationUrl: "linuxgeneva-microsoft.azurecr.io"
263243
destinationType: external
264-
- destinationUrl: "*.prod.hot.ingest.monitor.core.windows.net"
244+
- destinationUrl: "graph.windows.net"
265245
destinationType: external
266-
- destinationUrl: "azure.archive.ubuntu.com"
246+
- destinationUrl: "*.azurecr.io"
267247
destinationType: external
268-
- destinationUrl: "crl.microsoft.com"
248+
- destinationUrl: "*.blob.core.windows.net"
269249
destinationType: external
270-
- destinationUrl: "*.table.core.windows.net"
250+
- destinationUrl: "*.vault.azure.net"
271251
destinationType: external
272252
- destinationUrl: "*.blob.storage.azure.net"
273253
destinationType: external
274-
- destinationUrl: "*.docker.com"
275-
destinationType: external
276-
- destinationUrl: "*.docker.io"
277-
destinationType: external
278-
- destinationUrl: "*.googleapis.com"
279-
destinationType: external
280-
- destinationUrl: "github.com"
281-
destinationType: external
282-
- destinationUrl: "collect.traefik.io"
283-
destinationType: external
284-
- destinationUrl: "contracts.canonical.com"
285-
destinationType: external
286-
- destinationUrl: "database.clamav.net"
287-
destinationType: external
288-
- destinationUrl: "esm.ubuntu.com"
289-
destinationType: external
290-
- destinationUrl: "livepatch.canonical.com"
291-
destinationType: external
292-
- destinationUrl: "motd.ubuntu.com"
293-
destinationType: external
294-
- destinationUrl: "update.traefik.io"
295-
destinationType: external
296254
sourceIpRange:
297255
- addressPrefix: "0.0.0.0"
298256
prefixLen: 0
299257
```
300258
301-
For debugging or experimentation, you can change the value of **loglevel** parameter to **debug**.
302259
303260
1. Create the Custom Resource to create a Layered Network Management instance.
304261
@@ -309,7 +266,7 @@ Create the Layered Network Management custom resource.
309266
1. View the Layered Network Management Kubernetes service:
310267
311268
```bash
312-
kubectl get services -n azure-iot-operations
269+
kubectl get services
313270
```
314271
315272
```output

0 commit comments

Comments
 (0)