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

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

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

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

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

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

Внимание

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

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

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

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

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

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

  • Microsoft.Authorization/roleAssignments/write разрешения на уровне группы ресурсов.

  • Azure CLI установлен на компьютере разработки. Проверьте доступные расширения Azure CLI для получения минимально необходимой версии для расширения connectedk8s. Используйте az --version для проверки версии и az upgrade обновления при необходимости. Дополнительные сведения см. в статье Установка Azure CLI.

  • Расширение connectedk8s для Azure CLI. Используйте следующую команду, чтобы добавить расширение или обновить его до последней версии:

    az extension add --upgrade --name connectedk8s
    

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

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

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

Внимание

В этой статье используется кодовое пространство с 8-ядерным вычислительным экземпляром. Это может повлиять на ваш бюджет, если вы оставляете кодовое пространство запущенным на долгое время. Чтобы избежать непредвиденных расходов, обязательно остановите codespace, если делаете длительные перерывы между разделами этого краткого руководства. Вы можете перезапустить его, когда вы будете готовы к продолжению. Дополнительные сведения см. в разделе "Остановка и запуск пространства кода".

Подключение кластера к 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"
    az provider register -n "Microsoft.Storage"
    az provider register -n "Microsoft.Insights"
    
  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.

    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 для сведений о схеме, хранящихся в облаке.

Для создания реестра схем в данной секции требуется Microsoft.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. Создайте реестр схем с подключением к вашей учетной записи хранения. Эта команда также создает контейнер больших двоичных объектов с именем 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 необходимо выполнить только один раз на кластер.

    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, содержащую подключенный кластер Azure Arc и другие ресурсы, используемые в этом кратком руководстве. Затем удалите пространство кода и секреты, созданные для него из GitHub. Сведения об удалении пространства кода и секретов см. в разделе "Удаление пространства кода " и "Удаление секретов".

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