Compartilhar via


Início Rápido: Configurar a versão prévia do gerenciamento de rede em camadas do Azure IoT para habilitar um cluster no ambiente do Azure

Nesse início rápido, você configura a versão prévia do gerenciamento de rede em camadas do Azure IoT em uma rede Purdue de nível 4 e nível 3. O nível de rede 4 tem acesso à Internet e o nível 3 não. Você configura o gerenciamento de rede em camadas para rotear o tráfego de rede do nível 3 para o Azure. Finalmente, você pode habilitar o Arc do cluster K3S no nível 3, mesmo que ele não esteja diretamente conectado à Internet.

  • Colocar um cluster do AKS no nível 4 com o Gerenciamento de Rede em Camadas implantado.
  • O Nível 3 é um cluster K3S em execução em uma VM do 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. Todo o acesso restante de saída está desabilitado.

A arquitetura do Gerenciamento de Rede em Camadas requer a configuração de DNS na rede de nível 3, em que os URLs na lista de permitidos são redirecionados para a rede de nível 4. Nesse exemplo, essa instalação é realizada usando uma instalação automatizada criada no CoreDNS, o mecanismo de resolução DNS padrão que é 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 Arc para o cluster de nível filho.

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

Implantar a versão prévia do gerenciamento de rede em camadas no cluster AKS

Essas etapas implantam o Gerenciamento de Rede em Camadas para o cluster do AKS. O cluster é a camada superior no modelo ISA-95. No final dessa seção, você terá uma instância do Gerenciamento de Rede em Camadas pronta para aceitar o tráfego do cluster habilitado para Azure Arc abaixo e que oferece suporte à implantação do serviço de Operações do Azure IoT.

  1. Configure kubectl para gerenciar seu cluster do AKS do jumpbox seguindo as etapas em Conectar ao cluster.

  2. Instale o operador do 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 se a instalação foi bem-sucedida, execute:

    kubectl get pods
    

    Você verá um resultado parecido 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 do 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 se baseia no número de réplicas no recurso personalizado.

  6. Para validar a instância, execute:

    kubectl get pods
    

    A saída deve ser assim:

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

Prepare 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 Azure Linux Ubuntu 22.04.3 LTS com acesso à Internet e habilitar o ssh no seu jumpbox.

Dica

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

  1. Na VM do 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 tráfego somente 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 tela das regras de saída do grupo de segurança de rede.

Provisione o cluster em camada isolada para Arc

Com as etapas a seguir, você habilita o Arc do cluster de nível 3 usando a instância de gerenciamento de rede em camadas no nível 4.

  1. Configure o jumpbox para que kubectl acesso ao cluster.

    Gere o arquivo de configuração na VM do Linux.

    k3s kubectl config view --raw > config.level3
    

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

  2. Consulte Configurar o CoreDNS para usar mecanismos de extensão fornecidos pelo CoreDNS (o servidor DNS padrão para clusters K3S) para adicionar os URLs na lista de permissões.

  3. Execute os comandos a seguir em seu jumpbox para conectar o cluster ao Arc. Essa etapa exige a CLI do Azure. Instale 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 Início rápido: conectar um cluster do Kubernetes existente ao Azure Arc.

  4. Por exemplo, você deve ver um resultado como o seguinte exemplo:

    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. O cluster do 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. Esse início rápido é para mostrar a capacidade do Gerenciamento de Rede em Camadas para habilitar o Arc para seu cluster do Kubernetes. Agora você pode testar as experiências internas do Arc nesse cluster dentro da rede isolada.

Próximas etapas