Hello!
First of all, thank you very much for creating Nomad, it’s an amazing piece of software! Simplifies the work a lot (and I don’t have to waste time on gazillion of configuration phases with Kubernetes) - I am in the middle of migrating my private infrastructure to Nomad and am very satisfied with it!
But! I didn’t have any problems with apps created in a microservice architecture, I do have problems with some usecases, like simple PHP applications. Let me describe the problem:
Background:
- Driver:
docker
Job Description:
- job:
app
- group:
app
- task
nginx
- task
php-fpm
- task
- group:
Now, I don’t want to mess around with creating a single image with nginx + php-fpm
, I just wanted to use those two official images and make them communicate with each other. The problem is that Nomad doesn’t give an easy way to do it (or I’m not aware of it).
What I’ve already considered and what didn’t work for me:
-
Registering
php-fpm
as a Consul service and use Consul Template to createnginx
configuration based on the availablephp-fpm
services.- When I scale up the group, I may end up having the 1st group instance deployed on node1 and the 2nd group deployed on node2. But - if I understand this correctly - Consul Template will put all of the IPs in every nginx config, which won’t work (as node1 nginx doesn’t have access to node2 php-fpm, as obviously I don’t expose those services publicly)
-
Using
NOMAD_ADDR_label
in thetemplate
stanza for the nginx task- This didn’t work as the environment variable exposes a
localhost
address, which obviously doesn’t work within the bridge network
- This didn’t work as the environment variable exposes a
Is there any other way I can deploy this scenario properly with Nomad? What I’d like to have is:
- Easily communicate between task1 and task2 within a job group
- Be able to scale this kind of dependent group between multiple nodes and not worry about the networking
- Use bridged network (not host network)
I might not understand everything right so I’d love to hear any suggestions and feedback!
Thanks in advance for any reply!