Поделиться через


Защита обмена данными брокера MQTT с помощью BrokerListener

Внимание

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

Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

BrokerListener соответствует сетевой конечной точке, которая предоставляет брокер клиентам через сеть. Для каждого брокера можно использовать один или несколько ресурсов BrokerListener с несколькими портами и разными средствами управления доступом.

Каждый порт BrokerListener может иметь собственные правила проверки подлинности и авторизации, определяющие, кто может подключаться к порту прослушивателя и какие действия они могут выполнять на брокере. Ресурсы BrokerAuthentication и BrokerAuthorization можно использовать для указания политик управления доступом для каждого порта прослушивателя. Эта гибкость позволяет точно настроить разрешения и роли для клиентов MQTT на основе их потребностей и вариантов использования.

Совет

Развертывание брокера MQTT по умолчанию — это IP-служба кластера, которая требует от клиентов подключаться к TLS и проходить проверку подлинности с помощью маркеров учетной записи службы. Клиенты, подключающиеся извне кластера , нуждаются в дополнительной конфигурации , прежде чем они смогут подключиться.

Прослушиватели брокера имеют следующие характеристики:

Список всех доступных параметров см . в справочнике по API прослушивателя брокера.

BrokerListener по умолчанию

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

Внимание

Чтобы избежать нарушения внутренних операций Интернета вещей Azure, не изменяйте прослушиватель по умолчанию и выделенный для внутреннего использования. Для внешнего взаимодействия создайте прослушиватель. Если необходимо использовать службу ClusterIp, добавьте дополнительные порты в прослушиватель по умолчанию, не изменяя существующие параметры.

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

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

  2. В разделе "Компоненты" выберите MQTT Broker.

    Снимок экрана: портал Azure для просмотра конфигурации MQTT операций Интернета вещей Azure.

  3. В списке прослушивателя брокера выберите прослушиватель по умолчанию .

    Снимок экрана: портал Azure для просмотра или изменения прослушивателя брокера по умолчанию.

  4. Проверьте параметры прослушивателя, но не изменяйте существующие параметры. Вместо этого создайте новый порт и настройте его по мере необходимости.

Избегайте изменения прослушивателя брокера по умолчанию

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

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

Создание прослушивателей брокера

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

  • Имя: имя прослушивателя. Это имя также является именем службы Kubernetes, если не переопределено.
  • Тип службы: тип службы Kubernetes. См . раздел "Тип службы".
  • Порты: список портов, которые необходимо прослушивать. См. порты.
  • (Необязательно) Имя службы: переопределите имя службы Kubernetes. См . имя службы.

Пример. Создание прослушивателя с двумя портами

В этом примере показано, как создать прослушиватель с типом службы подсистемы балансировки нагрузки. Ресурс BrokerListener определяет два порта, которые принимают подключения MQTT от клиентов.

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

  2. В разделе "Компоненты" выберите MQTT Broker.

  3. Выберите прослушиватель брокера MQTT для LoadBalancer>Create.

    Введите следующие параметры:

    Параметр Description
    Имя. Имя ресурса BrokerListener.
    Service name Имя службы Kubernetes. Оставьте пустым имя прослушивателя в качестве имени службы.
    тип услуги; LoadBalancer уже выбран.
  4. В разделе "Порты" введите следующие параметры для первого порта:

    Параметр Description
    Порт Ввод 1883
    Проверка подлинности Выберите Нет.
    Авторизация Выберите Нет.
    Протокол Выбор MQTT
    TLS Не добавляйте
  5. Выберите " Добавить запись порта", чтобы добавить второй порт и введите следующие параметры:

    Параметр Description
    Порт Введите 8883
    Проверка подлинности Выбор по умолчанию
    Авторизация Выберите Нет.
    Протокол Выбор MQTT
    TLS Выберите Добавить
  6. В области конфигурации TLS введите следующие параметры:

    Параметр Description
    Режим TLS Выберите "Автоматически"
    имя издателя; Введите azure-iot-operations-aio-certificate-issuer
    Тип издателя Выбор ClusterIssuer

    Оставьте другие параметры по умолчанию и нажмите кнопку "Применить".

  7. Выберите " Создать прослушиватель".

    Снимок экрана: портал Azure для создания брокера MQTT для прослушивателя подсистемы балансировки нагрузки.

тип услуги;

Каждая служба BrokerListener сопоставляется со службой Kubernetes. Тип службы определяет, как брокер предоставляется сети. Поддерживаемые типы служб:

  • ClusterIp: предоставляет брокер на внутреннем IP-адресе кластера. Клиенты могут подключаться к брокеру из кластера. Это тип службы по умолчанию для прослушивателя по умолчанию.
  • NodePort: предоставляет брокер на IP-адрес каждого узла в статическом порту. Клиенты могут подключаться к брокеру за пределами кластера. Этот тип службы полезен для разработки и тестирования.
  • LoadBalancer: предоставляет брокер внешним образом. Служба назначает внешний IP-адрес, который клиенты могут использовать для подключения к брокеру. Это наиболее распространенный тип службы для рабочих развертываний.

Только один прослушиватель на тип службы

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

Service name

Имя службы — это имя службы Kubernetes, связанной с брокером. Если это не указано, имя прослушивателя брокера используется в качестве имени службы. Имя службы должно быть уникальным в пространстве имен.

Совет

Чтобы предотвратить затраты на управление, рекомендуется оставить имя службы пустым. Имя прослушивателя уникально и может использоваться для идентификации службы. Используйте имя службы в качестве переопределения только в том случае, если вы не можете назвать службу после прослушивателя.

Порты

Каждый прослушиватель может иметь несколько портов, и каждый порт может иметь собственные параметры для проверки подлинности, авторизации, протокола и TLS.

Чтобы использовать собственный параметр проверки подлинности или авторизации для порта, необходимо создать соответствующие ресурсы перед его использованием с прослушивателем. Дополнительные сведения см. в разделе "Настройка проверки подлинности брокера MQTT" и настройка авторизации брокера MQTT.

Сведения об использовании TLS см. в разделе "Настройка TLS с автоматическим управлением сертификатами " или "Настройка TLS" с разделами управления сертификатами вручную.

Использование одного порта для прослушивателей

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

Например, если у вас есть прослушиватель с помощью порта 1883, вы не можете создать другой прослушиватель с портом 1883. Аналогичным образом прослушиватель по умолчанию использует порт 18883, поэтому вы не можете создать другой прослушиватель с портом 18883.

Поддержка WebSocket

Брокер MQTT операций Интернета вещей Azure поддерживает MQTT через WebSockets. Чтобы включить WebSockets, задайте для порта протокол WebSockets .

Настройка TLS с помощью автоматического управления сертификатами

Чтобы включить TLS с автоматическим управлением сертификатами, укажите параметры TLS в порту прослушивателя.

Проверка установки cert-manager

При автоматическом управлении сертификатами используется диспетчер сертификатов для управления сертификатом сервера TLS. По умолчанию диспетчер сертификатов устанавливается вместе с операциями Интернета вещей Azure в cert-manager пространстве имен. Перед продолжением проверьте установку.

  1. Используется 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
    
  2. Если вы видите модули pod, которые отображаются как готовые и запущенные, диспетчер сертификатов устанавливается и готов к использованию.

Совет

Чтобы дополнительно проверить установку, проверьте установку документации по cert-manager. Не забудьте использовать cert-manager пространство имен.

Создание издателя для сертификата сервера TLS

Ресурс издателя cert-manager определяет способ автоматического выдачи сертификатов. Cert-manager поддерживает несколько типов издателей в собственном коде. Он также поддерживает внешний тип издателя для расширения функциональных возможностей за пределами собственных поддерживаемых издателей. Брокер MQTT можно использовать с любым типом издателя cert-manager.

Внимание

Во время первоначального развертывания операции Интернета вещей Azure устанавливаются с издателем по умолчанию для сертификатов сервера TLS. Этот издатель можно использовать для разработки и тестирования. Дополнительные сведения см. в разделе "Корневой ЦС по умолчанию" и издателя с помощью операций Интернета вещей Azure. Приведенные ниже действия требуются только в том случае, если вы хотите использовать другого издателя.

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

Издатель ЦС полезен для разработки и тестирования. Его необходимо настроить с помощью сертификата и закрытого ключа, хранящегося в секрете Kubernetes.

Настройка корневого сертификата в качестве секрета Kubernetes

Если у вас есть сертификат ЦС, создайте секрет Kubernetes с сертификатом ЦС и файлами PEM закрытого ключа ЦС. Выполните следующую команду, чтобы импортировать сертификат ЦС в качестве секрета Kubernetes и пропустить следующий раздел.

kubectl create secret tls test-ca --cert tls.crt --key tls.key -n azure-iot-operations

Если у вас нет сертификата ЦС, диспетчер сертификатов может создать сертификат ЦС. Использование диспетчера сертификатов для создания сертификата ЦС называется начальной загрузкой издателя ЦС с самозаверяющими сертификатами.

  1. Начните с создания 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
    
  2. Создайте самозаверяющий сертификат ЦС с помощью следующей команды:

    kubectl apply -f ca.yaml
    

Cert-manager создает сертификат ЦС с помощью значений по умолчанию. Свойства этого сертификата можно изменить, изменив спецификацию сертификата. Список допустимых параметров см . в документации по диспетчеру сертификатов.

Распространение корневого сертификата

В предыдущем примере сертификат ЦС хранится в секрете test-caKubernetes. Сертификат в формате 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 с автоматическим управлением сертификатами.

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

  2. В разделе "Компоненты" выберите MQTT Broker.

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

  4. Параметры TLS можно добавить в прослушиватель, выбрав TLS на существующем порту или добавив новый порт.

    Снимок экрана: портал Azure для создания брокера MQTT для прослушивателя подсистемы балансировки нагрузки с автоматическими сертификатами TLS.

    Введите следующие параметры:

    Параметр Description
    Имя. Имя ресурса BrokerListener. Введите aio-broker-loadbalancer-tls.
    Порт Номер порта, на котором брокерListener прослушивает подключения MQTT. Введите 8884.
    Проверка подлинности Ссылка на ресурс проверки подлинности.
    Авторизация Справочник по ресурсу авторизации.
    TLS Нажмите кнопку Добавить.
    имя издателя; Имя издателя cert-manager. Обязательный.
    Тип издателя Тип издателя cert-manager. Обязательный.
    Группа издателей Группа издателя cert-manager. Обязательный.
    Алгоритм закрытого ключа Алгоритм закрытого ключа.
    Политика смены закрытого ключа Политика поворота закрытого ключа.
    DNS-имена Альтернативные имена субъектов DNS для сертификата.
    IP-адреса IP-адреса альтернативного имени субъекта для сертификата.
    Имя секрета Секрет Kubernetes, содержащий сертификат клиента X.509.
    Duration Общее время существования сертификата сервера TLS по умолчанию составляет 90 дней.
    Продление до Когда начнется продление сертификата.
  5. Нажмите кнопку "Применить" , чтобы сохранить параметры TLS.

После настройки ресурса BrokerListener брокер MQTT автоматически создает новую службу с указанным портом и протоколом TLS.

Необязательно. Настройка параметров сертификата сервера

Единственными обязательными параметрами являются имя издателя и тип издателя. Все остальные свойства созданных сертификатов сервера 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.

При необходимости не забудьте указать методы проверки подлинности.

Корневой ЦС по умолчанию и издатель по умолчанию

Чтобы приступить к работе, операции Интернета вещей Azure развертываются с сертификатом ЦС по умолчанию и издателем сертификатов сервера TLS. Этот издатель можно использовать для разработки и тестирования. Дополнительные сведения см. в разделе "Корневой ЦС по умолчанию" и издателя сертификатов сервера TLS.

Для рабочей среды необходимо настроить издателя ЦС с сертификатом из доверенного ЦС, как описано в предыдущих разделах.

Настройка TLS с помощью ручного управления сертификатами

Чтобы вручную настроить брокер MQTT для использования определенного сертификата TLS, укажите его в ресурсе BrokerListener со ссылкой на секрет Kubernetes и разверните его с помощью kubectl. В этой статье показан пример настройки TLS с самозаверяющими сертификатами для тестирования.

Создание центра сертификации с помощью step CLI

Шаг — это диспетчер сертификатов, который может быстро приступить к работе и работе при создании собственного частного ЦС и управлении ими.

  1. Установите интерфейс командной строки и создайте сертификат и ключ корневого центра сертификации.

    step certificate create --profile root-ca "Example Root CA" root_ca.crt root_ca.key
    
  2. Создайте промежуточный сертификат ЦС и ключ, подписанный корневым ЦС.

    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

  1. Создайте полную цепочку сертификатов сервера, где порядок сертификатов имеет значение: сертификат сервера является первым в файле, промежуточным является второй.

    cat  mqtts-endpoint.crt intermediate_ca.crt  > server_chain.crt
    
  2. Создайте секрет 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 с помощью ручного управления сертификатами.

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

  2. В разделе "Компоненты" выберите MQTT Broker.

  3. Выберите или создайте прослушиватель. Вы можете создать только один прослушиватель для каждого типа службы. Если у вас уже есть прослушиватель одного типа службы, можно добавить дополнительные порты в существующий прослушиватель. Чтобы следовать примеру, укажите имя службы прослушивателя как mqtts-endpoint.

  4. Параметры TLS можно добавить в прослушиватель, выбрав TLS на существующем порту или добавив новый порт.

    Снимок экрана: портал Azure для создания брокера MQTT для прослушивателя подсистемы балансировки нагрузки с помощью ручных сертификатов TLS.

    Введите следующие параметры:

    Параметр Description
    Порт Номер порта, на котором брокерListener прослушивает подключения MQTT. Обязательный.
    Проверка подлинности Ссылка на ресурс проверки подлинности.
    Авторизация Справочник по ресурсу авторизации.
    TLS Нажмите кнопку Добавить.
    Имя секрета Секрет Kubernetes, содержащий сертификат клиента X.509.
  5. Нажмите кнопку "Применить" , чтобы сохранить параметры 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 таким же образом. После создания секрета он автоматически импортируется в прослушиватель.