The challenge posed by the Aut2 team, made up of Jordi, Kristof and Petra and mentored by Jesús, is to integrate Load Balancer management into the platform control panel, in order to make changes to the NGINX balancer configuration and have these be applied hot, without the need to enter the CaaS platform manager to edit the configuration file and restart the process.
Why this challenge?
Due to previous experience working with the platform, the team identified that, from the platform’s Control Panel, one can do a very complete management of the configuration of multiple components, but not of the Load Balancer (NGINX). In that case, making changes in its configuration requires going into the container or physical machine, editing the configuration, and restarting the balancer service.
This is because the Load Balancer module is based on the free version of NGINX (https://www.nginx.com/). This balancer centralizes all requests and redirects them internally to the different components deployed on the container platform. The problem with the free NGINX version is that the internal redirections are configured in a file which does not support hot changes – so, every time a microservice is added or a module is redeployed, NGINX is not aware of it until some manually enters the container platform manager, edits the configuration file and restarts, and then it is aware of the change.
The team developed:
- Screens in the platform’s Control Panel for viewing and editing the NGINX configuration.
- New container for the Load Balancer module, adding services to the current one that allow recovering and editing the configuration, restoring backup copies and restarting the NGINX service. https://github.com/onesaitplatform/onesaitplatform-revolution-aut-2/tree/master/devops/build-deploy/docker/nginx-aut2
- Integration between the Control Panel and the services of the new Load Balancer module.
Extended platform components:
- Control Panel: Screens and functionality have been added to this module to be able to manage the Load Balancer configuration in an integrated way.
- Load Balancer in CaaS: They created new dockerized component that allows the functionality of the current Load Balancer module to be extended, so that the configuration of the NGINX balancer on which the Load Balancer module is based can be modified from the Control Panel without having to access to CaaS.
The contribution made to the platform can be seen in the team’s github repository:
The running result of which can be seen in the following video, where a hot re-configuration of the balancer is performed: