Moving to Docker – Practicing What We Preach (Work in Progress)
We have made a decision to jump head first into containers with a focus on providing Enterprise Grade Docker and Kubernetes Support. It’s only right to convert our infrastructure into containers. We are going to start with our bread and butter, which is our phone system. Being a support company with a strong focus on helping companies deploy VoIP means that this is huge risk for us – we have to get this right or we will literally lose money. But, if you never jump you will not soar. In other words, if we are going to provide support for Docker, Kubernetes and in general Microservices we need to go through the process ourselves so that we can help others navigate the waters.
We currently use the FreePBX distribution as our PBX and Flowroute as our carrier (we love Flowroute by the way). We only use an handful of the options in FreePBX. To be precise, we use:
- Extension Management
- Ring Groups
If you think about it…each one of these features could become a container, but does that really make sense….not really sure yet.
We have decided to break this project into phases and we will make each new phase better by incorporating what we learned from the previous phases.
Phase I – Create a conference container and have all conference traffic be routed to 1 or more containers that just handles conferencing. There are times when we had multiple conferences happening all at the same time, which causes performance issues. We want a solution that would realize that the existing conference server has too many requests and it automatically spins up another conference server and start routing requests to the newly created instance.
More phases to come…
- Kamailio – to provide load balancing and routing of calls to one or more Asterisk servers
- Asterisk – Media server
- Consul – Will keep track of all Asterisk servers that are up and available
We will also need a Web GUI for managing the conferences and the other features that we need. FreePBX is not container aware, so we are toying with the idea of developing a simple Web GUI that knows how to deal with functionality being containerized.