This repository contains a Student Management API built with modern cloud-native principles. The application provides RESTful endpoints for managing student data, complete with infrastructure setup using Docker, Kubernetes, and a comprehensive observability stack.
A RESTful service that provides CRUD operations for student management:
- Create new student records
- Retrieve student information
- Update existing student details
- Delete student records
- Postgres database for data persistence
Enterprise-grade secrets management solution that provides secure storage and access control for tokens, passwords, certificates, and encryption keys - https://www.vaultproject.io
Kubernetes operator that integrates external secret management systems like AWS Secrets Manager, HashiCorp Vault, and others with Kubernetes - https://external-secrets.io
Declarative continuous delivery tool for Kubernetes that follows the GitOps methodology for cluster management and application deployment - https://argoproj.github.io/cd
- Prometheus: Open-source metrics collection and alerting system that pulls metrics from instrumented jobs - https://prometheus.io
- Grafana: Multi-platform analytics and interactive visualization web application for metrics visualization - https://grafana.com
- Alert Manager: Handles alerts sent by Prometheus server and takes care of deduplicating, grouping, and routing alerts - https://prometheus.io/docs/alerting/latest/alertmanager
- Docker & Docker Compose
- Kubernetes cluster
- Helm 3.8+
- kubectl
- Clone the repository:
git clone https://github.com/akshat5302/one2n-sre-bootcamp.git- Setup the environment variables:
chmod +x setup.sh
./setup.sh- Start the application:
docker compose up -dThis will start all necessary services including:
- Student API
- Postgres Database
- Monitoring stack
The project includes:
- Dockerfile for containerization
- Makefile for common operations
- docker-compose.yml for local development
- Helm charts for Kubernetes deployment
Deployment is managed through Helm charts located in the charts/ directory:
charts/
├── student-api/
├── vault/
├── external-secrets/
├── argocd/
└── monitoring/
GET /api/v1/students # List all students
POST /api/v1/students # Create new student
GET /api/v1/students/:id # Get student by ID
PUT /api/v1/students/:id # Update student
DELETE /api/v1/students/:id # Delete student
After running docker compose up -d, services are available at:
- Student API:
http://localhost:8080 - Grafana:
http://localhost:3000 - Prometheus:
http://localhost:9090 - ArgoCD:
http://localhost:8080
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and bug reports, please create an issue in the GitHub repository.
For more detailed information about each component, please refer to the documentation in their respective directories:
This project is actively maintained and regularly updated. For the latest changes, please check the CHANGELOG.md.
1. Add test cases for application
2. Update the CI pipeline with linting and test steps
3. Add an observability stack for Alerting and Logging
4. Update README.md
- Create a Helm Chart Release Pipeline