Today we are going to look at how we can benefit from modern devops tools to implement simple Service Discovery.
What is Service Discovery? To put it very simply, it is a combinations of scripts or tools which can help to discover certain
properties of a deployable applications, like IP address, port, etc, so deployment could be automated.
I remember in one of my previous jobs, we use to come to office at 6am for the release. It was fun…
So the ops guys would configure the reverse proxy with all configuration required for the new app, like their ports, then add the new app, take the old application off the reverse proxy’s pool, then restart the proxy. Very tedious process. After all done, they would run many tests to confirm all is looking good. The flow would look something like on the diagram:
Nowadays you can imagine different software development world, applications running as docker containers and deployment happening multiple times a day.
Today I will try to demonstrate how to automate configuring the reverse proxy automatically, so no matter what is the IP address or port the application server is running at, all will be configured automatically, and we will only deploy the application or remove it when needed:
Of course it is just a concept to see how specific devops tools could be benefited from and in real life docker orchestration tools like Rancher or Kubernetes, with their embedded mechanisms, will either take care of the Service Discovery or will make it much easier.
But I just wanted to show how we can do it piece by piece, so we know what is going on and how things work.
So here is a list of the things we are going to do:
- How to Dockerize simple NodeJs app
- How to use Consul as service discovery tool for storing container data in a KV storage
- How to use registrator as service discovery tool for inspecting containers
- How to use nginx as reverse proxy
- How to use Consul-template for configuring nginx automatically
We are going to start from