This project demonstrates a complete DevOps lifecycle implementation for deploying a Flask web application on the cloud using the following tools:
- Git & GitHub – Source control and collaboration
- Docker – Containerization
- Kubernetes (K8s) – Container orchestration
- Terraform – Infrastructure as Code on AWS
- Ansible – Configuration management
- Jenkins – Continuous Integration (CI)
- ArgoCD – Continuous Deployment (CD)
The application is a simple Python Flask web app that renders an HTML page using Jinja templates.
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)- Source Code: FinalProject
We use a Dockerfile to package the Flask application into a container image.
docker build -t flask-app .docker run -p 5000:5000 flask-app✅ This exposes the Flask app on http://localhost:5000
The Kubernetes setup includes the following YAML resources:
namespace.yamldeployment.yamlservice.yaml
minikube startkubectl apply -f namespace.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yamlminikube service flask-service -n ivolveThis command opens the exposed service in your browser.
Terraform is used to provision backend resources such as:
- S3 bucket for remote state
- DynamoDB table for state locking (deprecated: use
use_lockfile) - EC2 instance or other infrastructure Source Code: Source Code:
Source Code: -Jenkinsfile




