- Changed from ghcr.io/mendableai/* to ghcr.io/firecrawl/* - Updated all three services: main API, playwright-service, and nuq-postgres - Changed tag from v1.0.0 to latest (official images use latest tag) - Fixes ImagePullBackOff errors caused by incorrect registry namespace Per official Firecrawl docker-compose.yaml, images are published under ghcr.io/firecrawl/, not ghcr.io/mendableai/
Firecrawl (Spaceship Earth)
Web scraping and search service for JARVIS's web search capabilities.
Service Names
- Primary (EPCOT):
spaceship-earth.local.mk-labs.cloud - Secondary:
firecrawl.local.mk-labs.cloud
Architecture
Components
-
Firecrawl API - Main REST API service for web scraping
- Port: 3002
- Health checks:
/v0/health/liveness,/v0/health/readiness - Resources: 4Gi memory, 2 CPU cores (6Gi limit)
-
Firecrawl Worker - Background job processor
- Processes crawl jobs from queue
- Resources: 3Gi memory, 1 CPU core (4Gi limit)
-
Playwright Service - Browser automation
- Port: 3000
- Headless Chrome/Firefox for JavaScript rendering
- Resources: 2Gi memory, 1 CPU core (4Gi limit)
-
Redis - Cache and job queue
- Port: 6379
- Resources: 256Mi memory, 100m CPU (512Mi limit)
-
PostgreSQL (nuq-postgres) - State management
- Port: 5432
- Custom image with queue extensions
- Resources: 512Mi memory, 250m CPU (1Gi limit)
- Note: Currently using emptyDir (ephemeral). Add PVC for persistence if needed.
-
RabbitMQ - Message queue for distributed processing
- AMQP Port: 5672
- Management UI: 15672
- Resources: 512Mi memory, 250m CPU (1Gi limit)
Configuration
Key environment variables in configmap.yaml:
USE_DB_AUTHENTICATION=false- Simplified auth for internal useNUM_WORKERS_PER_QUEUE=8- Worker concurrencyCRAWL_CONCURRENT_REQUESTS=10- Parallel crawl requestsMAX_CONCURRENT_JOBS=5- Maximum simultaneous jobs
Access
- HTTPS (Gateway API): https://spaceship-earth.local.mk-labs.cloud
- HTTPS (Gateway API): https://firecrawl.local.mk-labs.cloud
- Internal:
http://firecrawl-api.firecrawl.svc.cluster.local:3002
DNS
ExternalDNS automatically configures DNS records pointing to the Gateway load balancer (10.1.71.90).
TLS
Certificates are automatically provisioned via cert-manager using the letsencrypt-prod ClusterIssuer.
Deployment
Managed by ArgoCD (wave 20):
# Check application status
kubectl -n argocd get application firecrawl
# View pods
kubectl -n firecrawl get pods
# Check API logs
kubectl -n firecrawl logs -l app=firecrawl-api -f
# Check worker logs
kubectl -n firecrawl logs -l app=firecrawl-worker -f
API Usage
Example: Scrape a webpage
curl -X POST https://spaceship-earth.local.mk-labs.cloud/v0/scrape \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
Troubleshooting
Pods not starting
Check resource availability:
kubectl -n firecrawl describe pod <pod-name>
PostgreSQL data persistence
Currently using emptyDir for simplicity. To add persistence:
- Create a PVC in
postgres-pvc.yaml - Update
postgres-deployment.yamlto use the PVC - Commit and push
Gateway not routing
Verify ReferenceGrant allows firecrawl namespace:
kubectl -n gateway get referencegrant allow-httproutes -o yaml
Future Enhancements
- Add persistent volume for PostgreSQL
- Add extract worker deployment (data extraction)
- Add nuq worker deployment (advanced queue processing)
- Configure monitoring/metrics
- Add resource quotas and limits
- Integrate with JARVIS via API key authentication