The article is a hands-on showcase of a DevOps project demonstrating containerization, Kubernetes orchestration, CI/CD using GitHub Actions, and observability with Prometheus, all running locally.
The project involved creating a full-stack web application where a React frontend collects user information, passed to a Flask backend interacting with a PostgreSQL database, caching data in Redis, and routing traffic with Nginx.
Containerization was achieved using Docker, with each component packaged into its own container and custom images stored on Docker Hub.
Kubernetes orchestration was managed with Helm charts, MicroK8s as the distribution, and key resources like Deployments, StatefulSet, ConfigMaps, Secrets, and Ingress.
NGINX was configured as a reverse proxy for efficient traffic routing, while Redis provided caching for faster response times.
PostgreSQL served as the main relational database for persistent storage using Kubernetes persistent volumes.
Observability was ensured with the Prometheus stack, Grafana for visualization, and Alertmanager for alerts on metrics breaches.
CI/CD pipeline was set up with GitHub Actions, including linting, testing, Docker image building, and deployment triggers to the local Kubernetes cluster.
Challenges included tweaking Nginx Ingress for service routing, managing secrets securely using Kubernetes Secrets, setting resource limits, and integrating a self-hosted GitHub runner.
The project enhanced the author's DevOps skills, covering Dockerfile writing, Helm deployments, Kubernetes orchestration, CI/CD implementation, observability tools setup, and real-time alerts configuration.
The experience improved the author's technical skills, understanding of system reliability, and automation appreciation.