This project is a practical and robust demonstration of how to build, monitor, and operate a modern application using the best practices in DevOps, web development, and cloud infrastructure. It is designed to be highly scalable, secure, and easy to integrate into production environments.
The Website Portfolio combines:
- Backend in Flask: A lightweight and efficient Python framework.
- Monitoring and Observability: With Prometheus, Grafana, and cAdvisor.
- Infrastructure Automation: Using Terraform and GitLab CI/CD.
- Advanced Security: Configured Fail2Ban to protect against malicious attacks.
This project is ideal for professionals who want to learn or implement modern development and operational solutions.
- Flask: Python framework for web development.
- Gunicorn: WSGI server for production.
- HTML, CSS (with custom animations), and JavaScript.
- Docker: Containers for all services.
- Docker Compose: Local orchestration.
- Kubernetes: Deployments in managed clusters.
- Terraform: Infrastructure automation.
- GitLab CI/CD: Pipelines for automated builds, tests, and deployments.
- Prometheus: Metrics collection.
- Grafana: Interactive dashboards.
- cAdvisor: Container monitoring.
- Fail2Ban: Protection against brute force and malicious injection attacks.
build-app/
: Dockerfile and scripts for the Flask backend.docker-compose/
: Configuration for Docker Compose and NGINX.pipelines/
: GitLab CI/CD pipeline configurations.kubernetes/
: Kubernetes manifests for deployment.iac/
: Terraform configurations for infrastructure provisioning.static/
: Static files (CSS, JS, images).templates/
: HTML templates for the website.
- Real-time container metrics with cAdvisor.
- Interactive dashboards in Grafana.
- Configurable alerts in Prometheus.
- GitLab pipelines for:
- Building and deploying Docker images.
- Provisioning infrastructure with Terraform.
- Automated deployments to Kubernetes.
- Fail2Ban configured to protect against:
- Malicious HTTP/HTTPS requests.
- Brute force attacks.
- Managed deployments in OKE clusters.
- Ingress configuration with NGINX and cert-manager.
To run this project locally, you will need:
- Docker: Install Docker
- Docker Compose: Install Docker Compose
- Python 3.8+: Install Python (optional for development).
- Terraform: Install Terraform
- GitLab Runner: Install GitLab Runner
- Clone the repository:
git clone https://gitlab.com/yohrannes/website-portifolio.git cd website-portifolio
- Start the containers using Docker Compose:
docker compose up -d
- Access the website in your browser:
http://localhost
- View the latest Docker logs:
docker logs -f $(docker ps -lq)
- Ensure your Kubernetes cluster is configured.
- Apply the manifests:
kubectl apply -f kubernetes/
Contributions are welcome! Follow these steps to collaborate:
- Fork the repository.
- Create a branch for your feature or fix:
git checkout -b my-feature
- Make your changes and commit them:
git commit -m "Add new feature"
- Push your changes:
git push origin my-feature
- Open a Pull Request.
This project is licensed under the MIT License.
- LinkedIn: Yohrannes Santos Bigoli
- GitHub: @yohrannes
- GitLab: @yohrannes
Explore, contribute, and learn! 🚀