Skip to content

Commit 8f1debb

Browse files
committed
fix(services): use COREOS_PUBLIC_IPV4 for advertised IP
Currently, all containers use a hacky method to determine the IP to advertise to etcd - the method determines the machine's default route, and uses that IP. However, this can be configured very differently depending on the environment, and in some cases doesn't work at all. Instead, we use COREOS_PUBLIC_IPV4, as that is set on every CoreOS host, and we trust that CoreOS knows the machine's networks better than we do. fixes #845
1 parent 1bce0c1 commit 8f1debb

2 files changed

Lines changed: 3 additions & 2 deletions

File tree

scheduler/coreos.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ def attach(self, name):
223223
[Service]
224224
EnvironmentFile=/etc/environment
225225
ExecStartPre=/bin/sh -c "until /usr/bin/docker port {name} {port} >/dev/null 2>&1; do sleep 2; done; port=$(docker port {name} {port} | cut -d ':' -f2); echo Waiting for $port/tcp...; until netstat -lnt | grep :$port >/dev/null; do sleep 1; done"
226-
ExecStart=/bin/sh -c "port=$(docker port {name} {port} | cut -d ':' -f2); echo Connected to $COREOS_PUBLIC_IPV4:$port/tcp, publishing to etcd...; while netstat -lnt | grep :$port >/dev/null; do etcdctl set /deis/services/{app}/{name} $COREOS_PUBLIC_IPV4:$port --ttl 60 >/dev/null; sleep 45; done"
226+
ExecStart=/bin/sh -c "port=$(docker port {name} {port} | cut -d ':' -f2); echo Connected to $COREOS_PRIVATE_IPV4:$port/tcp, publishing to etcd...; while netstat -lnt | grep :$port >/dev/null; do etcdctl set /deis/services/{app}/{name} $COREOS_PRIVATE_IPV4:$port --ttl 60 >/dev/null; sleep 45; done"
227227
ExecStop=/usr/bin/etcdctl rm --recursive /deis/services/{app}/{name}
228228
229229
[X-Fleet]

systemd/deis-controller.service

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ Requires=deis-logger.service deis-builder.service
44
After=deis-logger.service deis-builder.service
55

66
[Service]
7+
EnvironmentFile=/etc/environment
78
TimeoutStartSec=20m
89
ExecStartPre=/bin/sh -c "/usr/bin/docker history deis/controller >/dev/null || /usr/bin/docker pull deis/controller"
9-
ExecStart=/bin/sh -c "IFACE=$(netstat -nr | grep ^0.0.0.0 | awk '{print $8}') && HOST_IP=$(/bin/ifconfig $IFACE | awk '/inet /{print $2}') && exec /usr/bin/docker run --name deis-controller -p 8000:8000 -e PUBLISH=8000 -e HOST=$HOST_IP --volumes-from=deis-logger deis/controller"
10+
ExecStart=/bin/sh -c "docker run --name deis-controller -p 8000:8000 -e PUBLISH=8000 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from=deis-logger deis/controller"
1011
ExecStop=/usr/bin/docker rm -f deis-controller
1112

1213
[Install]

0 commit comments

Comments
 (0)