One of the most recent projects our Solutionauts have worked on involved developing a DevOps toolkit for customised Kubernetes deployment for one of our large Enterprise customers. This integration includes Kubernetes, VMWare, Ansible, Golang, RabbitMQ, Harbor, Prometheus, Grafana and Helm. Sounds like a technology disaster waiting to happen!
Initially, an in-house toolkit had been developed by the customer’s internal team to deploy Kubernetes. Unfortunately, this internal team lacked the skills and resources required to design and build it, resulting in an unstable, unreliable and flaky system.
In order to make this system run more efficiently, they needed to implement a modern DevOps toolkit that can automate the deployment of a production-grade system. This Enterprise also required a new monitoring system to integrate with their existing operations platform and a team to provide ongoing enhancements to the toolkit, freeing up internal resources to work on their existing business.
The Aptira Solution
To produce this toolkit, Aptira built a suite of Ansible playbooks (consisting of more than 20 roles). Some playbooks were based on our generic Kubernetes Installer which can install a generic k8s system. We then customised the Kubernetes Installer, deployed Kubernetes on VMWare and enabled the ability to provision VMWare volumes for Kubernetes pods. We also deployed VMWare’s Harbor registry server for storing Docker images, RabbitMQ servers (in HA) for messaging, and Prometheus for monitoring and alarming.
To integrate Prometheus with their internal alarm and event management system, Aptira developed a custom simple network management protocol (SNMP) trapper to convert Prometheus alerts into SNMP traps and send them to the internal alarming system. This SNMP trapper has been developed in Golang and is running inside a Kubernetes container.
With the help of this highly customised toolkit, all disasters have been avoided. The system is now successfully running in production and Kubernetes has been deployed. It is fully integrated with this Enterprise’s internal operations platform, so monitoring and alerts are sent to the appropriate team for action.
We will continue to monitor the platform to ensure any enhancements are applied, continually improving the efficiency of this system. There’s more to come on the Golang part of this project – stay tuned!