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.
Configure
kubectl
para gerenciar seu cluster do AKS do jumpbox seguindo as etapas em Conectar ao cluster.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
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
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
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.
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
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
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
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.
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
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.
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.
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 paraconfig
. 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.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.
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.
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 .... ....
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
- Para entender como configurar um cluster em uma rede isolada para que as operações do Azure IoT sejam implantadas, consulte Configurar o serviço de Gerenciamento de Rede em Camadas para habilitar a versão prévia das operações do Azure IoT em uma rede isolada
- Para obter mais detalhes sobre a configuração de ambientes de rede abrangentes para cenários relacionados às Operações de IoT do Azure, veja Criar ambiente de rede de exemplo