Краткое руководство. Запуск операций Интернета вещей Azure в пространствах кода GitHub с помощью K3s
В этом кратком руководстве описано, как развернуть операции Интернета вещей Azure в кластере Kubernetes с поддержкой Azure Arc, чтобы удаленно управлять устройствами и рабочими нагрузками. В конце краткого руководства у вас есть кластер, который можно управлять из облака. Остальные краткие руководства в этой комплексной серии создаются для определения примеров ресурсов, конвейеров обработки данных и визуализаций.
Подготовка к работе
Эта серия кратких руководств предназначена для быстрого начала работы с операциями Интернета вещей Azure, чтобы вы могли оценить комплексный сценарий. В истинной среде разработки или рабочей среды несколько команд, работающих вместе с этими задачами, могут потребовать повышенных разрешений.
Для лучшего нового взаимодействия с пользователем рекомендуется использовать бесплатную учетную запись Azure, чтобы у вас были разрешения владельца над ресурсами в этих кратких руководствах.
Мы также используем GitHub Codespaces в качестве виртуальной среды для этого краткого руководства, чтобы вы могли протестировать сценарий без установки новых средств на собственных компьютерах. Однако если вы хотите развернуть операции Интернета вещей Azure в локальном кластере в Ubuntu или Служба Azure Kubernetes (AKS), см. статью "Подготовка кластера Kubernetes с поддержкой Azure Arc".
Необходимые компоненты
Перед началом работы подготовьте следующие предварительные требования:
Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Учетная запись GitHub.
Visual Studio Code, установленный на компьютере разработки. Дополнительные сведения см. в разделе "Скачать Visual Studio Code".
Microsoft.Authorization/roleAssignments/write permissions на уровне группы ресурсов.
Какая проблема будет решена?
Операции Интернета вещей Azure — это набор служб данных, выполняемых в кластерах Kubernetes. Эти кластеры будут управляться удаленно из облака и безопасно взаимодействовать с облачными ресурсами и конечными точками. Мы устраняем эти проблемы со следующими задачами в этом кратком руководстве.
- Создайте кластер Kubernetes в GitHub Codespaces.
- Подключите кластер к Azure Arc для удаленного управления.
- Создайте реестр схем.
- Разверните операции Интернета вещей Azure в кластере.
Создание кластера
Операции Интернета вещей Azure можно развернуть в K3s в Ubuntu, Служба Azure Kubernetes (AKS) Edge Essentials и AKS в Локальной среде Azure. Однако для удобства и скорости в этом кратком руководстве используются пространства GitHub Codespaces для размещения кластера. Сведения о развертывании операций Интернета вещей Azure в кластере в Windows или Ubuntu см. в статье "Подготовка кластера Kubernetes с поддержкой Azure Arc".
Примечание.
Пространства кода легко настроить быстро и разорвать их позже, но они не подходят для оценки производительности или тестирования масштабирования. Используйте GitHub Codespaces только для изучения.
Среда Codespaces достаточно для выполнения шагов быстрого запуска, но не поддерживает расширенные конфигурации.
В этом разделе описано, как создать новый кластер. Если вы хотите повторно использовать кластер, в который вы развернули операции Интернета вещей Azure ранее, ознакомьтесь с инструкциями, описанными в статье "Очистка ресурсов " для удаления операций Интернета вещей Azure перед продолжением.
Пространство кода azure-Samples/explore-iot-operations предварительно настроено следующим образом:
- K3s работает в K3d для упрощенного кластера Kubernetes
- Azure CLI
- Kubectl для управления ресурсами Kubernetes
- Другие полезные инструменты, такие как Helm и k9s
Чтобы создать пространство кода и кластер, выполните следующие действия.
Создайте пространство кода в GitHub Codespaces.
Укажите следующие рекомендуемые секреты для пространства кода:
Параметр Значение SUBSCRIPTION_ID Идентификатор вашей подписки Azure. RESOURCE_GROUP Имя новой группы ресурсов Azure, в которой будет создан кластер. LOCATION Регион Azure, близкий к вам. Список поддерживаемых регионов см. в разделе "Поддерживаемые регионы". Совет
Значения, которые вы предоставляете в качестве секретов на этом шаге, сохраняются в учетной записи GitHub, которая будет использоваться в этих и будущих пространствах кода. Они добавляются в качестве переменных среды в терминале пространства кода, и эти переменные среды можно использовать в командах CLI в следующем разделе.
Кроме того, это пространство кода создает
CLUSTER_NAME
переменную среды, которая устанавливается с именем пространства кода.Выберите "Создать новое пространство кода".
Когда пространство кода будет готово, нажмите кнопку меню в левом верхнем углу, а затем нажмите кнопку "Открыть" в VS Code Desktop.
При появлении запроса установите расширение GitHub Codespaces для Visual Studio Code и войдите в GitHub.
В Visual Studio Code выберите "Вид>терминала".
Используйте этот терминал для выполнения всех команд CLI для управления кластером.
Подключение кластера к Azure Arc
Чтобы подключить кластер к Azure Arc, выполните приведенные действия.
В терминале codespace войдите в Azure CLI:
az login
Совет
Если вы используете среду пространства кода GitHub в браузере, а не на рабочем столе VS Code, то при выполнении
az login
возвращается ошибка localhost. Чтобы устранить ошибку, выполните следующие действия:- Откройте пространство кода в классическом приложении VS Code, а затем вернитесь в терминал браузера и повторно выполните команду
az login
. - Или после получения ошибки localhost в браузере скопируйте URL-адрес из браузера и запустите
curl "<URL>"
на новой вкладке терминала. Вы увидите ответ JSON с сообщением "Вы вошли в Microsoft Azure!".
- Откройте пространство кода в классическом приложении VS Code, а затем вернитесь в терминал браузера и повторно выполните команду
После входа Azure CLI отображает все подписки и указывает подписку по умолчанию со звездочкой
*
. Чтобы продолжить подписку по умолчанию, выберитеEnter
. В противном случае введите номер подписки Azure, которую вы хотите использовать.Зарегистрируйте необходимых поставщиков ресурсов в подписке:
Примечание.
Этот шаг необходимо выполнить только один раз для каждой подписки. Чтобы зарегистрировать поставщиков ресурсов, необходимо разрешение на
/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 group create, чтобы создать группу ресурсов в подписке Azure для хранения всех ресурсов:
az group create --location $LOCATION --resource-group $RESOURCE_GROUP
Используйте команду az connectedk8s connect, чтобы включить кластер Kubernetes и управлять им в составе группы ресурсов Azure:
az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
Совет
Значение
$CLUSTER_NAME
автоматически присваивается имени пространства кода. Замените переменную среды, если вы хотите использовать другое имя.objectId
Получите приложение Идентификатора Microsoft Entra, которое служба Azure Arc использует в клиенте и сохраните ее в качестве переменной среды. Выполните следующую команду точно так же, как записано, без изменения значения GUID.export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Используйте команду az connectedk8s enable-features, чтобы включить поддержку пользовательского расположения в кластере. Эта команда использует
objectId
приложение Идентификатора Microsoft Entra, которое использует служба Azure Arc. Выполните следующую команду на компьютере, где развернут кластер Kubernetes:az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
Создание учетной записи хранения и реестра схем
Реестр схем — это синхронизированный репозиторий, в который хранятся определения сообщений как в облаке, так и на пограничном сервере. Для операций Интернета вещей Azure требуется реестр схем в кластере. Реестр схем требует учетной записи хранения Azure для сведений о схеме, хранящихся в облаке.
Для создания реестра схем в этом разделе требуется разрешение Microsoft.Authorization/roleAssignments/write на уровне группы ресурсов. Это разрешение используется для предоставления реестру схем роли участника, чтобы она могли записывать данные в учетную запись хранения.
Выполните следующие команды CLI в терминале Codespaces.
Задайте переменные среды для ресурсов, создаваемых в этом разделе.
Заполнитель Значение <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>
Создайте учетную запись хранения с включенным иерархическим пространством имен.
az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
Создайте реестр схем, который подключается к учетной записи хранения. Эта команда также создает контейнер BLOB-объектов, называемый схемами в учетной записи хранения.
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.
Выполните следующие команды CLI в терминале Codespaces.
Инициализация кластера для операций Интернета вещей Azure.
Совет
Для
init
каждого кластера необходимо выполнить только одну команду. Если вы повторно используете кластер, на который уже развернута последняя версия Операций Интернета вещей Azure, можно пропустить этот шаг.az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Выполнение этой команды может занять несколько минут. Вы можете отслеживать ход выполнения развертывания в терминале.
Развертывание операций Интернета вещей Azure.
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) --broker-frontend-replicas 1 --broker-frontend-workers 1 --broker-backend-part 1 --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
Выполнение этой команды может занять несколько минут. Вы можете отслеживать ход выполнения развертывания в терминале.
Если вы получаете сообщение об ошибке, в которой говорится, что устройство должно быть управляемо для доступа к ресурсу, запустите
az login
еще раз и убедитесь, что вы войдете в интерактивный режим с помощью браузера.
Просмотр ресурсов в кластере
После завершения развертывания можно использовать команды kubectl для наблюдения за изменениями в кластере или, так как кластер включен Arc, можно использовать портал Azure.
Чтобы просмотреть модули pod в кластере, выполните следующую команду:
kubectl get pods -n azure-iot-operations
Чтобы просмотреть ресурсы на портал Azure, выполните следующие действия.
В портал Azure перейдите в группу ресурсов, содержащую экземпляр Операций Интернета вещей Azure, или найдите и выберите Операции Интернета вещей Azure.
Выберите имя экземпляра Операций Интернета вещей Azure.
На странице обзора экземпляра выберите вкладку "Сводка ресурсов", чтобы просмотреть состояние подготовки ресурсов, развернутых в кластере.
Как мы решили проблему?
В этом кратком руководстве вы настроили кластер Kubernetes с поддержкой Arc, чтобы он мог безопасно взаимодействовать с компонентами Операций Интернета вещей Azure. Затем вы развернули эти компоненты в кластере. Для этого тестового сценария у вас есть один кластер Kubernetes, работающий в пространствах codespaces. Однако в рабочем сценарии можно использовать те же действия для развертывания рабочих нагрузок во многих кластерах на многих сайтах.
Очистка ресурсов
Если вы продолжаете работу со следующим кратким руководством, сохраните все ресурсы.
Если вы хотите удалить развертывание Операций Интернета вещей Azure, но сохранить кластер, используйте команду az iot ops delete :
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Если вы хотите удалить все ресурсы, созданные для этого краткого руководства, удалите кластер Kubernetes, где вы развернули операции Интернета вещей Azure, а затем удалите группу ресурсов Azure, содержащую кластер.
Если вы использовали пространства кода для этих кратких руководств, удалите пространство Codespace из GitHub.