Criar ambiente de rede de exemplo para o Azure IoT Layered Network Management (visualização)
Para usar o serviço Azure IoT Layered Network Management (visualização), você precisa configurar um ambiente de rede isolado. Por exemplo, a arquitetura de rede ISA-95/Purdue. Esta página fornece alguns exemplos para configurar um ambiente de teste depende de como você deseja alcançar o isolamento.
- Segmentação física - As redes estão fisicamente separadas. Nesse caso, o Gerenciamento de Rede em Camadas (visualização) precisa ser implantado em um host NIC (Placa de Interface de Rede) dupla para se conectar à rede voltada para a Internet e à rede isolada.
- Segmentação lógica - A rede é logicamente segmentada com configurações como VLAN, sub-rede ou firewall. O Gerenciamento de Rede em Camadas tem um único ponto de extremidade e está configurado para ser visível para sua própria camada de rede e para a camada isolada.
Ambas as abordagens exigem que você configure um DNS personalizado na camada de rede isolada para direcionar o tráfego de rede para a instância de Gerenciamento de Rede em Camadas na camada superior.
Importante
Os ambientes de rede descritos na documentação do Gerenciamento de Rede em Camadas são exemplos para testar o Gerenciamento de Rede em Camadas. Não é uma recomendação de como você cria sua topologia de rede e cluster para produção.
Configurar rede isolada com segmentação física
O exemplo de configuração a seguir é uma rede isolada simples com dispositivos físicos mínimos.
- O ponto de acesso sem fio é usado para configurar uma rede local e não fornece acesso à Internet.
- O cluster de nível 4 é um cluster de nó único hospedado em uma máquina física de placa de interface de rede dupla (NIC) que se conecta à Internet e à rede local.
- O cluster de nível 3 é um cluster de nó único hospedado em uma máquina física. Este cluster de dispositivos só se conecta à rede local.
O Gerenciamento de Rede em Camadas é implantado no cluster de NIC dupla. O cluster na rede local se conecta ao Gerenciamento de Rede em Camadas como um proxy para acessar os serviços do Azure e Arc. Além disso, ele precisaria de um DNS personalizado na rede local para fornecer resolução de nome de domínio e apontar o tráfego para o Gerenciamento de Rede em Camadas. Para obter mais informações, consulte Configurar DNS personalizado.
Configurar rede isolada com segmentação lógica
O diagrama a seguir ilustra um ambiente de rede isolado onde cada nível é logicamente segmentado com sub-redes. Neste ambiente de teste, há vários clusters, um em cada nível. Os clusters podem ser AKS Edge Essentials ou K3S. O cluster Kubernetes na rede de nível 4 tem acesso direto à Internet. Os clusters Kubernetes no nível 3 e abaixo não têm acesso à Internet.
Os vários níveis de redes nesta configuração de teste são realizados usando sub-redes dentro de uma rede:
- Sub-rede de nível 4 (10.104.0.0/16) - Esta sub-rede tem acesso à internet. Todos os pedidos são enviados para os destinos na internet. Esta sub-rede tem uma única máquina Windows 11 com o endereço IP 10.104.0.10.
- Sub-rede de Nível 3 (10.103.0.0/16) - Esta sub-rede não tem acesso à Internet e está configurada para ter acesso apenas ao endereço IP 10.104.0.10 no Nível 4. Esta sub-rede contém uma máquina Windows 11 com o endereço IP 10.103.0.33 e uma máquina Linux que hospeda um servidor DNS. O servidor DNS é configurado usando as etapas em Configurar DNS personalizado. Todos os domínios na configuração DNS devem ser mapeados para o endereço 10.104.0.10.
- Sub-rede de nível 2 (10.102.0.0/16) - Tal como a sub-rede de nível 3, esta sub-rede não tem acesso à Internet. Está configurado para ter acesso apenas ao endereço IP 10.103.0.33 no nível 3. Esta sub-rede contém uma máquina Windows 11 com o endereço IP 10.102.0.28 e uma máquina Linux que hospeda um servidor DNS. Há uma máquina Windows 11 (nó) nesta rede com o endereço IP 10.102.0.28. Todos os domínios na configuração DNS devem ser mapeados para o endereço 10.103.0.33.
Consulte os exemplos a seguir para configurar esse tipo de ambiente de rede.
Exemplo de segmentação lógica com hardware mínimo
Neste exemplo, ambas as máquinas estão conectadas a um ponto de acesso (AP) que se conecta à Internet. A máquina host de nível 4 pode acessar a internet. O host de nível 3 está bloqueado para acessar a internet com a configuração do AP. Por exemplo, firewall ou controle de cliente. Como ambas as máquinas estão na mesma rede, a instância de Gerenciamento de Rede em Camadas hospedada no cluster de nível 4 é, por padrão, visível para a máquina e o cluster de nível 3. Um DNS personalizado extra precisa ser configurado na rede local para fornecer resolução de nome de domínio e apontar o tráfego para Gerenciamento de Rede em Camadas. Para obter mais informações, consulte Configurar DNS personalizado.
Exemplo de segmentação lógica no Azure
Neste exemplo, um ambiente de teste é criado com uma rede virtual e uma máquina virtual Linux no Azure.
Importante
O ambiente virtual é apenas para exploração e avaliação. Para obter mais informações, consulte Ambientes com suporte para Operações do Azure IoT.
- Crie uma rede virtual na sua subscrição do Azure. Crie sub-redes para pelo menos duas camadas (nível 4 e nível 3).
- É opcional criar uma sub-rede extra para a jumpbox ou a máquina do desenvolvedor para acessar remotamente a máquina ou o cluster entre camadas. Essa configuração é conveniente se você planeja criar mais de duas camadas de rede. Caso contrário, você pode conectar a máquina jumpbox à rede de nível 4.
- Crie grupos de segurança de rede para cada nível e anexe à sub-rede de acordo.
- Você pode usar o valor padrão para o grupo de segurança de nível 4.
- Você precisa configurar regras adicionais de entrada e saída para o grupo de segurança de nível 3 (e nível inferior).
- Adicione regras de segurança de entrada e saída para negar todo o tráfego de rede.
- Com uma prioridade mais alta, adicione regras de segurança de entrada e saída para permitir o tráfego de rede de e para o intervalo de IP da sub-rede de nível 4.
- [Opcional] Se você criar uma sub-rede jumpbox , crie regras de entrada e saída para permitir o tráfego de e para essa sub-rede.
- Crie VMs Linux no nível 3 e nível 4.
- Consulte os ambientes suportados para obter a especificação da VM.
- Ao criar a VM, conecte a máquina à sub-rede criada nas etapas anteriores.
- Ignore a criação do grupo de segurança para VM.
Configurar DNS personalizado
É necessário um DNS personalizado para o nível 3 e inferior. Ele garante que a resolução DNS para o tráfego de rede originado no cluster seja apontada para a instância de Gerenciamento de Rede em Camadas de nível pai. Em um ambiente existente ou de produção, incorpore as seguintes resoluções DNS em seu design DNS. Se quiser configurar um ambiente de teste para o serviço de Gerenciamento de Rede em Camadas e as Operações do Azure IoT, consulte os exemplos a seguir.
Configurar CoreDNS
Embora a configuração do DNS possa ser obtida de muitas maneiras diferentes, este exemplo usa um mecanismo de extensão fornecido pelo CoreDNS que é o servidor DNS padrão para clusters K3S. Os URLs na lista de permissões, que precisam ser resolvidos, são adicionados ao CoreDNS.
Importante
A abordagem CoreDNS só é aplicável ao cluster K3S no host Ubuntu no nível 3.
Criar configmap a partir do nível 4 Gerenciamento de rede em camadas
Depois que o cluster de nível 4 e o Gerenciamento de Rede em Camadas estiverem prontos, execute as etapas a seguir.
Confirme o endereço IP do serviço de Gerenciamento de Rede em Camadas com o seguinte comando:
kubectl get services -n azure-iot-operations
A saída deve ser semelhante à seguinte. O endereço IP do serviço é
20.81.111.118
.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE lnm-level4 LoadBalancer 10.0.141.101 20.81.111.118 80:30960/TCP,443:31214/TCP 29s
Veja os mapas de configuração com o seguinte comando:
kubectl get cm -n azure-iot-operations
A saída deve ser semelhante ao exemplo a seguir:
NAME DATA AGE aio-lnm-level4-config 1 50s aio-lnm-level4-client-config 1 50s
Personalize o
aio-lnm-level4-client-config
arquivo . Essa configuração é necessária como parte da configuração de nível 3 para encaminhar o tráfego do cluster de nível 3 para a instância de Gerenciamento de Rede em Camadas de nível superior.# set the env var PARENT_IP_ADDR to the ip address of level 4 LNM instance. export PARENT_IP_ADDR="20.81.111.118" # run the script to generate a config map yaml kubectl get cm aio-lnm-level4-client-config -n azure-iot-operations -o yaml | yq eval '.metadata = {"name": "coredns-custom", "namespace": "kube-system"}' -| sed 's/PARENT_IP/'"$PARENT_IP_ADDR"'/' > configmap-custom-level4.yaml
Esta etapa cria um arquivo chamado
configmap-custom-level4.yaml
Configurar CoreDNS de nível 3 do K3S
Depois de configurar o cluster K3S e movê-lo para a camada isolada de nível 3, configure o CoreDNS do K3S de nível 3 com a configuração de cliente personalizada que foi gerada anteriormente.
Copie o
configmap-custom-level4.yaml
para o host de nível 3 ou para o sistema onde você está acessando remotamente o cluster.Execute os seguintes comandos:
# Create a config map called coredns-custom in the kube-system namespace kubectl apply -f configmap-custom-level4.yaml # Restart coredns kubectl rollout restart deployment/coredns -n kube-system # validate DNS resolution kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- nslookup east.servicebus.windows.net # You should see the following output. kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- nslookup east.servicebus.windows.net Server: 10.43.0.10 Address 1: 10.43.0.10 kube-dns.kube-system.svc.cluster.local Name: east.servicebus.windows.net Address 1: 20.81.111.118 pod "busybox" deleted # Note: confirm that the resolved ip address matches the ip address of the level 4 Layered Network Management instance.
A etapa anterior define a configuração de DNS para resolver as URLs permitidas dentro do cluster para o nível 4. Para garantir que o DNS fora do cluster esteja fazendo o mesmo, você precisa configurar o systemd-resolved para encaminhar o tráfego para CoreDNS dentro do cluster K3S. Execute os seguintes comandos no host K3S: Crie o seguinte diretório:
sudo mkdir /etc/systemd/resolved.conf.d
Crie um arquivo nomeado
lnm.conf
com o seguinte conteúdo. O endereço IP deve ser o endereço IP do cluster de nível 3 do serviço kube-dns que está sendo executado no namespace kube-system.[Resolve] DNS=<PUT KUBE-DNS SERVICE IP HERE> DNSStubListener=no
Reinicie o resolvedor de DNS:
sudo systemctl restart systemd-resolved