.. | ||
backend | ||
frontend | ||
kubi | ||
cluster-issuer.yaml | ||
default-backend.yaml | ||
ingress-svc.yaml | ||
prepare-app.sh | ||
README.md | ||
remove-app.sh |
Calculator Web Application on Azure Kubernetes Service (AKS)
Application Description
This project is a simple web-based calculator that performs basic mathematical operations. It allows users to calculate expressions and save the results. A "Show History" button displays previously saved calculations.
Built with:
- Frontend: HTML/CSS/JavaScript served via Nginx
- Backend: Flask (Python) application connected to a PostgreSQL database
- Database: PostgreSQL 15
Public Cloud Environment
- Provider: Microsoft Azure
- Service Used: Azure Kubernetes Service (AKS)
- Certificate Issuer: cert-manager with Let's Encrypt
- Domain: https://aliscloudwork.tech
Kubernetes and Cloud Components
-
Deployments: - Frontend Deployment (Nginx server) - Backend Deployment (Flask server) - PostgreSQL Deployment (Database server)
-
Services: - Frontend Service (ClusterIP) - Backend Service (ClusterIP) - PostgreSQL Service (ClusterIP) - Ingress Controller Service (LoadBalancer)
-
Ingress: - Ingress resource used to route traffic and enable HTTPS
-
Persistent Volume: - PostgreSQL database uses a Persistent Volume Claim (PVC) for data persistence
-
Certificate Management: - cert-manager with Let's Encrypt to generate HTTPS certificates automatically
Azure CLI Setup Steps
1. Create a Resource Group
az group create --name aks-calculator-rg --location westeurope```
---
2. Create AKS Cluster (basic version, no AGIC yet)
az aks create \
--resource-group aks-calculator-rg \
--name calculatorAKS \
--node-count 1 \
--enable-managed-identity \
--generate-ssh-keys
---
3. Connect kubectl to Your AKS Cluster
az aks get-credentials --resource-group aks-calculator-rg --name calculatorAKS
kubectl get nodes
---
Example output:
shane@Ali-DESKTOP:~/assinments/cal$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-21170036-vmss000000 Ready <none> 5m42s v1.31.7
---
Files Included
prepare-app.sh: Script to deploy all Kubernetes objects and services automatically
remove-app.sh: Script to delete all Kubernetes objects and services
kubi/*.yaml: Kubernetes deployment, service, ingress, PVC configuration files
backend/Dockerfile: Dockerfile for the Flask backend application
frontend/Dockerfile: Dockerfile for the Nginx frontend application
frontend/default.conf: Nginx configuration file for routing
README.md: This documentation file
---
How to View and Use the Application
Open a web browser and visit: https://aliscloudwork.tech
Use the calculator to perform operations.
Click the "Show History" button to view saved calculations.
---
Running Scripts
To deploy the application:
- bash prepare-app.sh
To delete the application:
- bash remove-app.sh
---
xternal Sources and Tools Used
DockerHub for container images
Let's Encrypt for SSL certificates
cert-manager for Kubernetes certificate automation
Azure CLI for AKS management
Official documentation for Nginx, Flask, Kubernetes YAML syntax
---
Final Notes
HTTPS is fully functional.
Kubernetes ensures all components are modular and recover automatically.
Database uses persistent storage for calculation history.