How a Texas school district migrated to Kubernetes and public cloud
(A guest blog post by Noe Arzate, Director of Technology, Mount Pleasant Independent School District, Texas)
Mount Pleasant Independent School District is a public school district based in Mount Pleasant, Texas. In addition to students in the Mount Pleasant area, the district also serves high school students from neighboring districts.
Currently Mount Pleasant uses many applications, some of which are homegrown, while others are COTS applications running on Linux and Windows-based virtual machines. I lead the Mount Pleasant IT team and have recently been evaluating different options on infrastructure (public vs private cloud) and also thinking about automating application life-cycle management.
Some of the challenges we faced were –
- Identifying the right applications and approach towards cloud migration.
- Deciding between on-prem infrastructure v/s leveraging public cloud providers.
- Automating application deployment and lifecycle management.
- Building a repeatable methodology that can be scaled to migrate all applications.
- Application high availability and performance.
- Minimizing lock-in. With such rapid changes around us, we did not want to be locked down where changing directions becomes a challenge.
- Leveraging open-source innovations.
To tackle these challenges, I decided to evaluate both on-premises as well as cloud solutions and chose a critical WordPress based application as the first application to test these options. Having done my research, I wanted to avoid building different deployment and management models for different types of applications. This is when I looked at containers as standard packaging and run-time management for my applications. Naturally, I also looked at Kubernetes as an option to make our container orchestration and management infrastructure agnostic. The question was whether Kubernetes was overkill for a simple WordPress/MySQL application.
While I knew that Kubernetes may introduce an additional layer of complexity, I also recognized that it had the promise of providing a consistent way of running and managing applications irrespective of the infrastructure. To address the complexity of running Kubernetes, I chose Nirmata’s cloud-based Kubernetes management platform.
The Nirmata solution eliminates the complexity of Kubernetes cluster and workload management and provides a single pane management plane to manage applications across on-premises and cloud infrastructure.
I first tried an existing on-premises infrastructure stack for the application, simply to leverage existing investments. With Nirmata, I stood up a Kubernetes HA cluster on my HCI infrastructure, and migrated WordPress application containers with Nirmata’s help and began testing the application. I chose to use the Kubernetes StatefulSet and block storage for the MySQL database while preferring file storage for WordPress data.
With the on-premises deployment, I soon ran into technical compatibility issues with persistent storage that would require me to undergo expensive infrastructure upgrade. This was not a viable option.
With my application already containerized and the Kubernetes application manifest modeled in the Nirmata catalog, I could now easily stand up a Kubernetes cluster on and leverage other AWS cloud services like ELB for load balancing, and EBS/EFS for storage, to deploy this application in no time. Using AWS, also allowed me to easily compare additional services like AWS RDS, which I found to be a better option than running my own MySQL database and managing AWS cloud backup.
Having tested the solution thoroughly over the next 2 months, here are my findings –
- Nirmata, Kubernetes, and containers made my applications infrastructure agnostic.
- Automated CI/CD pipeline made new changes easy to manage.
- Linux seems currently more suited for running applications on Kubernetes. Windows is catching up, but still has some ways to go.
- While on-prem infrastructure may provide some efficiencies and a familiar CAPEX financial model, it is the trade-off for managing all components v/s leveraging managed services available in the cloud. I was able to move much faster in the cloud, and compatibility was less of an issue. In the long run, I will need to manage cloud costs carefully, so I do not end up paying more for it.
- I now have the replicable template for the migration of my next set of applications.
Using Nirmata and AWS provided me with a way to tame Kubernetes’ complexity, and build a template for migrating my applications to the public cloud. I am happy to share more of my findings once I am done with migrating my next set of applications.
If you have any questions or feedback, feel free to reach out at firstname.lastname@example.org