- Kubernetes cluster (1.24+)
kubectlconfigured- Container images built and pushed to your registry
- A
ReadWriteManyPVC provisioner (NFS, EFS, etc.) for shared storage
kubectl apply -f namespace.yaml
kubectl apply -f rbac.yamlcp secret.yaml.example secret.yaml
# Edit secret.yaml with your base64-encoded credentials
kubectl apply -f secret.yamlEdit configmap.yaml to set your LLM API endpoint, models, and agent image:
kubectl apply -f configmap.yamlkubectl apply -f pvc.yaml
kubectl apply -f postgres-statefulset.yaml
kubectl apply -f redis-deployment.yaml# Backend
docker build -t your-registry/webqa-be:latest -f backend/Dockerfile .
docker push your-registry/webqa-be:latest
# Frontend
docker build -t your-registry/webqa-fe:latest -f frontend/Dockerfile .
docker push your-registry/webqa-fe:latest
# Agent (for K8s Jobs)
docker build -t your-registry/webqa-agent:latest -f Dockerfile .
docker push your-registry/webqa-agent:latestUpdate the image references in backend-deployment.yaml and frontend-deployment.yaml, then:
kubectl apply -f backend-deployment.yaml
kubectl apply -f frontend-deployment.yamlcp ingress.yaml.example ingress.yaml
# Edit ingress.yaml with your domain
kubectl apply -f ingress.yamlIf you have existing PostgreSQL or Redis instances:
- Skip deploying
postgres-statefulset.yamland/orredis-deployment.yaml - Update
configmap.yamlwith your external host/port - Update
secret.yamlwith the correct credentials
| File | Description |
|---|---|
namespace.yaml |
Namespace definition |
configmap.yaml |
Non-sensitive configuration |
secret.yaml.example |
Template for secrets (copy and fill in) |
pvc.yaml |
Shared storage PVC |
postgres-statefulset.yaml |
Bundled PostgreSQL (optional) |
redis-deployment.yaml |
Bundled Redis (optional) |
backend-deployment.yaml |
Backend API server |
frontend-deployment.yaml |
Frontend web app |
rbac.yaml |
Service accounts and roles |
ingress.yaml.example |
Ingress template (copy and configure) |