Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Внимание
На этой странице содержатся инструкции по управлению компонентами Операций Интернета вещей Azure с помощью манифестов развертывания Kubernetes, которые доступны в предварительной версии. Эта функция предоставляется с несколькими ограничениями и не должна использоваться для рабочих нагрузок.
См. дополнительные условия использования для предварительных версий Microsoft Azure для ознакомления с юридическими условиями, применимыми к функциям Azure, которые находятся в стадии бета-тестирования, предварительного просмотра или пока еще не выпущены для общего пользования.
Ресурс BrokerListener соответствует сетевой конечной точке, которая предоставляет брокер клиентам через сеть. Вы можете иметь один или несколько ресурсов BrokerListener для каждого брокера с несколькими портами и разными средствами управления доступом на каждом из них.
Каждый порт BrokerListener может иметь собственные правила проверки подлинности и авторизации, определяющие, кто может подключаться к порту прослушивателя и какие действия они могут выполнять на брокере. Ресурсы BrokerAuthentication и BrokerAuthorization можно использовать для указания политик управления доступом для каждого порта прослушивателя. Эта гибкость позволяет точно настроить разрешения и роли для клиентов MQTT на основе их потребностей и вариантов использования.
Совет
Развертывание брокера MQTT по умолчанию — это IP-служба кластера, которая требует от клиентов подключаться к протоколу TLS и проходить проверку подлинности с помощью маркеров учетной записи службы. Клиенты, подключающиеся извне кластера , нуждаются в дополнительной конфигурации , прежде чем они смогут подключиться.
Прослушиватели брокера имеют следующие характеристики:
- Имя: имя прослушивателя. Это имя также является именем службы Kubernetes , если не переопределено.
-
Тип службы: у вас может быть до трех прослушивателей, по одному на тип службы. Прослушиватель по умолчанию — тип
ClusterIp
службы. - Порты: каждый прослушиватель поддерживает несколько портов. Порты не могут конфликтуть с разными прослушивателями.
- Ссылки на проверку подлинности и авторизацию: brokerAuthentication и BrokerAuthorization настроены на порт.
- TLS: на порт применяется ручная или автоматическая конфигурация TLS.
- Протокол:MQTT через WebSockets можно включить на один порт.
Чтобы получить список всех доступных параметров, обратитесь к справочнику по API прослушивателя брокера.
BrokerListener по умолчанию
При развертывании Azure IoT развертывание создает ресурс BrokerListener с именем по умолчанию. Этот прослушиватель используется для зашифрованного внутреннего взаимодействия между компонентами Операций Интернета вещей. Прослушиватель по умолчанию является частью брокера по умолчанию.
- Он предоставляет службу ClusterIp через порт 18883.
- Для этого клиентам требуется использовать проверку подлинности учетной записи службы Kubernetes.
- Он имеет автоматически управляемый СЕРТИФИКАТ TLS.
- Он не настраивает политики авторизации клиента.
Внимание
Чтобы избежать нарушения внутренних операций Интернета вещей, не изменяйте прослушиватель по умолчанию и выделенный для внутреннего использования. Для внешнего взаимодействия создайте прослушиватель. Если необходимо использовать ClusterIp
службу, добавьте дополнительные порты в прослушиватель по умолчанию без изменения существующих параметров.
Чтобы просмотреть или изменить прослушиватель по умолчанию, выполните следующие действия.
В портал Azure перейдите к экземпляру Операций Интернета вещей.
В разделе "Компоненты" выберите MQTT Broker.
В списке прослушивателя брокера выберите прослушиватель по умолчанию .
Проверьте параметры прослушивателя, но не изменяйте существующие параметры. Вместо этого создайте новый порт и настройте его по мере необходимости.
Избегайте изменения прослушивателя брокера по умолчанию
Чтобы предотвратить нарушение внутренних операций Интернета вещей, сохраните прослушиватель по умолчанию без изменений и выделен для внутреннего использования. Для внешнего взаимодействия создайте прослушиватель.
Так как прослушиватель брокера по умолчанию использует тип ClusterIp
службы, и вы можете иметь только один прослушиватель для каждого типа службы, добавить дополнительные порты в прослушиватель по умолчанию, не изменяя существующие параметры, если необходимо использовать ClusterIp
службу.
Создание прослушивателей брокера
Чтобы создать новый прослушиватель, укажите следующие параметры:
- Имя: имя прослушивателя. Это имя также является именем службы Kubernetes , если не переопределено.
- Тип службы: Тип службы Kubernetes. См. раздел "Тип службы".
- Порты: список портов для прослушивания. См. порты.
- Имя службы (необязательно): переопределите имя службы Kubernetes. См. имя службы.
Пример. Создание прослушивателя с двумя портами
В этом примере показано, как создать прослушиватель с типом LoadBalancer
службы. Ресурс BrokerListener определяет два порта, которые принимают подключения MQTT от клиентов.
- Первый порт прослушивает порт 1883 без tls и проверки подлинности. Эта настройка подходит только для тестирования. Не используйте эту конфигурацию в рабочей среде.
- Второй порт прослушивает порт 8883 с включенным протоколом TLS и проверкой подлинности. Только проверенные клиенты с токеном учетной записи службы Kubernetes могут подключаться. Протокол TLS устанавливается в автоматический режим, используя cert-manager для управления сертификатом сервера из издателя по умолчанию. Эта настройка ближе к рабочей конфигурации.
В портал Azure перейдите к экземпляру Операций Интернета вещей.
В разделе "Компоненты" выберите MQTT Broker.
Выберите прослушиватель брокера MQTT для LoadBalancer>Create.
Введите следующие параметры:
Параметр Описание Имя. Имя ресурса BrokerListener. Название сервиса Имя службы Kubernetes. Оставьте пустым имя прослушивателя в качестве имени службы. тип услуги; LoadBalancer уже выбран. В разделе "Порты" введите следующие параметры для первого порта:
Параметр Описание Порт Введите 1883. Проверка подлинности Выберите "Нет". Авторизация Выберите "Нет". Протокол Выберите MQTT. TLS Не добавляйте. Выберите "Добавить запись порта ", чтобы добавить второй порт и введите следующие параметры:
Параметр Описание Порт Введите 8883. Проверка подлинности Выберите значение по умолчанию. Авторизация Выберите "Нет". Протокол Выберите MQTT. TLS Нажмите кнопку "Добавить". В области конфигурации TLS введите следующие параметры:
Параметр Описание Режим TLS Выберите "Автоматически". имя издателя; Введите azure-iot-operations-aio-certificate-issuer
.Тип издателя Выберите ClusterIssuer. Оставьте другие параметры по умолчанию и нажмите кнопку "Применить".
Выберите "Создать прослушиватель".
тип услуги;
Каждый ресурс BrokerListener сопоставляется со службой Kubernetes. Тип службы определяет, как брокер предоставляется сети. Поддерживаемые типы служб:
- ClusterIp: открывает доступ к брокеру на внутреннем IP-адресе кластера. Клиенты могут подключаться к брокеру из кластера. Этот тип службы по умолчанию предназначен для прослушивателя по умолчанию.
- NodePort: открывает брокер на IP-адресе каждого узла по статическому порту. Клиенты могут подключаться к брокеру за пределами кластера. Этот тип службы полезен для разработки и тестирования.
- LoadBalancer: делает брокер доступным снаружи. Служба назначает внешний IP-адрес, который клиенты могут использовать для подключения к брокеру. Этот тип службы является наиболее распространенным для рабочих развертываний.
Только один прослушиватель на тип службы
Допускается только один прослушиватель для каждого типа службы. Если требуется больше подключения одного типа службы, добавьте дополнительные порты в существующий прослушиватель этого типа службы.
Название сервиса
Имя службы — это имя службы Kubernetes, связанной с брокером. Если это не указано, имя прослушивателя брокера используется в качестве имени службы. Имя службы должно быть уникальным в пространстве имен.
Совет
Чтобы предотвратить затраты на управление, рекомендуется оставить имя службы пустым. Имя прослушивателя уникально, и его можно использовать для идентификации службы. Используйте имя службы в качестве переопределения только в том случае, если вы не можете назвать службу после прослушивателя.
Порты
Каждый прослушиватель может иметь несколько портов, и каждый порт может иметь собственные параметры для проверки подлинности, авторизации, протокола и TLS.
Чтобы использовать собственный параметр проверки подлинности или авторизации для порта, необходимо создать соответствующие ресурсы, прежде чем использовать его с прослушивателем. Дополнительные сведения см. в разделе "Настройка проверки подлинности брокера MQTT" и настройка авторизации брокера MQTT.
Чтобы использовать TLS, см. раздел "Настройка TLS с автоматическим управлением сертификатами" или раздел "Настройка TLS с ручным управлением сертификатами".
Использование одного порта для прослушивателей
Использование одного и того же номера порта для разных прослушивателей не поддерживается. Каждый номер порта должен быть уникальным в брокере MQTT операций Интернета вещей.
Например, если у вас есть прослушиватель с помощью порта 1883, вы не можете создать другой прослушиватель с портом 1883. Аналогичным образом прослушиватель по умолчанию использует порт 18883, поэтому вы не можете создать другой прослушиватель с портом 18883.
Поддержка WebSocket
Брокер MQTT операций Интернета вещей поддерживает MQTT через WebSockets. Чтобы включить WebSockets, задайте для порта протокол WebSockets
.
Настройка TLS с помощью автоматического управления сертификатами
Чтобы включить TLS с автоматическим управлением сертификатами, укажите параметры TLS в порту прослушивателя.
Проверка установки cert-manager
При автоматическом управлении сертификатами используется диспетчер сертификатов для управления сертификатом сервера TLS. По умолчанию диспетчер сертификатов устанавливается вместе с операциями Интернета вещей в cert-manager
пространстве имен. Перед продолжением проверьте установку.
Используйте kubectl, чтобы проверить наличие модулей pod, соответствующих меткам приложений cert-manager.
kubectl get pods --namespace cert-manager -l 'app in (cert-manager,cainjector,webhook)'
NAME READY STATUS RESTARTS AGE aio-cert-manager-64f9548744-5fwdd 1/1 Running 4 (145m ago) 4d20h aio-cert-manager-cainjector-6c7c546578-p6vgv 1/1 Running 4 (145m ago) 4d20h aio-cert-manager-webhook-7f676965dd-8xs28 1/1 Running 4 (145m ago) 4d20h
Если вы видите модули pod, которые отображаются как готовые и запущенные, диспетчер сертификатов устанавливается и готов к использованию.
Совет
Чтобы проверить установку, ознакомьтесь с документацией по cert-manager, чтобы проверить установку. Не забудьте использовать cert-manager
пространство имен.
Создание издателя для сертификата сервера TLS
Ресурс издателя cert-manager определяет способ автоматического выдачи сертификатов. Cert-manager поддерживает несколько типов поставщиков сертификатов непосредственно. Он также поддерживает внешний issuer
тип для расширения функциональных возможностей за пределами собственных поддерживаемых издателей. Брокер MQTT можно использовать с любым типом издателя cert-manager.
Внимание
Во время первоначального развертывания операции Интернета вещей устанавливаются с издателем по умолчанию для сертификатов сервера TLS. Этот издатель можно использовать для разработки и тестирования. Дополнительные сведения см. в разделе "Центр сертификации (CA) по умолчанию" и "издатель" в операциях Azure IoT. Следующие шаги необходимы только в том случае, если вы хотите использовать другой издатель.
Подход к созданию издателя отличается в зависимости от вашего сценария. В следующих разделах приведены примеры, которые помогут вам приступить к работе.
Издатель ЦС полезен для разработки и тестирования. Его необходимо настроить с помощью сертификата и закрытого ключа, хранящегося в секрете Kubernetes.
Настройка корневого сертификата в качестве секрета Kubernetes
Если у вас есть сертификат ЦС, создайте секрет Kubernetes с сертификатом ЦС и файлами PEM закрытого ключа ЦС. Выполните следующую команду, чтобы импортировать сертификат ЦС в качестве секрета Kubernetes и пропустить следующий раздел.
kubectl create secret tls test-ca --cert tls.crt --key tls.key -n azure-iot-operations
Если у вас нет сертификата ЦС, диспетчер сертификатов может создать сертификат ЦС. Использование диспетчера сертификатов для генерации сертификата ЦС называется инициализацией издателя ЦС с самозаверяющим сертификатом.
Начните с создания
ca.yaml
:apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: selfsigned-ca-issuer namespace: azure-iot-operations spec: selfSigned: {} --- apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: selfsigned-ca-cert namespace: azure-iot-operations spec: isCA: true commonName: test-ca secretName: test-ca issuerRef: # Must match Issuer name above name: selfsigned-ca-issuer # Must match Issuer kind above kind: Issuer group: cert-manager.io # Override default private key config to use an EC key privateKey: rotationPolicy: Always algorithm: ECDSA size: 256
Создайте самозаверяющий сертификат ЦС с помощью следующей команды:
kubectl apply -f ca.yaml
Cert-manager создает сертификат ЦС с помощью значений по умолчанию. Вы можете изменить свойства этого сертификата, изменив спецификацию сертификата. Список допустимых параметров см. в документации по cert-manager.
Распространение корневого сертификата
В предыдущем примере сертификат ЦС хранится в секрете test-ca
Kubernetes. Вы можете получить сертификат в формате PEM из секрета и сохранить его в файле ca.crt
с помощью следующей команды:
kubectl get secret test-ca -n azure-iot-operations -o json | jq -r '.data["tls.crt"]' | base64 -d > ca.crt
Этот сертификат должен распространяться и доверять всем клиентам. Например, используйте --cafile
флаг для клиента Mosquitto.
Создание издателя на основе сертификата ЦС
Диспетчер сертификатов требует издателя на основе сертификата ЦС, созданного или импортированного на предыдущем шаге. Создайте следующий файл следующим образом issuer-ca.yaml
:
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: my-issuer
namespace: azure-iot-operations
spec:
ca:
# Must match secretName of generated or imported CA cert
secretName: test-ca
Создайте издателя с помощью следующей команды:
kubectl apply -f issuer-ca.yaml
Следующая команда создает издателя для выдачи сертификатов сервера TLS. Запишите имя и тип издателя. В примере это имя my-issuer
и тип Issuer
. Эти значения задаются в ресурсе BrokerListener позже.
Включение автоматического управления сертификатами TLS для порта
В следующем примере представлен ресурс BrokerListener, который включает TLS через порт 8884 с автоматическим управлением сертификатами.
В портал Azure перейдите к экземпляру Операций Интернета вещей.
В разделе "Компоненты" выберите MQTT Broker.
Выберите или создайте прослушиватель. Вы можете создать только один прослушиватель для каждого типа службы. Если у вас уже есть прослушиватель одного типа службы, можно добавить дополнительные порты в существующий прослушиватель.
Параметры TLS можно добавить в прослушиватель, выбрав TLS на существующем порту или добавив новый порт.
Введите следующие параметры:
Параметр Описание Имя. Имя ресурса BrokerListener. Введите aio-broker-loadbalancer-tls
.Порт Номер порта, на котором брокерListener прослушивает подключения MQTT. Введите 8884. Проверка подлинности Ссылка на ресурс проверки подлинности. Авторизация Ссылка на ресурс авторизации. TLS Нажмите кнопку "Добавить ". имя издателя; Имя издателя cert-manager. Обязательный. Тип издателя Тип издателя cert-manager. Обязательный. Группа издателей Группа издателя cert-manager. Обязательный. Алгоритм закрытого ключа Алгоритм закрытого ключа. Политика смены закрытого ключа Политика поворота закрытого ключа. DNS-имена Альтернативные имена субъектов DNS для сертификата. IP-адреса IP-адреса альтернативного имени субъекта для сертификата. Имя секрета Секрет Kubernetes, содержащий сертификат клиента X.509. Продолжительность Общее время существования сертификата сервера TLS по умолчанию составляет 90 дней. Продление до Когда начнется продление сертификата. Нажмите кнопку "Применить" , чтобы сохранить параметры TLS.
После настройки ресурса BrokerListener брокер MQTT автоматически создает новую службу с указанным портом и протоколом TLS.
Необязательно. Настройка параметров сертификата сервера
Единственными обязательными параметрами являются Issuer
имя и Issuer
тип. Все остальные свойства созданных сертификатов сервера TLS автоматически выбираются. Однако брокер MQTT позволяет настраивать определенные свойства, следуя тому же синтаксису, что и сертификаты cert-manager. Например, можно указать алгоритм закрытого ключа и политику поворота. Эти настройки находятся под tls.certManagerCertificateSpec
или в области конфигурации TLS на портале Azure.
Полный список этих параметров см. в справочнике по API Прослушивателя Брокера CertManagerCertificateSpec.
Проверка развертывания
Используйте kubectl, чтобы проверить, запущена ли служба, связанная с ресурсом BrokerListener. В предыдущем примере имя службы — aio-broker-loadbalancer-tls
это пространство azure-iot-operations
имен. Следующая команда проверяет состояние службы:
$ kubectl get service my-new-tls-listener -n azure-iot-operations
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
aio-broker-loadbalancer-tls LoadBalancer 10.X.X.X 172.X.X.X 8884:32457/TCP 33s
Подключение к брокеру с помощью TLS
После настройки сертификата сервера протокол TLS включен. Чтобы протестировать с помощью Mosquitto:
mosquitto_pub -h $HOST -p 8884 -V mqttv5 -i "test" -t "test" -m "test" --cafile ca.crt
Аргумент --cafile
включает TLS в клиенте Mosquitto и указывает, что клиент должен доверять всем сертификатам сервера, выданным определенным файлом. Необходимо указать файл, содержащий издателя настроенного сертификата СЕРВЕРА TLS.
Замените $HOST
соответствующим узлом:
- Если вы подключаетесь из того же кластера, замените на указанное имя службы (
my-new-tls-listener
в примере) или на службуCLUSTER-IP
. - Если вы подключаетесь извне кластера, используйте службу
EXTERNAL-IP
.
При необходимости не забудьте указать методы проверки подлинности.
Корневой ЦС по умолчанию и издатель по умолчанию
Чтобы приступить к работе, операции Интернета вещей развертываются с сертификатом ЦС по умолчанию и издателем сертификатов сервера TLS. Этот издатель можно использовать для разработки и тестирования. Дополнительные сведения см. в разделе Корневой ЦС по умолчанию и издатель сертификатов для серверов TLS.
Для рабочей среды необходимо настроить издателя ЦС с сертификатом из доверенного ЦС, как описано в предыдущих разделах.
Настройка TLS с помощью ручного управления сертификатами
Чтобы вручную настроить брокер MQTT для использования определенного сертификата TLS, укажите его в ресурсе BrokerListener со ссылкой на секрет Kubernetes и разверните его с помощью kubectl. В этой статье показан пример настройки TLS с самозаверяющими сертификатами для тестирования.
Создание центра сертификации с помощью step CLI
Step — это диспетчер сертификатов, который может быстро начать работать при создании и управлении вашим собственным частным ЦС.
Установите Step CLI и создайте сертификат и ключ корневого центра сертификации (ЦС).
step certificate create --profile root-ca "Example Root CA" root_ca.crt root_ca.key
Создайте промежуточный сертификат ЦС и ключ, подписанный корневым ЦС.
step certificate create --profile intermediate-ca "Example Intermediate CA" intermediate_ca.crt intermediate_ca.key \ --ca root_ca.crt --ca-key root_ca.key
Создание сертификата сервера
Используйте интерфейс командной строки шага для создания сертификата сервера из промежуточного сертификата ЦС и ключа.
step certificate create mqtts-endpoint mqtts-endpoint.crt mqtts-endpoint.key \
--profile leaf \
--not-after 8760h \
--san mqtts-endpoint \
--san localhost \
--ca intermediate_ca.crt --ca-key intermediate_ca.key \
--no-password --insecure
mqtts-endpoint
Ниже приведены localhost
альтернативные имена субъектов (SAN) для внешнего интерфейса брокера MQTT в Kubernetes и локальных клиентах соответственно. Чтобы подключиться через Интернет, добавьте --san
внешний IP-адрес. Флаги --no-password --insecure
используются для тестирования, чтобы пропустить запросы паролей и отключить защиту паролей для закрытого ключа, так как он хранится в секрете Kubernetes. Для рабочей среды используйте пароль и сохраните закрытый ключ в безопасном расположении, например Azure Key Vault.
Требования к алгоритму ключа сертификата
Поддерживаются ключи EC и RSA, но все сертификаты в цепочке должны использовать один и тот же алгоритм ключа. При импорте собственных сертификатов ЦС убедитесь, что сертификат сервера использует тот же алгоритм ключей, что и ЦС.
Импорт цепочки сертификатов сервера в виде секрета Kubernetes
Создайте полную цепочку сертификатов сервера, в которой имеет значение порядок сертификатов. Сертификат сервера является первым в файле, а промежуточный — вторым.
cat mqtts-endpoint.crt intermediate_ca.crt > server_chain.crt
Создайте секрет Kubernetes с цепочкой сертификатов сервера и ключом сервера с помощью kubectl.
kubectl create secret tls server-cert-secret -n azure-iot-operations \ --cert server_chain.crt \ --key mqtts-endpoint.key
Включение управления сертификатами TLS вручную для порта
В следующем примере показан ресурс BrokerListener, который включает TLS через порт 8884 с помощью ручного управления сертификатами.
В портал Azure перейдите к экземпляру Операций Интернета вещей.
В разделе "Компоненты" выберите MQTT Broker.
Выберите или создайте прослушиватель. Вы можете создать только один прослушиватель для каждого типа службы. Если у вас уже есть прослушиватель одного типа службы, можно добавить дополнительные порты в существующий прослушиватель. Чтобы следовать примеру, укажите имя службы прослушивателя как
mqtts-endpoint
.Параметры TLS можно добавить в прослушиватель, выбрав TLS на существующем порту или добавив новый порт.
Введите следующие параметры:
Параметр Описание Порт Номер порта, на котором брокерListener прослушивает подключения MQTT. Обязательный. Проверка подлинности Ссылка на ресурс проверки подлинности. Авторизация Ссылка на ресурс авторизации. TLS Нажмите кнопку "Добавить ". Имя секрета Секрет Kubernetes, содержащий сертификат клиента X.509. Нажмите кнопку "Применить" , чтобы сохранить параметры TLS.
Подключение к брокеру с помощью TLS
Чтобы проверить подключение TLS с клиентом Mosquitto, опубликуйте сообщение и передайте сертификат корневого ЦС в параметре --cafile
.
mosquitto_pub -d -h localhost -p 8885 -i "my-client" -t "test-topic" -m "Hello" --cafile root_ca.crt
Не забудьте указать такие элементы, как имя пользователя и пароль, если включена проверка подлинности брокера MQTT.
Client my-client sending CONNECT
Client my-client received CONNACK (0)
Client my-client sending PUBLISH (d0, q0, r0, m1, 'test-topic', ... (5 bytes))
Client my-client sending DISCONNECT
Совет
Чтобы использовать localhost, порт должен быть доступен на хост-компьютере. Например, kubectl port-forward svc/mqtts-endpoint 8885:8885 -n azure-iot-operations
. При использовании некоторых дистрибутивов Kubernetes, таких как K3d, можно добавить переадресованный порт.k3d cluster edit $CLUSTER_NAME --port-add 8885:8885@loadbalancer
Чтобы подключиться к брокеру, необходимо распространить корневой каталог доверия, также известный как пакет доверия для всех клиентов. В этом случае корнем доверия является самозаверяющий корневой ЦС, созданный с помощью step CLI. Для проверки цепочки сертификатов сервера требуется распределение доверия клиента. Если клиенты MQTT являются рабочими нагрузками в кластере Kubernetes, вам также необходимо создать ConfigMap с корневым ЦС и подключить его в модуле pod.
Использование внешнего IP-адреса для сертификата сервера
Чтобы подключиться к ПРОТОКОЛу TLS через Интернет, сертификат сервера брокера MQTT должен иметь имя внешнего узла или IP-адрес в качестве SAN. В рабочей среде эта информация обычно представляет собой DNS-имя или известный IP-адрес. Во время разработки и тестирования вы можете не знать, какое имя узла или внешний IP-адрес назначается перед развертыванием. Чтобы решить эту проблему, сначала разверните прослушиватель без сертификата сервера, создайте сертификат сервера и секрет с внешним IP-адресом и импортируйте секрет в прослушиватель.
Если вы попытаетесь развернуть пример прослушивателя manual-tls-listener
TLS, но указанный секрет server-cert-secret
Kubernetes не существует, связанная служба создается, но модули pod не запускаются. Служба создается, так как оператор должен зарезервировать внешний IP-адрес для прослушивателя.
kubectl get svc mqtts-endpoint -n azure-iot-operations
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mqtts-endpoint LoadBalancer 10.X.X.X 172.X.X.X 8885:30674/TCP 1m15s
Это поведение ожидается при импорте сертификата сервера. Журналы диспетчера работоспособности отмечают, что брокер MQTT ожидает сертификата сервера.
kubectl logs -l app=health-manager -n azure-iot-operations
...
<6>2023-11-06T21:36:13.634Z [INFO] [1] - Server certificate server-cert-secret not found. Awaiting creation of secret.
Примечание.
Как правило, в распределенной системе журналы pod не детерминируются и должны использоваться с осторожностью. Правильный способ для сведений, таких как это, заключается в событиях Kubernetes и состоянии пользовательского ресурса, который находится в невыполненной работы. Рассмотрим предыдущий шаг как временное решение.
Несмотря на то, что интерфейсные модули pod не растут, внешний IP-адрес уже доступен.
kubectl get svc mqtts-endpoint -n azure-iot-operations
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mqtts-endpoint LoadBalancer 10.X.X.X 172.X.X.X 8885:30674/TCP 1m15s
Далее выполните те же действия, что и ранее, чтобы создать сертификат сервера с этим внешним IP-адресом --san
и создать секрет Kubernetes таким же образом. После создания секрета он автоматически импортируется в прослушиватель.