Configurar o Gerenciamento de Rede em Camadas do Azure IoT (visualização) no cluster de nível 4
O Gerenciamento de Rede em Camadas do Azure IoT (visualização) é um componente para dar suporte às Operações do Azure IoT. No entanto, ele precisa ser implantado individualmente na camada de rede superior para dar suporte às Operações do Azure IoT na camada inferior. No nível superior das camadas de rede (geralmente nível 4 da arquitetura de rede ISA-95), o cluster e o serviço de Gerenciamento de Rede em Camadas têm acesso direto à Internet. Quando a configuração estiver concluída, o serviço Gerenciamento de Rede em Camadas (visualização) estará pronto para receber tráfego de rede da camada filho e o encaminhará para o Azure Arc.
Pré-requisitos
Atenda aos seguintes requisitos mínimos para implantar o Gerenciamento de Rede em Camadas individualmente no sistema.
- Cluster conectado ao arco do AKS Edge Essentials - e categoria GitOps nos requisitos e matriz de suporte do AKS Edge Essentials
- Cluster - K3S Kubernetes Requisitos de sistema do Kubernetes habilitado para Azure Arc
Configurar o cluster do Kubernetes no Nível 4
Para configurar apenas o Gerenciamento de Rede em Camadas, os pré-requisitos são mais simples do que uma implantação do Azure IoT Operations. É opcional cumprir os requisitos gerais para as Operações IoT do Azure em Preparar seu cluster Kubernetes.
As etapas a seguir para configurar o AKS Edge Essentials e o cluster K3S Kubernetes são verificadas pela Microsoft.
Prepare uma máquina Ubuntu
Ubuntu 22.04 LTS é a versão recomendada para a máquina host.
Instale o Helm 3.8.0 ou posterior.
Instale o Kubectl.
Instale a CLI do Azure. Você pode instalar a CLI do Azure diretamente na máquina de nível 4 ou em outro desenvolvedor ou máquina de jumpbox se planeja acessar o cluster de nível 3 remotamente. Se você optar por acessar o cluster Kubernetes remotamente para manter o host do cluster limpo, execute os comandos relacionados a kubectl e az" da máquina do desenvolvedor para o restante das etapas deste artigo.
Instalar a CLI do Azure. Siga as etapas em Instalar a CLI do Azure no Linux.
Instale connectedk8s e outras extensões.
az extension add --name connectedk8s az extension add --name k8s-extension
Criar o cluster K3S
Instale o K3S com o seguinte comando:
curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
Consulte o guia de início rápido do K3s para obter mais detalhes.
Importante
Certifique-se de usar o parâmetro para desativar o
--disable=traefik
traefik. Caso contrário, você pode ter um problema ao tentar alocar IP público para o serviço de gerenciamento de rede em camadas em etapas posteriores.Copie o arquivo yaml de configuração do K3s para
.kube/config
.mkdir ~/.kube cp ~/.kube/config ~/.kube/config.back sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged mv ~/.kube/merged ~/.kube/config chmod 0600 ~/.kube/config export KUBECONFIG=~/.kube/config #switch to k3s context kubectl config use-context default
Arc habilitar o cluster
Entre com a CLI do Azure. Para evitar problemas de permissão mais tarde, é importante que você entre interativamente usando uma janela do navegador:
az login
Defina variáveis de ambiente para as etapas de configuração. Substitua valores por
<>
valores válidos ou nomes de sua escolha. OsCLUSTER_NAME
eRESOURCE_GROUP
são criados com base nos nomes fornecidos. Consulte as regiões suportadas pelas Operações IoT do Azure para escolher oLOCATION
.# Id of the subscription where your resource group and Arc-enabled cluster will be created $SUBSCRIPTION_ID = "<subscription-id>" # Azure region where the created resource group will be located $LOCATION = "<region>" # Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources $RESOURCE_GROUP = "<resource-group-name>" # Name of the Arc-enabled cluster to create in your resource group $CLUSTER_NAME = "<cluster-name>"
Defina o contexto da assinatura do Azure para todos os comandos:
az account set -s $SUBSCRIPTION_ID
Registe os fornecedores de recursos necessários na sua subscrição:
Nota
Esta etapa só precisa ser executada uma vez por assinatura. Para registrar provedores de recursos, você precisa de permissão para fazer a
/register/action
operação, que está incluída nas funções de Colaborador e Proprietário da assinatura. Para obter mais informações, consulte Tipos e provedores de recursos do Azure.az provider register -n "Microsoft.ExtendedLocation" az provider register -n "Microsoft.Kubernetes" az provider register -n "Microsoft.KubernetesConfiguration"
Use o comando az group create para criar um grupo de recursos em sua assinatura do Azure para armazenar todos os recursos:
az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Use o comando az connectedk8s connect para habilitar o cluster do Kubernetes e gerenciá-lo no grupo de recursos criado na etapa anterior:
az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
Implantar o Serviço de Gerenciamento de Rede em Camadas no cluster
Depois que o cluster Kubernetes estiver habilitado para Arc, você poderá implantar o serviço Gerenciamento de Rede em Camadas no cluster.
Instalar o operador de gerenciamento de rede em camadas
Execute o seguinte comando. Substitua os espaços reservados
<RESOURCE GROUP>
e<CLUSTER NAME>
as informações de integração do Arc de uma etapa anterior.az login az k8s-extension create --resource-group <RESOURCE GROUP> --name kind-lnm-extension --cluster-type connectedClusters --cluster-name <CLUSTER NAME> --auto-upgrade false --extension-type Microsoft.IoTOperations.LayeredNetworkManagement --version 0.1.0-preview --release-train preview
Use o comando kubectl para verificar se o operador de Gerenciamento de Rede em Camadas está em execução.
kubectl get pods
NAME READY STATUS RESTARTS AGE azedge-lnm-operator-598cc495c-5428j 1/1 Running 0 28h
Configurar o Serviço de Gerenciamento de Rede em Camadas
Crie o recurso personalizado Gerenciamento de rede em camadas.
Crie um
lnm-cr.yaml
arquivo conforme especificado:- Para depuração ou experimentação, você pode alterar o valor do parâmetro loglevel para depurar.
- Para obter mais detalhes sobre os pontos de extremidade, consulte Pontos de extremidade do Azure IoT Operations.
apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1 kind: Lnm metadata: name: level4 namespace: default spec: image: pullPolicy: IfNotPresent repository: mcr.microsoft.com/oss/envoyproxy/envoy-distroless tag: v1.27.0 replicas: 1 logLevel: "debug" openTelemetryMetricsCollectorAddr: "http://aio-otel-collector.azure-iot-operations.svc.cluster.local:4317" level: 4 allowList: enableArcDomains: true domains: - destinationUrl: "management.azure.com" destinationType: external - destinationUrl: "*.dp.kubernetesconfiguration.azure.com" destinationType: external - destinationUrl: "login.microsoftonline.com" destinationType: external - destinationUrl: "*.login.microsoft.com" destinationType: external - destinationUrl: "login.windows.net" destinationType: external - destinationUrl: "mcr.microsoft.com" destinationType: external - destinationUrl: "*.data.mcr.microsoft.com" destinationType: external - destinationUrl: "gbl.his.arc.azure.com" destinationType: external - destinationUrl: "*.his.arc.azure.com" destinationType: external - destinationUrl: "k8connecthelm.azureedge.net" destinationType: external - destinationUrl: "guestnotificationservice.azure.com" destinationType: external - destinationUrl: "*.guestnotificationservice.azure.com" destinationType: external - destinationUrl: "sts.windows.net" destinationType: external - destinationUrl: "k8sconnectcsp.azureedge.net" destinationType: external - destinationUrl: "*.servicebus.windows.net" destinationType: external - destinationUrl: "graph.microsoft.com" destinationType: external - destinationUrl: "*.arc.azure.net" destinationType: external - destinationUrl: "*.obo.arc.azure.com" destinationType: external - destinationUrl: "linuxgeneva-microsoft.azurecr.io" destinationType: external - destinationUrl: "graph.windows.net" destinationType: external - destinationUrl: "*.azurecr.io" destinationType: external - destinationUrl: "*.blob.core.windows.net" destinationType: external - destinationUrl: "*.vault.azure.net" destinationType: external - destinationUrl: "*.blob.storage.azure.net" destinationType: external sourceIpRange: - addressPrefix: "0.0.0.0" prefixLen: 0
Crie o recurso personalizado para criar uma instância de gerenciamento de rede em camadas.
kubectl apply -f lnm-cr.yaml
Veja o serviço Kubernetes de Gerenciamento de Rede em Camadas:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE lnm-level-4 LoadBalancer 10.43.91.54 192.168.0.4 80:30530/TCP,443:31117/TCP,10000:31914/TCP 95s
Adicionar configuração iptables para o AKS Edge Essentials
Importante
Esta etapa é aplicável somente ao hospedar o Gerenciamento de Rede em Camadas em um cluster do AKS Edge Essentials.
A implantação do Gerenciamento de Rede em Camadas cria um serviço Kubernetes do tipo LoadBalancer. Para garantir que o serviço seja acessível de fora do cluster Kubernetes, você precisa mapear as portas do host Windows subjacente para as portas apropriadas no serviço Gerenciamento de Rede em Camadas.
netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=192.168.0.4
netsh interface portproxy add v4tov4 listenport=10000 listenaddress=0.0.0.0 connectport=10000 connectaddress=192.168.0.4
Depois que esses comandos são executados com êxito, o tráfego recebido nas portas 443 e 10000 no host Windows é roteado para o serviço Kubernetes. Ao configurar o DNS personalizado para a camada de rede de nível filho, você direciona o tráfego de rede para o IP desse host Windows e, em seguida, para o serviço de Gerenciamento de Rede em Camadas em execução nele.