Partilhar via


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.

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

  1. Ubuntu 22.04 LTS é a versão recomendada para a máquina host.

  2. Instale o Helm 3.8.0 ou posterior.

  3. Instale o Kubectl.

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

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

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

  1. 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
    
  2. Defina variáveis de ambiente para as etapas de configuração. Substitua valores por <> valores válidos ou nomes de sua escolha. Os CLUSTER_NAME e RESOURCE_GROUP são criados com base nos nomes fornecidos. Consulte as regiões suportadas pelas Operações IoT do Azure para escolher o LOCATION.

    # 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>"
    
  3. Defina o contexto da assinatura do Azure para todos os comandos:

    az account set -s $SUBSCRIPTION_ID
    
  4. 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"
    
  5. 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
    
  6. 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

  1. 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
    
  2. 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.

  1. 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
    
  2. Crie o recurso personalizado para criar uma instância de gerenciamento de rede em camadas.

    kubectl apply -f lnm-cr.yaml
    
  3. 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.