IoT Edgeランタイムのネットワーク構成
IoT Edge v2はDocker技術を使って、各モジュールを分離して動かしています。
はたして、モジュール間はどういう感じでつながっているのか??疑問だったので調べることにしました。
今回は、IoT Edgeランタイム(システムモジュール)の、edgeAgentとedgeHubを調べました。
Network
各システムモジュールを調べる前に、Dockerに存在するNetworkを確認しておきましょう。
ubuntu@ubuntu:~$ docker network ls NETWORK ID NAME DRIVER SCOPE bc452e56bae2 azure-iot-edge bridge local 191c4158859e bridge bridge local e524d4a26c71 host host local 54549f043a71 none null local ubuntu@ubuntu:~$
none, bridge, hostとは別に、azure-iot-edgeというブリッジが存在していました。
edgeAgent
edgeAgentのコンテナ情報を見てみましょう。
NetworkModeがazure-iot-edgeで、azure-iot-edgeネットワークにIP=172.18.0.2、GW=172.18.0.1で繋がっているようです。
ubuntu@ubuntu:~$ docker inspect edgeAgent
[
{
...
"Name": "/edgeAgent",
...
"HostConfig": {
...
"NetworkMode": "azure-iot-edge",
"PortBindings": null,
...
},
...
"NetworkSettings": {
...
"Networks": {
"azure-iot-edge": {
...
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.2",
...
}
}
}
}
]
ubuntu@ubuntu:~$
edgeHub
一方、edgeHubは、NetworkModeがdefaultで、443/tcpと8883/tcpを外部に公開している?みたい。edgeAgentと同様に、azure-iot-edgeネットワークにIP=172.18.0.3、GW=172.18.0.1で繋がっているようです。
NetworkModeがdefaultって何だろう??Dockerよくわからん。
ubuntu@ubuntu:~$ docker inspect edgeHub
[
{
...
"Name": "/edgeHub",
...
"HostConfig": {
...
"NetworkMode": "default",
"PortBindings": {
"443/tcp": [
{
"HostIp": "",
"HostPort": "443"
}
],
"8883/tcp": [
{
"HostIp": "",
"HostPort": "8883"
}
]
},
...
},
...
"NetworkSettings": {
...
"Networks": {
"azure-iot-edge": {
...
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.3",
...
}
}
}
}
]
ubuntu@ubuntu:~$
tempSensor
気になったので、センサーデータをシミュレートする、tempSensorモジュールも見てみました。
ubuntu@ubuntu:~$ docker inspect tempSensor
[
{
...
"Name": "/tempSensor",
...
"HostConfig": {
...
"NetworkMode": "default",
"PortBindings": null,
...
},
...
"NetworkSettings": {
...
"Networks": {
"azure-iot-edge": {
...
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.4",
...
}
}
}
}
]
ubuntu@ubuntu:~$
まとめ
| コンテナ名 | NetworkMode | PortBindings | 接続ネットワーク | 接続ネットワークIP |
|---|---|---|---|---|
| edgeAgent | azure-iot-edge | azure-iot-edge | 172.18.0.2 | |
| edgeHub | default | 443/tcp,8883/tcp | azure-iot-edge | 172.18.0.3 |
| tempSensor | default | azure-iot-edge | 172.18.0.4 |
なるほど。ということは、手作りモジュールはPortBindingsすれば外部からIP接続できるってことか。
うーむ、defaultって何だろう?