I have multiple microservices running on my AWS ECS Fargate cluster. Inside a task (pod), there will be multiple containers (1 container for core-business service and additional 3 sidecar containers). Here are the list of those containers:
- core-business service container (runs the core business service on specific port)
- consul-agent container (runs consul-agent and joins it with the consul-master)
- consul-template container (gets the service information from consul and updates the haproxy.cfg)
- haproxy container (takes the haproxy.cfg from consul-template and runs)
All these containers are up and running fine as well. The problem is to reload the haproxy. Since the consul-template is responsible for updating the haproxy.cfg file, Should I need to add some configuration on consul-template itself to update the haproxy?
Here is the command I am currently using for consul-template:
consul-template -consul-addr=xx.xx.xx.xx:8500 -template /etc/consul-template/data/haproxy.cfg.ctmpl:/etc/consul-template/data/haproxy.cfg
What can I try to achieve this?
I am currently having the exact same issue, but for Nginx.
From my research, there is no good solution. The one that seems to work is to mount the volume
on the consul-template container.
I see you are using :
in order to run a command after the consul-template renders a new config file, use something like:
HINT
I find it more readable to use consul-template config files, the language is very well specified here: https://github.com/hashicorp/consul-template/blob/master/docs/configuration.md .
Using that approach you would have a config file (for example consul_template_config.hcl) for consul-template like:
Then, you run the consul-template container using
or using
I know it is not a good solution to use this docker volume (security warnings), but it was what I could find about our use case.