Welcome to the DevOps Capstone Project guide! In this comprehensive project, we will walk through the process of setting up a QR code application on AWS. The app has three components: Front-end, API and Storage. All 3 components would be hosted in containers utilizing the cloud provider of your choice(I'll use AWS). Our goal is to apply DevOps practices like containerization, CI/CD, IAC, observability, monitoring, and logging for the application.
-
Front-End Container: Hosts the website where users can input URLs.
-
API Container: Handles the QR code generation for given URLs.
-
Storage Container: Stores the generated QR codes.
In this project, we will achieve the following-
-
Containerization: Containerize both the front-end and API by creating a Dockerfile.
-
CI/CD: Write CI/CD pipeline to automate deployment of the containers, once your source code is changed.
-
Infrastructure as Code (IaC): Use OpenTofu to define and deploy the cloud Infrastructure(Kubernetes cluster).
-
Kubernetes YAML Files: Create deployment and service YAML files for both the Next.js front-end and the FastAPI backend.
-
Install Nginx Ingress Controller: We will install the Nginx Ingress Controller, which in turn will create an AWS Application Load Balancer (ALB) for the EKS cluster.
-
DNS Mapping of Load Balancer: We will get the URL of the Load Balancer and map it to our domain name in Cloudflare.
-
Install Cert-Manager: To provide an automated way of ensuring TLS certificates for our site, we will install Cert-Manager.
-
Helm Chart for application: Create a Helm chart for the application to facilitate easy deployment through the Helm command.
-
Monitoring & Logging Setup: Implement monitoring and logging for the EKS cluster using Helm, Prometheus, Loki, and Grafana.
-
ArgoCD Installation: Install and set up ArgoCD for continuous delivery and GitOps.