Краткое руководство. Запуск Операции Интернета вещей Azure в пространствах кода GitHub с помощью K3s

В этом кратком руководстве вы развернете Операции Интернета вещей Azure в кластере Kubernetes с поддержкой Azure Arc, чтобы вы могли удаленно управлять устройствами и рабочими нагрузками. В конце быстрого старта у вас есть кластер, который можно управлять из облака. Остальные краткие руководства в этой комплексной серии основываются на нем, чтобы определить примеры ресурсов, конвейеры обработки данных и визуализации.

Прежде чем начать

Эта серия кратких руководств поможет вам приступить к работе с Операции Интернета вещей Azure как можно быстрее, чтобы вы могли оценить комплексный сценарий. В настоящей среде разработки или рабочей среде несколько команд, работающих вместе, выполняют эти задачи, и некоторые из них могут потребовать повышенных разрешений.

Для лучшего опыта новых пользователей мы рекомендуем использовать бесплатную учетную запись Azure, чтобы у вас были права владельца на ресурсы в этих кратких руководствах.

Мы используем GitHub Codespaces в качестве виртуальной среды для этого быстрого старта, чтобы вы могли протестировать сценарий без установки новых средств на собственных машинах. Однако если вы хотите развернуть операции Azure IoT в локальном кластере под управлением Ubuntu или на службе Azure Kubernetes (AKS), см. раздел Подготовка кластера Kubernetes с поддержкой Azure Arc.

Внимание

Пространства разработки легко и быстро настроить и затем отключить, но они не подходят для рабочей среды, оценки производительности или тестирования масштабности. Используйте GitHub пространства кода только для изучения.

Среда Codespaces достаточно для выполнения шагов быстрого запуска, но не поддерживает расширенные конфигурации, такие как безопасные параметры. См. эти сценарии в GitHub для развертывания в продакшн с безопасными настройками.

Требуемые условия

Перед началом работы подготовьте следующие предварительные требования:

  • Подписка Azure. Если у вас нет подписки Azure, создайте её бесплатно прежде чем начать.

  • Учетная запись GitHub.

  • Visual Studio Code установлен на разработческом компьютере. Дополнительные сведения см. в разделе Download Visual Studio Code.

  • Майкрософт.Authorization/roleAssignments/write разрешения на уровне группы ресурсов.

Какая проблема будет решена?

Операции Интернета вещей Azure — это набор служб данных, работающих в кластерах Kubernetes. Эти кластеры будут управляться удаленно из облака и безопасно взаимодействовать с облачными ресурсами и конечными точками. Мы рассматриваем эти проблемы с помощью следующих задач в этой инструкции по быстрому запуску.

  1. Создайте кластер Kubernetes в GitHub Codespaces.
  2. Подключите кластер к Azure Arc для удаленного управления.
  3. Создайте реестр схем.
  4. Разверните Операции Интернета вещей Azure в кластере.

Создание кластера

В этом разделе описано, как создать новый кластер. Если вы хотите повторно использовать кластер, развернутый Операции Интернета вещей Azure ранее, перейдите к инструкциям, описанным в разделе Clean up resources, чтобы удалить Операции Интернета вещей Azure перед продолжением.

Пространство кода Azure-Samples/explore-iot-operations предварительно настроено следующим образом:

  • K3s работает в K3d для упрощенного кластера Kubernetes
  • Azure CLI
  • Kubectl для управления ресурсами Kubernetes
  • Другие полезные инструменты, такие как Helm и k9s

Чтобы создать пространство кода и кластер, выполните следующие действия.

  1. Создайте пространство кода в GitHub Codespaces.

    Создать пространство кода explore-iot-operations

  2. Укажите следующие рекомендуемые секреты для пространства кода:

    Параметр Значение
    ИДЕНТИФИКАТОР_ПОДПИСКИ Идентификатор подписки Azure.
    ГРУППА РЕСУРСОВ Имя новой группы ресурсов Azure, в которой будет создан кластер.
    МЕСТОПОЛОЖЕНИЕ Регион Azure рядом с вами. Список поддерживаемых регионов см. в разделе "Поддерживаемые регионы".

    Совет

    Значения, которые вы предоставляете в качестве секретов на этом шаге, сохраняются в вашей учетной записи GitHub, которая будет использоваться в этих и будущих пространствах кода. Они добавляются в качестве переменных среды в терминале пространства кода, и эти переменные среды можно использовать в командах CLI в следующем разделе.

    Кроме того, это пространство кода создает CLUSTER_NAME переменную среды, которая устанавливается с именем пространства кода.

  3. Выберите Создать новое кодовое пространство.

  4. Когда пространство кода будет готово, нажмите кнопку меню в левом верхнем углу, а затем нажмите кнопку "Открыть" в VS Code Desktop.

    Снимок экрана: открытие пространства кода в VS Code Desktop.

  5. При появлении запроса установите расширение GitHub Codespaces для Visual Studio Code и войдите в GitHub.

  6. В Visual Studio Code выберите View>Terminal.

    Используйте этот терминал для выполнения всех команд CLI для управления кластером.

Подключение кластера к Azure Arc

Чтобы подключить кластер к Azure Arc:

  1. В терминале codespace войдите в Azure CLI:

    az login
    

    Совет

    Если вы используете среду пространства кода GitHub в браузере, а не на рабочем столе VS Code, при выполнении az login возвращается ошибка localhost. Чтобы устранить ошибку, выполните следующие действия:

    • Откройте пространство кода в классическом приложении VS Code, а затем вернитесь в терминал браузера и повторно выполните команду az login.
    • Или после получения ошибки localhost в браузере скопируйте URL-адрес из браузера и запустите curl "<URL>" на новой вкладке терминала. Вы увидите ответ JSON с сообщением "Вы вошли в Microsoft Azure!"
  2. После входа Azure CLI отображает все подписки и указывает подписку по умолчанию со звездочкой *. Чтобы продолжить подписку по умолчанию, выберите Enter. В противном случае введите номер подписки Azure, которую вы хотите использовать.

  3. Зарегистрируйте необходимых поставщиков ресурсов в подписке:

    Совет

    Этот шаг необходимо выполнить только один раз для каждой подписки. Чтобы зарегистрировать поставщиков ресурсов, вам необходимо разрешение на выполнение операции /register/action, которая входит в роли сотрудника и владельца подписки. Дополнительные сведения см. в разделе Azure поставщики ресурсов и типы.

    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. Используйте команду createaz group create, чтобы создать группу ресурсов в подписке Azure для хранения всех ресурсов:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP
    
  5. Используйте команду az connectedk8s connect, чтобы включить кластер Kubernetes и управлять им как часть группы ресурсов Azure:

    az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
    

    Совет

    Значение $CLUSTER_NAME автоматически присваивается имени пространства кода. Замените переменную среды, если вы хотите использовать другое имя.

  6. Получите objectId приложения Microsoft Entra ID, которое служба Azure Arc использует в клиенте и сохраните ее в качестве переменной среды. Выполните следующую команду точно так же, как записано, без изменения значения GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  7. Используйте команду az connectedk8s enable-features, чтобы включить поддержку пользовательского расположения в вашем кластере. Эта команда использует objectId приложения Microsoft Entra ID, которое использует служба Azure Arc. Выполните следующую команду на компьютере, где развернут кластер Kubernetes:

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    

Установка последней версии az iot ops

В этом кратком руководстве используется последняя доступная версия Операции Интернета вещей Azure. Чтобы установить последнюю версию, требуется последняя версия расширения интерфейса командной строки Операции Интернета вещей Azure:

az extension add --upgrade --name azure-iot-ops

Создание учетной записи хранения и реестра схем

Реестр схем — это синхронизированный репозиторий, в который хранятся определения сообщений как в облаке, так и на пограничном сервере. Для работы Azure IoT требуется реестр схем в вашем кластере. Для реестра схем требуется учетная запись хранения Azure для сведений о схеме, хранящихся в облаке.

Для создания реестра схем в данной секции требуется Майкрософт.Authorization/roleAssignments/write разрешение на уровне группы ресурсов. Это разрешение используется для предоставления роли участника для реестра схем, чтобы он мог записывать данные в учетную запись хранения данных.

Выполните следующие команды CLI в терминале Codespaces.

  1. Задайте переменные среды для ресурсов, создаваемых в этом разделе.

    плейсхолдер Значение
    <STORAGE_ACCOUNT_NAME> Имя вашей учетной записи хранения. Имена учетных записей хранения должны содержать от 3 до 24 символов и содержать только цифры и строчные буквы.
    <SCHEMA_REGISTRY_NAME> Имя вашего реестра схем. Имена реестра схем могут содержать только цифры, строчные буквы и дефисы.
    <SCHEMA_REGISTRY_NAMESPACE> Имя пространства имен реестра схем. Пространство имен однозначно идентифицирует реестр схем в клиенте. Имена пространств имен реестра схем могут содержать только цифры, строчные буквы и дефисы.
    STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
    
  2. Создайте учетную запись хранения с включенным иерархическим пространством имен.

    az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
    
  3. Создайте реестр схем с подключением к вашей учетной записи хранения. Эта команда также создаёт контейнер BLOB с именем schemas в учетной записи хранения.

    az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
    

Создание пространства имен реестра устройств Azure

Операции Интернета вещей Azure и реестр устройств Azure используют namespaces для организации ресурсов и устройств. Каждый экземпляр Операции Интернета вещей Azure использует единое пространство имен для своих ресурсов и устройств.

Выполните следующую команду CLI, чтобы создать пространство имен реестра устройств Azure.

az iot ops ns create -n myqsnamespace -g $RESOURCE_GROUP

Развертывание операций Azure IoT

В этом разделе описана настройка кластера с зависимостями для компонентов Операции Интернета вещей Azure, а затем развертывание Операции Интернета вещей Azure.

Выполните следующие команды CLI в терминале Codespaces.

  1. Инициализация кластера для Операции Интернета вещей Azure.

    Совет

    Команду init необходимо выполнить только один раз на кластер. Если вы повторно используете кластер, на который уже развернута последняя версия Операции Интернета вещей Azure, можно пропустить этот шаг.

    az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    

    Выполнение этой команды может занять несколько минут. Вы можете наблюдать за ходом выполнения развертывания на экране прогресса в терминале.

  2. Разверните Операции Интернета вещей Azure. Эта команда включает необязательный коннектор для OPC UA, используемый в следующих быстрых стартах.

    az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --ns-resource-id $(az iot ops ns show --name myqsnamespace --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1  --broker-backend-part 1  --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low  --feature opcua.mode=Stable
    

    Выполнение этой команды может занять несколько минут. Вы можете наблюдать за ходом выполнения развертывания на экране прогресса в терминале.

    Если вы получаете сообщение об ошибке, в которой говорится, что устройство должно быть управляемо для доступа к ресурсу, запустите az login еще раз и убедитесь, что вы войдете в интерактивный режим с помощью браузера.

Просмотр ресурсов в кластере

После завершения развертывания можно использовать команды kubectl для наблюдения за изменениями в кластере или, так как кластер поддерживает Arc, можно использовать портал Azure.

Чтобы просмотреть поды в вашем кластере, выполните следующую команду:

kubectl get pods -n azure-iot-operations

Чтобы просмотреть ресурсы на портале Azure, выполните следующие действия.

  1. На портале Azure перейдите в группу ресурсов, содержащую экземпляр Операции Интернета вещей Azure или найдите и выберите Операции Интернета вещей Azure.

  2. Выберите название вашего экземпляра Операции Интернета вещей Azure.

  3. На странице Обзор экземпляра выберите вкладку Сводка ресурсов, чтобы просмотреть статус предоставления ресурсов, развернутых в кластере.

    Скриншот, отображающий экземпляр Операции Интернета вещей Azure в вашем кластере с поддержкой Arc.

Как мы решили проблему?

В этом кратком руководстве вы настроили кластер Kubernetes с поддержкой Arc, чтобы он мог безопасно взаимодействовать с компонентами Операции Интернета вещей Azure. Затем вы развернули эти компоненты в кластере. Для этого тестового сценария у вас есть один кластер Kubernetes, работающий в Codespaces. Однако в рабочем сценарии можно использовать те же действия для развертывания рабочих нагрузок во многих кластерах на многих сайтах.

Очистка ресурсов

Если вы продолжаете работу со следующим кратким руководством, сохраните все ресурсы.

Если вы хотите удалить развертывание Операции Интернета вещей Azure, но сохранить кластер, используйте команду az iot ops delete:

az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP

Если вы хотите удалить все ресурсы, созданные для этого краткого руководства, удалите кластер Kubernetes, в котором развернуты Операции Интернета вещей Azure, а затем удалите группу ресурсов Azure, содержащую кластер.

Если вы использовали Codespaces для этих кратких руководств, удалите ваш Codespace из GitHub.

Следующий шаг