This repository documents our team's deployment and hardening of the Products API and associated services in a Kubernetes environment during a hackathon lab. The lab aimed to simulate real-world DevOps scenarios and apply Kubernetes best practices in deploying production-ready systems.
We successfully deployed a multi-service system consisting of:
products-db– a PostgreSQL databaseproducts-api– an API service exposing product datastock-api– a microservice managing stock levelsweb-ui– a frontend interface for interacting with the services
- Environment variables managed using ConfigMaps and Secrets
- Persistent storage with StatefulSets and PVCs for the database
- Ingress routing with DNS simulation for seamless access
- Deployment hardening using liveness and readiness probes, resource limits, and security contexts
- Full observability using Prometheus, Grafana, and the EFK logging stack
products-api-deployment/
├── images/ # Screenshots from various stages
│ ├── 1.png
│ ├── 2.png
│ └── ... up to 14.png
├── deployment.yaml # Kubernetes deployment configuration
├── config/ # ConfigMaps and Secrets
├── ingress/ # Ingress resources and routing rules
├── monitoring/ # Prometheus and Grafana setup
├── logging/ # EFK stack configurations
└── README.md
- Web UI:
http://products.local - Products API:
http://api.products.local/products - Grafana:
http://localhost:3000(Default: admin/admin) - Kibana:
http://localhost:5601
Ensure your /etc/hosts file is configured to simulate DNS resolution for the local domain.
- Prometheus scrapes metrics from the deployed services
- Grafana visualizes metrics using a custom dashboard
- Elasticsearch, Fluentd, and Kibana (EFK) aggregate and display logs
Below are snapshots from different stages of the deployment process:
- Victoria Mwaura
- Norah Kimathi
- Joshua Radula
- Maxwell Opondo
This lab was an opportunity to explore and overcome practical challenges in Kubernetes deployment and system design. We emphasized clean configurations, observability, and security to reflect best practices in real-world DevOps environments.












