Открытие порта для хоста из контейнерного модуля Azure IoT Edge

Я написал собственный модуль Azure IoT Edge (Node.js), который должен взаимодействовать с сервером WebSocket, работающим на хосте (а не в контейнере).

Как я могу открыть контейнер модуля IoT Edge на порту 9090, чтобы разрешить этот обмен данными?


person Rene Limberger    schedule 27.10.2019    source источник


Ответы (3)


Я заставил это работать, добавив это в мои параметры создания для моего модуля в файле json развертывания:

"createOptions": {
    "ExposedPorts": {
        "9090/tcp": {}
    }
}
person Rene Limberger    schedule 28.10.2019
comment
либо мы неправильно поняли ваш вопрос, это что-то странное в вашей настройке. Вам не нужно открывать порты вашего модуля для исходящей связи. Открытие портов требуется только в том случае, если вам нужно иметь входящую (открывающую) связь с вашим модулем. - person silent; 06.11.2019

CreateOptions включает вход, когда процесс / контейнер, работающий на хосте, может взаимодействовать с модулем через открытый порт.

Для выхода к конечной точке на хосте ничего не требуется. Можно просто использовать hostIP: someport.

person Cindy Xing    schedule 28.10.2019
comment
Спасибо, Синди. В моем случае использования был сервер WebSocket на хосте. С ExpostedPorts я смог подключиться и общаться с ним из контейнера модуля. Без ExposedPorts в соединении отказано. - person Rene Limberger; 29.10.2019

Для исходящего подключения (от вашего модуля к какой-либо другой конечной точке) вам не нужно ничего настраивать на модуле. Это должно работать из коробки. Конечно, на вашем хосте могут быть брандмауэры и т. Д.

person silent    schedule 28.10.2019