Partilhar via


Guia de início rápido: configurar o Gerenciamento de Rede em Camadas do Azure IoT (visualização) para habilitar um cluster no ambiente do Azure

Neste início rápido, você configura o Gerenciamento de Rede em Camadas do Azure IoT (visualização) em uma rede Purdue de nível 4 e nível 3. O nível 4 da rede tem acesso à Internet e o nível 3 não. Você configura o Gerenciamento de Rede em Camadas (visualização) para rotear o tráfego de rede do nível 3 para o Azure. Finalmente, você pode ativar o cluster K3S no nível 3, mesmo que ele não esteja diretamente conectado à internet.

  • Nível 4 um cluster AKS com Gerenciamento de Rede em Camadas implantado.
  • O nível 3 é um cluster K3S em execução em uma VM Linux que usa a instância de Gerenciamento de Rede em Camadas no nível 4 para obter conexão com o Azure. A rede de nível 3 está configurada para ter acesso de saída à rede de nível 4 nas portas 443 e 8084. Todos os outros acessos de saída estão desativados.

A arquitetura de Gerenciamento de Rede em Camadas requer configuração de DNS na rede de nível 3, onde as URLs permitidas são redirecionadas para a rede de nível 4. Neste exemplo, essa configuração é realizada usando uma configuração automatizada criada no CoreDNS, o mecanismo de resolução de DNS padrão fornecido com o k3s.

Pré-requisitos

Esses pré-requisitos são apenas para implantar o Gerenciamento de Rede em Camadas de forma independente e habilitar o cluster de nível filho para Arc.

  • Um cluster AKS
  • Uma máquina virtual Azure Linux Ubuntu 22.04.3 LTS
  • Uma jumpbox ou máquina de configuração que tem acesso à internet e às redes de nível 3 e nível 4

Implantar o Gerenciamento de Rede em Camadas (visualização) no cluster AKS

Estas etapas implantam o Gerenciamento de Rede em Camadas no cluster AKS. O cluster é a camada superior no modelo ISA-95. No final desta seção, você tem uma instância do Gerenciamento de Rede em Camadas que está pronta para aceitar o tráfego do cluster habilitado para Arco do Azure abaixo e dar suporte à implantação do serviço Azure IoT Operations.

  1. Configure kubectl para gerir o cluster AKS a partir da sua jumpbox seguindo os passos em Ligar ao cluster.

  2. Instale o operador de Gerenciamento de Rede em Camadas com o seguinte comando da CLI do Azure:

    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
    
  3. Para validar que a instalação foi bem-sucedida, execute:

    kubectl get pods
    

    Você verá uma saída parecida com o exemplo a seguir:

    NAME                                READY   STATUS        RESTARTS   AGE
    aio-lnm-operator-7db49dc9fd-kjf5x   1/1     Running       0          78s
    
  4. Crie o recurso personalizado Gerenciamento de rede em camadas criando um arquivo chamado level4.yaml com o seguinte conteúdo:

    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
    
  5. Para criar a instância de Gerenciamento de Rede em Camadas com base no arquivo level4.yaml , execute:

    kubectl apply -f level4.yaml
    

    Esta etapa cria n pods, um serviço e dois mapas de configuração. n é baseado no número de réplicas no recurso personalizado.

  6. Para validar a instância, execute:

    kubectl get pods
    

    A saída deve ser semelhante a:

    NAME                                    READY       STATUS    RESTARTS       AGE
    aio-lnm-operator-7db49dc9fd-kjf5x       1/1         Running       0          78s
    aio-lnm-level4-7598574bf-2lgss          1/1         Running       0          4s
    
  7. Para visualizar o serviço, execute:

    kubectl get services
    

    A saída deve ser semelhante ao exemplo a seguir:

    NAME              TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    aio-lnm-level4    LoadBalancer   10.0.141.101   20.81.111.118   80:30960/TCP,443:31214/TCP   29s
    
  8. Para visualizar os mapas de configuração, execute:

    kubectl get cm
    

    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
    
  9. Neste exemplo, a instância de Gerenciamento de Rede em Camadas está pronta para aceitar tráfego no IP 20.81.111.118externo.

Preparar o cluster de nível 3

No nível 3, você cria um cluster K3S Kubernetes em uma máquina virtual Linux. Para simplificar a configuração do cluster, você pode criar a VM do Azure Linux Ubuntu 22.04.3 LTS com acesso à Internet e habilitar o ssh a partir de sua jumpbox.

Gorjeta

Num cenário mais realista que inicia a configuração em rede isolada, pode preparar a máquina com a imagem pré-construída para a sua solução ou a abordagem Air-Gap Install do K3S.

  1. Na VM Linux, instale e configure o K3S usando os seguintes comandos:

    curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
    
  2. Configure o isolamento de rede para o nível 3. Use as etapas a seguir para configurar o cluster de nível 3 para enviar apenas tráfego para o Gerenciamento de Rede em Camadas no nível 4.

    • Navegue até o grupo de segurança de rede da interface de rede da VM.
    • Adicione uma regra de segurança de saída extra para negar todo o tráfego de saída da máquina virtual de nível 3.
    • Adicione outra regra de saída com a prioridade mais alta para permitir a saída para o IP do cluster AKS de nível 4 nas portas 443 e 8084.

    Captura de ecrã das regras de saída do grupo de segurança de rede.

Provisionar o cluster em camada isolada para Arc

Com as etapas a seguir, você habilita o cluster de nível 3 usando a instância de Gerenciamento de Rede em Camadas no nível 4.

  1. Configure a jumpbox para ter acesso kubectl ao cluster.

    Gere o arquivo de configuração em sua VM Linux.

    k3s kubectl config view --raw > config.level3
    

    Na sua jumpbox, configure o acesso kubectl ao cluster k3s de nível 3 copiando o config.level3 arquivo para o ~/.kube diretório e renomeie-o para config. A entrada do servidor no arquivo de configuração deve ser definida como o endereço IP ou nome de domínio da VM de nível 3.

  2. Consulte Configurar CoreDNS para usar mecanismos de extensão fornecidos pelo CoreDNS (o servidor DNS padrão para clusters K3S) para adicionar as URLs permitidas.

  3. Execute os seguintes comandos na sua jumpbox para conectar o cluster ao Arc. Esta etapa requer a CLI do Azure. Instale a Az CLI, se necessário.

    az login
    az account set --subscription <your Azure subscription ID>
    
    az connectedk8s connect -g <your resource group name> -n <your connected cluster name>
    

    Para obter mais informações sobre connectedk8s, consulte Guia de início rápido: conectar um cluster Kubernetes existente ao Azure Arc .

  4. Você deve ver a saída como o exemplo a seguir:

    This operation might take a while...
    
    The required pre-checks for onboarding have succeeded.
    Azure resource provisioning has begun.
    Azure resource provisioning has finished.
    Starting to install Azure arc agents on the Kubernetes cluster.
    {
      "agentPublicKeyCertificate": "MIICCgKCAgEAmU+Pc55pc3sOE2Jo5JbAdk+2OprUziCbgfGRFfbMHO4dT7A7LDaDk7tWwvz5KwUt66eMrabI7M52H8xXvy1j7YwsMwR5TaSeHpgrUe1/4XNYKa6SN2NbpXIXA3w4aHgtKzENm907rYMgTO9gBJEZNJpqsfCdb3E7AHWQabUe9y9T8aub+arBHLQ3furGkv8JnN2LCPbvLnmeLfc1J5
      ....
      ....
    
  5. Seu cluster Kubernetes agora está habilitado para Arc e está listado no grupo de recursos fornecido no comando az connectedk8s connect. Você também pode validar o provisionamento desse cluster por meio do portal do Azure. Este guia de início rápido serve para mostrar a capacidade do Gerenciamento de Rede em Camadas para habilitar o Arc para seu cluster Kubernetes. Agora você pode experimentar as experiências Arc integradas neste cluster dentro da rede isolada.

Próximos passos