WinIT Backend Tester
Project Status
Implementation Status: Normally everything is implemented as requested.
Deployment Environment: I had a bit of struggle to run Minikube as I'm using QubesOS (very long loading time and constant high CPU usage). So I use a VPS for it.
Learning Curve: That's a lot of new tools, will have a bit of a learning curve so would require more time, trying to play with it to fully understand all the underlying tech, concepts, and commands.
GitHub Repository: https://github.com/exreve/WinIT
GitHub Actions Proof:

Access: The frontend and backend are served through Cloudflare tunnel to the VPS.
Security Notes:
- I'm aware that both Docker repos are public
- Normally .gitignore and .dockerignore are correctly set so we didn't leak any credentials
Infrastructure & Deployment
Service Networking:
- We use ClusterIP service type to avoid port collision within the Kubernetes cluster
- Services are resolved using local DNS with the format:
service_name.namespace.svc.cluster.local:port
Cloudflare Tunnel:
- A Cloudflare tunnel service is deployed in Kubernetes
- The Cloudflare secret is stored in a
.yamlfile and is not published on either GitHub or Docker - The secret is applied manually to the cluster
- In Cloudflare configuration, we use local DNS domain names (e.g.,
service_name.namespace.svc.cluster.local:port) to resolve the application's IP addresses
CI/CD Pipeline:
There was some initial confusion because we were asked to set up ArgoCD in the cluster, but later the bonus task requested a full GitHub Actions workflow that builds, publishes, and applies changes via kubectl apply. This could result in applying changes twice if ArgoCD and GitHub Actions both try to apply the same changes simultaneously.
Intended Workflow:
- GitHub Actions: Builds and publishes Docker images to the registry
- ArgoCD: Watches the Git repository and automatically applies
.yamlchanges when detected
This separation ensures that GitHub Actions handles the build/publish phase, while ArgoCD handles the deployment phase, avoiding conflicts and duplicate applications.
Health Check
Test the /health endpoint
Server Metrics Dashboard
Loading metrics...
API URL: https://api.velinbangkok.com