Le problème sur lequel je suis tombé hier est du au fait que les containers ne pouvaient pas accéder les uns aux autres simplement. La solution que j’ai trouvée est de créer un réseau en overlay (c’est à dire que les packets circulant dans ce réseau sont encapsulés et transite sur un autre réseau). Ce réseau est chiffré est accèssible uniquement par les service démarés explicitement sur ce réseau. L’avantage est qu’il n’est pas necessaire de rediriger les ports car les containers on un accès direct à chacun d’entre eux via un DNS.
Le reverse proxy va permetre d’éviter le problème cité plus haut. Commencons par créer la configuration de nginx :
server {
listen 80;
location / {
proxy_pass http://spark-master:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Il faut ensuite créer le Dockerfile :
FROM nginx
COPY nginx-config /etc/nginx/conf.d/default.conf
Nous pouvons à présent démarer les test de cette image, pour commencer démarons un service spark-master :
docker service create --name spark-master --network spark-net nyanloutre/spark /start-master.sh
Puis le reverse proxy
docker service create --name spark-proxy --network spark-net -p 8080:80 nyanloutre/spark-proxy
On peut accéder à l’interface de Spark depuis http://cds-stage-mv1:8080/ ou en remplaceant cds-stage-mv1 par n’importequelle machine du cluster
L’image est disponible ici