Flask webapp demonstrating Kubernetes deployment patterns with Helm, Kustomize, and ArgoCD.
Prerequisites: Minikube, Helm, kubectl
minikube start --driver=dockeralias k=kubectl
helm install webapp helm-webapp/ --values helm-webapp/values.yaml
k port-forward svc/webapp 8888:80
# Open: http://localhost:8888k create namespace dev
helm install mywebapp-release-dev helm-webapp/ --values helm-webapp/values.yaml -f helm-webapp/values-dev.yaml -n dev
k port-forward svc/webapp 8888:80 -n dev
# Open: http://localhost:8888Environment-specific overlays (config, replicas, patches applied to base).
kubectl apply -k kustom-webapp/overlays/prod
k port-forward svc/webapp 8888:80
# Open: http://localhost:8888kubectl apply -f Deployment/v1.yaml
kubectl apply -f Deployment/v2.yaml
kubectl apply -f Deployment/v3.yaml
k port-forward svc/webapp 8888:80
# Open: http://localhost:8888# Expose via LoadBalancer (local)
minikube tunnel
k get svc
# Cleanup
helm uninstall webapp
helm uninstall mywebapp-release-dev -n dev- helm-webapp/ - Helm chart with environment overlays
- kustom-webapp/ - Kustomize base + dev/prod overlays with replacements
- Deployment/ - Static manifests (v1-v3 progression)
- Dockerapp/ - Flask app source
Security: Non-root user, read-only filesystem
Availability: HPA, PDB, rolling updates
Configuration: Immutable ConfigMaps, environment-specific overlays
- ArgoCD GitOps Deployment - ConfigMap immutability pattern with ArgoCD
- Pods stuck in CrashLoopBackOff — Check logs:
k logs <pod-name> - Cannot access app — Ensure port-forward or minikube tunnel is running
- YAML files not recognized — Use
.yamlextension (not.yml)