Phoenix Flux is a cutting-edge demonstration of self-healing infrastructure using cloud-native technologies. This project showcases a robust, scalable, and resilient application deployment that can automatically recover from failures and adjust to varying loads without human intervention.
- Self-Healing: Automatic recovery from common failure scenarios
- Auto-Scaling: Dynamic resource adjustment based on demand
- Cloud-Native: Leverages Kubernetes for container orchestration
- Infrastructure as Code: Uses Terraform for reproducible infrastructure
- Comprehensive Monitoring: Real-time insights with Prometheus and Grafana
- Cloud Platform: Oracle Cloud Infrastructure (OCI)
- Container Orchestration: Kubernetes (OKE)
- Application: Python Flask
- Database: PostgreSQL
- Infrastructure as Code: Terraform
- Monitoring: Prometheus & Grafana
- Version Control: Git
.
├── docs/ # Project documentation
├── infrastructure/ # Infrastructure as Code
│ ├── kubernetes/ # Kubernetes configuration files
│ └── terraform/ # Terraform scripts for OCI
├── monitoring/ # Monitoring configuration
│ ├── grafana/ # Grafana dashboards
│ └── prometheus/ # Prometheus configuration
├── scripts/ # Utility scripts
├── src/ # Application source code
│ ├── app/ # Flask application
│ └── tests/ # Unit tests
├── .gitignore
├── README.md
└── requirements.txt
- OCI Account with Free Tier access
- Terraform >= 0.12
- kubectl
- Docker
- Python 3.8+
-
Clone the repository:
git clone https://github.com/yourusername/phoenix-flux.git cd phoenix-flux -
Set up OCI CLI and configure your credentials.
-
Initialize and apply Terraform configuration:
cd infrastructure/terraform terraform init terraform apply -
Deploy the application to Kubernetes:
cd ../../ ./scripts/deploy.sh -
Access the application:
kubectl get servicesUse the external IP provided to access the application.
Access Prometheus and Grafana dashboards:
-
Port forward Prometheus:
kubectl port-forward svc/prometheus-server 9090:9090Access at
http://localhost:9090 -
Port forward Grafana:
kubectl port-forward svc/grafana 3000:3000Access at
http://localhost:3000
Run unit tests:
python -m pytest src/tests
For load testing and demonstrating auto-scaling, refer to docs/4_testing.md.
Detailed documentation is available in the docs/ directory:
1_planning_and_requirements.md: Project planning and requirements2_design.md: System design and architecture3_implementation.md: Implementation details4_testing.md: Testing procedures and results5_documentation_and_presentation.md: Documentation guidelines6_submission_and_demo.md: Project submission and demo instructionsarchitecture.md: Detailed system architecturesetup.md: Comprehensive setup guideuser_guide.md: User manual for the application
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Oracle Cloud for providing free-tier resources
- The Kubernetes, Terraform, and Flask communities for their excellent documentation and tools
Happy coding! 🚀