# VAPORA v1.0 - Quick Start Deployment **5-Minute Production Deployment Guide** --- ## Prerequisites Check ```bash # Verify you have these tools kubectl version --client # Kubernetes CLI docker --version # Docker for building images nu --version # Nushell for scripts ``` --- ## Step 1: Build Docker Images (5 minutes) ```bash # From project root # Build all images and push to Docker Hub nu scripts/build-docker.nu --registry docker.io --tag v0.1.0 --push # Or build locally (no push) nu scripts/build-docker.nu ``` **Output**: 4 Docker images built (~175MB total) --- ## Step 2: Configure Secrets (2 minutes) ```bash # Edit secrets file nano kubernetes/03-secrets.yaml # Replace these values: # - jwt-secret: $(openssl rand -base64 32) # - anthropic-api-key: sk-ant-xxxxx # - openai-api-key: sk-xxxxx # - surrealdb-pass: $(openssl rand -base64 32) ``` **NEVER commit this file with real secrets!** --- ## Step 3: Configure Ingress (1 minute) ```bash # Edit ingress file nano kubernetes/08-ingress.yaml # Update this line: # - host: vapora.yourdomain.com # Change to your domain ``` --- ## Step 4: Deploy to Kubernetes (3 minutes) ```bash # Dry run to validate nu scripts/deploy-k8s.nu --dry-run # Deploy for real nu scripts/deploy-k8s.nu # Wait for all pods to be ready kubectl wait --for=condition=ready pod -l app -n vapora --timeout=300s ``` **Output**: 11 pods running (2 backend, 2 frontend, 3 agents, 1 mcp, 1 db, 1 nats) --- ## Step 5: Verify Deployment (2 minutes) ```bash # Check all pods are running kubectl get pods -n vapora # Check services kubectl get svc -n vapora # Get ingress IP/hostname kubectl get ingress -n vapora # Test health endpoints kubectl exec -n vapora deploy/vapora-backend -- curl -s http://localhost:8080/health ``` --- ## Step 6: Access VAPORA 1. **Configure DNS**: Point your domain to ingress IP 2. **Access UI**: `https://vapora.yourdomain.com` 3. **Check health**: `https://vapora.yourdomain.com/api/v1/health` --- ## Troubleshooting ### Pods not starting ```bash kubectl describe pod -n vapora kubectl logs -n vapora ``` ### Can't connect to database ```bash kubectl logs -n vapora surrealdb-0 kubectl exec -n vapora deploy/vapora-backend -- curl http://surrealdb:8000/health ``` ### Image pull errors ```bash # Check if images exist docker images | grep vapora # Create registry secret kubectl create secret docker-registry regcred \ -n vapora \ --docker-server=docker.io \ --docker-username= \ --docker-password= ``` --- ## Alternative: Provisioning Deployment For advanced deployment with service mesh and auto-scaling: ```bash cd provisioning/vapora-wrksp # Validate configuration nu scripts/validate-provisioning.nu # Deploy full stack provisioning workflow run workflows/deploy-full-stack.yaml ``` See: [`provisioning-integration/README.md`](provisioning-integration/README.md) --- ## Next Steps - [ ] Set up monitoring (Prometheus + Grafana) - [ ] Configure TLS certificates (cert-manager) - [ ] Set up backups for SurrealDB - [ ] Configure HPA (Horizontal Pod Autoscaler) - [ ] Enable log aggregation - [ ] Test agent workflows --- ## Full Documentation - **Comprehensive Guide**: [`DEPLOYMENT.md`](DEPLOYMENT.md) - **K8s README**: [`kubernetes/README.md`](kubernetes/README.md) - **Provisioning Guide**: [`provisioning-integration/README.md`](provisioning-integration/README.md) - **Project Overview**: [`PROJECT_COMPLETION_REPORT.md`](PROJECT_COMPLETION_REPORT.md) --- ## Quick Commands Reference ```bash # Build images nu scripts/build-docker.nu --push # Deploy nu scripts/deploy-k8s.nu # Validate nu scripts/validate-deployment.nu # Validate Provisioning nu scripts/validate-provisioning.nu # Check status kubectl get all -n vapora # View logs kubectl logs -n vapora -l app=vapora-backend -f # Scale agents kubectl scale deployment vapora-agents -n vapora --replicas=5 # Rollback kubectl rollout undo deployment/vapora-backend -n vapora # Uninstall kubectl delete namespace vapora ``` --- **VAPORA v1.0** - Production Ready ✅ **Total Deployment Time**: ~15 minutes **Status**: All 5 phases completed