Skip to content

Commit 54c1f72

Browse files
Update DNS and L3 steps.
1 parent dfdd827 commit 54c1f72

File tree

4 files changed

+83
-213
lines changed

4 files changed

+83
-213
lines changed

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

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ ms.service: azure-iot-operations
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: 19 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -203,98 +203,54 @@ Create the Layered Network Management custom resource.
203203
allowList:
204204
enableArcDomains: true
205205
domains:
206-
- destinationUrl: "*.arc.azure.net"
207-
destinationType: external
208-
- destinationUrl: "*.data.mcr.microsoft.com"
206+
- destinationUrl: "management.azure.com"
209207
destinationType: external
210208
- destinationUrl: "*.dp.kubernetesconfiguration.azure.com"
211209
destinationType: external
212-
- destinationUrl: "*.guestnotificationservice.azure.com"
213-
destinationType: external
214-
- destinationUrl: "*.his.arc.azure.com"
210+
- destinationUrl: "login.microsoftonline.com"
215211
destinationType: external
216212
- destinationUrl: "*.login.microsoft.com"
217213
destinationType: external
218-
- destinationUrl: "*.login.microsoftonline.com"
219-
destinationType: external
220-
- destinationUrl: "*.obo.arc.azure.com"
221-
destinationType: external
222-
- destinationUrl: "*.servicebus.windows.net"
223-
destinationType: external
224-
- destinationUrl: "graph.microsoft.com"
225-
destinationType: external
226214
- destinationUrl: "login.windows.net"
227215
destinationType: external
228-
- destinationUrl: "management.azure.com"
229-
destinationType: external
230216
- destinationUrl: "mcr.microsoft.com"
231217
destinationType: external
232-
- destinationUrl: "sts.windows.net"
233-
destinationType: external
234-
- destinationUrl: "*.ods.opinsights.azure.com"
235-
destinationType: external
236-
- destinationUrl: "graph.windows.net"
237-
destinationType: external
238-
- destinationUrl: "msit-onelake.pbidedicated.windows.net"
239-
destinationType: external
240-
- destinationUrl: "*.azurecr.io"
218+
- destinationUrl: "*.data.mcr.microsoft.com"
241219
destinationType: external
242-
- destinationUrl: "*.azureedge.net"
220+
- destinationUrl: "gbl.his.arc.azure.com"
243221
destinationType: external
244-
- destinationUrl: "*.blob.core.windows.net"
222+
- destinationUrl: "*.his.arc.azure.com"
245223
destinationType: external
246-
- destinationUrl: "*.prod.hot.ingestion.msftcloudes.com"
224+
- destinationUrl: "k8connecthelm.azureedge.net"
247225
destinationType: external
248-
- destinationUrl: "*.prod.microsoftmetrics.com"
226+
- destinationUrl: "guestnotificationservice.azure.com"
249227
destinationType: external
250-
- destinationUrl: "adhs.events.data.microsoft.com"
228+
- destinationUrl: "*.guestnotificationservice.azure.com"
251229
destinationType: external
252-
- destinationUrl: "dc.services.visualstudio.com"
230+
- destinationUrl: "sts.windows.net"
253231
destinationType: external
254-
- destinationUrl: "go.microsoft.com"
232+
- destinationUrl: "k8sconnectcsp.azureedge.net"
255233
destinationType: external
256-
- destinationUrl: "packages.microsoft.com"
234+
- destinationUrl: "*.servicebus.windows.net"
257235
destinationType: external
258-
- destinationUrl: "www.powershellgallery.com"
236+
- destinationUrl: "graph.microsoft.com"
259237
destinationType: external
260-
- destinationUrl: "*.gw.arc.azure.com"
238+
- destinationUrl: "*.arc.azure.net"
261239
destinationType: external
262-
- destinationUrl: "*.gcs.prod.monitoring.core.windows.net"
240+
- destinationUrl: "*.obo.arc.azure.com"
263241
destinationType: external
264-
- destinationUrl: "*.prod.warm.ingest.monitor.core.windows.net"
242+
- destinationUrl: "linuxgeneva-microsoft.azurecr.io"
265243
destinationType: external
266-
- destinationUrl: "*.prod.hot.ingest.monitor.core.windows.net"
244+
- destinationUrl: "graph.windows.net"
267245
destinationType: external
268-
- destinationUrl: "azure.archive.ubuntu.com"
246+
- destinationUrl: "*.azurecr.io"
269247
destinationType: external
270-
- destinationUrl: "crl.microsoft.com"
248+
- destinationUrl: "*.blob.core.windows.net"
271249
destinationType: external
272-
- destinationUrl: "*.table.core.windows.net"
250+
- destinationUrl: "*.vault.azure.net"
273251
destinationType: external
274252
- destinationUrl: "*.blob.storage.azure.net"
275253
destinationType: external
276-
- destinationUrl: "*.docker.com"
277-
destinationType: external
278-
- destinationUrl: "*.docker.io"
279-
destinationType: external
280-
- destinationUrl: "*.googleapis.com"
281-
destinationType: external
282-
- destinationUrl: "github.com"
283-
destinationType: external
284-
- destinationUrl: "collect.traefik.io"
285-
destinationType: external
286-
- destinationUrl: "contracts.canonical.com"
287-
destinationType: external
288-
- destinationUrl: "database.clamav.net"
289-
destinationType: external
290-
- destinationUrl: "esm.ubuntu.com"
291-
destinationType: external
292-
- destinationUrl: "livepatch.canonical.com"
293-
destinationType: external
294-
- destinationUrl: "motd.ubuntu.com"
295-
destinationType: external
296-
- destinationUrl: "update.traefik.io"
297-
destinationType: external
298254
sourceIpRange:
299255
- addressPrefix: "0.0.0.0"
300256
prefixLen: 0

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

Lines changed: 40 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -187,64 +187,57 @@ A custom DNS is only needed for levels 3 and below. This example uses a [dnsmasq
187187
apt install dnsmasq
188188
systemctl status dnsmasq
189189
```
190+
191+
> [!NOTE]
192+
> You might need to disable the *systemd-resolved* service if it causes conflict on port 53.
193+
> ```bash
194+
> systemctl disable --now systemd-resolved
195+
> ```
190196
1. Modify the `/etc/dnsmasq.conf` file as shown to route these domains to the upper level.
191197
- Change the IPv4 address from 10.104.0.10 to respective destination address for that level. In this case, the IP address of the Layered Network Management service in the parent level.
192-
- Verify the `interface` where you're running the *dnsmasq* and change the value as needed.
193198

194199
The following configuration only contains the necessary endpoints for enabling Azure IoT Operations.
195200

196201
```conf
197-
# Add domains which you want to force to an IP address here.
198-
address=/management.azure.com/10.104.0.10
199-
address=/dp.kubernetesconfiguration.azure.com/10.104.0.10
200-
address=/.dp.kubernetesconfiguration.azure.com/10.104.0.10
201-
address=/login.microsoftonline.com/10.104.0.10
202-
address=/.login.microsoft.com/10.104.0.10
203-
address=/.login.microsoftonline.com/10.104.0.10
204-
address=/login.microsoft.com/10.104.0.10
205-
address=/mcr.microsoft.com/10.104.0.10
206-
address=/.data.mcr.microsoft.com/10.104.0.10
207-
address=/gbl.his.arc.azure.com/10.104.0.10
208-
address=/.his.arc.azure.com/10.104.0.10
209-
address=/k8connecthelm.azureedge.net/10.104.0.10
210-
address=/guestnotificationservice.azure.com/10.104.0.10
211-
address=/.guestnotificationservice.azure.com/10.104.0.10
212-
address=/sts.windows.nets/10.104.0.10
213-
address=/k8sconnectcsp.azureedge.net/10.104.0.10
214-
address=/.servicebus.windows.net/10.104.0.10
215-
address=/servicebus.windows.net/10.104.0.10
216-
address=/obo.arc.azure.com/10.104.0.10
217-
address=/.obo.arc.azure.com/10.104.0.10
218-
address=/adhs.events.data.microsoft.com/10.104.0.10
219-
address=/dc.services.visualstudio.com/10.104.0.10
220-
address=/go.microsoft.com/10.104.0.10
221-
address=/onegetcdn.azureedge.net/10.104.0.10
222-
address=/www.powershellgallery.com/10.104.0.10
223-
address=/self.events.data.microsoft.com/10.104.0.10
224-
address=/psg-prod-eastus.azureedge.net/10.104.0.10
225-
address=/.azureedge.net/10.104.0.10
226-
address=/api.segment.io/10.104.0.10
227-
address=/nw-umwatson.events.data.microsoft.com/10.104.0.10
228-
address=/sts.windows.net/10.104.0.10
229-
address=/.azurecr.io/10.104.0.10
230-
address=/.blob.core.windows.net/10.104.0.10
231-
address=/global.metrics.azure.microsoft.scloud/10.104.0.10
232-
address=/.prod.hot.ingestion.msftcloudes.com/10.104.0.10
233-
address=/.prod.microsoftmetrics.com/10.104.0.10
234-
address=/global.metrics.azure.eaglex.ic.gov/10.104.0.10
202+
strict-order
203+
204+
# Arc endpoints
205+
address=/management.azure.com/10.0.0.6
206+
address=/.dp.kubernetesconfiguration.azure.com/10.0.0.6
207+
address=/login.microsoftonline.com/10.0.0.6
208+
address=/.login.microsoft.com/10.0.0.6
209+
address=/login.windows.net/10.0.0.6
210+
address=/mcr.microsoft.com/10.0.0.6
211+
address=/.data.mcr.microsoft.com/10.0.0.6
212+
address=/gbl.his.arc.azure.com/10.0.0.6
213+
address=/.his.arc.azure.com/10.0.0.6
214+
address=/k8connecthelm.azureedge.net/10.0.0.6
215+
address=/guestnotificationservice.azure.com/10.0.0.6
216+
address=/.guestnotificationservice.azure.com/10.0.0.6
217+
address=/sts.windows.net/10.0.0.6
218+
address=/k8sconnectcsp.azureedge.net/10.0.0.6
219+
address=/.servicebus.windows.net/10.0.0.6
220+
address=/graph.microsoft.com/10.0.0.6
221+
address=/.arc.azure.net/10.0.0.6
222+
address=/.obo.arc.azure.com/10.0.0.6
223+
address=/linuxgeneva-microsoft.azurecr.io/10.0.0.6
224+
# Azure CLI installation endpoints
225+
address=/pypi.org/10.0.0.6
226+
address=/files.pythonhosted.org/10.0.0.6
227+
# Azure CLI endpoints
228+
address=/graph.windows.net/10.0.0.6
229+
address=/.azurecr.io/10.0.0.6
230+
address=/.blob.core.windows.net/10.0.0.6
231+
address=/.vault.azure.net/10.0.0.6
232+
# AIO endpoints
233+
address=/.blob.storage.azure.net/10.0.0.6
235234
236235
# --address (and --server) work with IPv6 addresses too.
237236
address=/guestnotificationservice.azure.com/fe80::20d:60ff:fe36:f83
238237
address=/.guestnotificationservice.azure.com/fe80::20d:60ff:fe36:f833
239238
address=/.servicebus.windows.net/fe80::20d:60ff:fe36:f833
240239
address=/servicebus.windows.net/fe80::20d:60ff:fe36:f833
241240
242-
# If you want dnsmasq to listen for DHCP and DNS requests only on
243-
# specified interfaces (and the loopback) give the name of the
244-
# interface (eg eth0) here.
245-
# Repeat the line for more than one interface.
246-
interface=enp1s0
247-
248241
listen-address=::1,127.0.0.1,10.102.0.72
249242
250243
no-hosts
@@ -253,18 +246,14 @@ A custom DNS is only needed for levels 3 and below. This example uses a [dnsmasq
253246
1. As an alternative, you can put `address=/#/<IP of upper level Layered Network Management service>` in the IPv4 address section. For example:
254247

255248
```conf
249+
strict-order
250+
256251
# Add domains which you want to force to an IP address here.
257252
address=/#/<IP of upper level Layered Network Management service>
258253
259254
# --address (and --server) work with IPv6 addresses too.
260255
address=/#/fe80::20d:60ff:fe36:f833
261256
262-
# If you want dnsmasq to listen for DHCP and DNS requests only on
263-
# specified interfaces (and the loopback) give the name of the
264-
# interface (eg eth0) here.
265-
# Repeat the line for more than one interface.
266-
interface=enp1s0
267-
268257
listen-address=::1,127.0.0.1,10.102.0.72
269258
270259
no-hosts

0 commit comments

Comments
 (0)