Prepara um cluster para Operações IoT do Azure

Um cluster Kubernetes habilitado para Azure Arc é um pré-requisito para implementar o Operações IoT do Azure. Este artigo descreve como preparar esse cluster, com orientações para Ubuntu, Windows, Azure Local e vSphere Kubernetes Service (VKS).

Se quiseres implementar Operações IoT do Azure rapidamente e executar uma carga de trabalho de exemplo num ambiente de teste, vê o Quickstart: Executa Operações IoT do Azure em GitHub Codespaces com K3s.

Pré-requisitos

Para implementações com vários nós, use K3s no Ubuntu, AKS no Azure Local ou vSphere Kubernetes Service (VKS). O Fundamentos do Edge AKS no Windows suporta apenas implementações de um único nó.

Para preparar um cluster Kubernetes habilitado pelo Azure Arc, é necessário o seguinte:

  • Uma subscrição Azure com as funções Proprietário ou uma combinação de Contribuidor e Administrador de Acesso ao Utilizador. Pode verificar o seu nível de acesso navegando até à sua subscrição, selecionando controlo de acesso (IAM) no lado esquerdo do portal Azure e depois selecionando Ver o meu acesso. Se não tiver uma subscrição Azure, crie uma gratuitamente antes de começar.

  • O CLI do Azure instalado na sua máquina de desenvolvimento. Consulte as extensões disponíveis do CLI do Azure para a versão mínima exigida para a extensão connectedk8s. Utilize az --version para verificar a sua versão e az upgrade para atualizar, se necessário. Para mais informações, consulte Instale o CLI do Azure.

  • A extensão connectedk8s para a CLI do Azure. Use o seguinte comando para adicionar a extensão ou atualizá-la para a versão mais recente:

    az extension add --upgrade --name connectedk8s
    
  • Um grupo de recursos Azure. Apenas uma instância do Operações IoT do Azure é suportada por grupo de recursos. Para criar um novo grupo de recursos, use o comando az group create . Para a lista de regiões Azure atualmente suportadas, veja Regiões suportadas.

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

Os CLI do Azure exemplos deste artigo usam variáveis de ambiente para que possas definir cada valor uma vez e depois copiar e colar os comandos as-is. Se estiver a usar o ambiente Operações IoT do Azure Codespaces do quickstart, estas variáveis já estão definidas para si e pode saltar este passo. Caso contrário, defina as seguintes variáveis de ambiente no seu shell antes de executar os comandos.

Os seguintes scripts definem as variáveis de ambiente mais usadas:

Variável de ambiente Description
SUBSCRIPTION_ID O ID da subscrição que contém a sua instância Operações IoT do Azure.
RESOURCE_GROUP O nome do grupo de recursos que contém a sua instância do Operações IoT do Azure.
AIO_INSTANCE_NAME O nome da sua instância do Operações IoT do Azure. Para listar as suas instâncias, execute az iot ops list -o table.
CLUSTER_NAME O nome do cluster Kubernetes com Azure Arc que hospeda a sua instância.
LOCATION A região do Azure deve ser usada para novos recursos, por exemplo eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Só precisa de definir as variáveis que este artigo utiliza. Este artigo pode usar variáveis adicionais de ambiente para nomes de recursos que escolher. O artigo explica como posicioná-los onde são apresentados.

Criar e habilitar um cluster para Arc

Esta secção fornece passos para criar clusters em ambientes validados no Ubuntu, Windows, Azure Local e vSphere Kubernetes Service (VKS).

Para preparar um cluster K3s Kubernetes no Ubuntu:

  1. Crie um cluster K3s de nó único ou de vários nós. Para exemplos, consulte o guia de início rápido do K3s ou projetos relacionados ao K3s.

  2. Verifique se o K3s está instalado kubectl. Caso contrário, siga as instruções para Instalar o kubectl no Linux.

    kubectl version --client
    
  3. Siga as instruções para instalar o Helm.

  4. Crie um ficheiro YAML de configuração K3s em .kube/config:

    mkdir ~/.kube
    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
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml
    
  5. Execute o seguinte comando para aumentar os limites de observação/instância do usuário.

    echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  6. Para um melhor desempenho, aumente o limite do descritor de ficheiros:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

Ative o Arc no seu cluster K3s

Ligue o seu cluster ao Azure Arc para o poder gerir remotamente.

  1. Num computador que tenha kubectl acesso ao seu cluster, inicie sessão na CLI do Azure com a sua conta de utilizador do Microsoft Entra que tenha as funções necessárias para a subscrição do Azure:

    az login
    

    Se em algum momento receber uma mensagem de erro a dizer O seu dispositivo tem de ser gerido para aceder ao seu recurso, execute novamente az login e certifique-se de que inicia sessão de forma interativa através de um navegador.

  2. Depois de iniciar sessão, a CLI do Azure mostra todas as suas subscrições e indica a sua subscrição padrão com um asterisco*. Para continuar com sua assinatura padrão, selecione Enter. Caso contrário, escreva o número da subscrição do Azure que pretende usar.

  3. Registe os fornecedores de recursos necessários na sua subscrição.

    Observação

    Precisa de executar este passo apenas uma vez por subscrição. Para registar fornecedores de recursos, é necessário permissão para realizar a /register/action operação, que inclui os papéis de Contribuidor e Proprietário por subscrição. Para mais informações, consulte Azure fornecedores e tipos de recursos.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    az provider register -n "Microsoft.SecretSyncController"
    
  4. Use o comando az connectedk8s connect para ativar o seu cluster Kubernetes com o Arc e geri-lo como parte do seu grupo de recursos Azure.

    az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
    

    Para evitar atualizações não planeadas do Azure Arc e das extensões do sistema Arc que o Operações IoT do Azure usa como dependências, este comando desativa o autoupgrade. Em vez disso, atualize manualmente os agentes conforme necessário.

    Importante

    Se o seu ambiente usar um servidor proxy ou Azure Arc Gateway, modifique o comando az connectedk8s connect com a informação do proxy:

    1. Siga as instruções em Ligar-se usando um servidor proxy outbound ou Integrar clusters Kubernetes em Azure Arc com Azure Arc Gateway.
    2. Adicione 169.254.169.254 ao --proxy-skip-range parâmetro do az connectedk8s connect comando. Azure Device Registry utiliza este endpoint local para obter tokens de acesso para autorização.

    O Operações IoT do Azure não suporta servidores proxy que exijam um certificado de confiança.

  5. Obtenha a URL do emissor do cluster.

    az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
    

    Salve a saída deste comando para usar nas próximas etapas.

  6. Cria um ficheiro de configuração do K3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Adicione o seguinte conteúdo ao arquivo config.yaml, substituindo o marcador de posição <SERVICE_ACCOUNT_ISSUER> pela URL do emissor do cluster.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Salve o arquivo e saia do editor nano.

  9. Prepare-se para ativar o serviço Azure Arc, localização personalizada, no seu cluster Arc, obtendo o ID do objeto de localização personalizado e guardando-o como variável de ambiente, OBJECT_ID. Tem de iniciar sessão no CLI do Azure com uma conta de utilizador do Microsoft Entra, e não com um principal de serviço, para executar o comando com êxito. Execute o seguinte comando exatamente como escrito, sem alterar o valor do GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    

    Observação

    Se receberes o erro: "Não é possível obter o oid da aplicação 'custom-locations'. Prosseguindo sem ativar o recurso. Privilégios insuficientes para concluir a operação", então sua entidade de serviço pode não ter as permissões necessárias para recuperar a ID do objeto do local personalizado. Inicie sessão no CLI do Azure com uma conta de utilizador Microsoft Entra que cumpra os pré-requisitos. Para obter mais informações, consulte Criar e gerenciar locais personalizados.

  10. Use o comando az connectedk8s enable-features para habilitar o recurso de localização personalizada em seu cluster Arc. Este comando usa a variável de ambiente OBJECT_ID que guardaste no passo anterior para definir o valor do parâmetro custom-locations-oid. Execute este comando na máquina onde você implantou o cluster Kubernetes:

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    
  11. Reinicie o K3s.

    systemctl restart k3s
    

Configure o Azure Container Storage ativado pelo Azure Arc

Funcionalidades como o fluxo de dados de armazenamento local, endpoints de armazenamento local e o conector de mídia utilizam opcionalmente o Azure Container Storage habilitado pelo Azure Arc (ACSA) para sincronizar dados locais com a cloud. O ACSA não está instalado como parte do Operações IoT do Azure, por isso deve instalá-lo separadamente.

Para aprender a instalar o ACSA no seu cluster Kubernetes:

Próximos passos

Agora que tem um cluster Kubernetes com Azure Arc, pode implementar o Operações IoT do Azure.