RagLeap Packages
Looking for the RagLeap platform? This page documents the open-source pip install ragleap-ops package. For the hosted business platform (AI Office, WhatsApp/Voice bots, billing), see docs.ragleap.com instead.
Live-tested end-to-end on a real kind cluster — not just schema-validated

ragleap-ops

Kubernetes Deployment and Service manifests, plus a Helm chart wrapping them, for RagLeap Core — translated field-by-field from the real docker-compose.yml and proven against a live cluster.

0.2.0
PyPI version
4 / 4
Services reached 1/1 Running
1
Real bug found & fixed live

Install

The Python package itself ships no functional code — it exists so this content can be versioned and released through the same PyPI pipeline as the other RagLeap packages. The real deliverable is the k8s/ directory.

pip install ragleap-ops
# or, with uv
uv add ragleap-ops

What's inside

Deployment + Service manifests for all four docker-compose.yml services, plus the Secrets/PVCs/ConfigMap they depend on.

db-deployment.yaml
pgvector/pgvector:pg16. PVC-backed, schema loaded via a ConfigMap generated from the real db/schema.sql.
app-deployment.yaml
Pulls ghcr.io/antonyrag/ragleap-app:latest, built from the repo-root Dockerfile. Waits on db via an init container polling pg_isready.
voice-deployment.yaml
Same image as app, command overridden to python3 -m channels.voice.server, listens on 8765.
neo4j-deployment.yaml
neo4j:5-community, ports 7474/7687, PVC-backed, readiness via HTTP check against 7474.

Apply order

Dependency order matters — app/voice won't start cleanly without db already healthy.

kubectl apply -f db-secret.yaml -f neo4j-secret.yaml -f db-schema-configmap.yaml
kubectl apply -f db-pvc.yaml -f neo4j-pvc.yaml
kubectl apply -f db-deployment.yaml -f db-service.yaml
kubectl rollout status deployment/ragleap-db
kubectl apply -f app-deployment.yaml -f voice-deployment.yaml -f neo4j-deployment.yaml
kubectl apply -f app-service.yaml -f voice-service.yaml -f neo4j-service.yaml

Two files are intentionally not shipped in the package (see .gitignore) since they'd otherwise bake real secret values into git history — generate them locally:

kubectl create secret generic ragleap-app-env \
  --from-env-file=.env --dry-run=client -o yaml > app-env-secret.yaml

Known limitations

Drawn from a real deploy against a local kind cluster this session — including a bug that only surfaced under live testing, not from writing the manifests correctly the first time.

  • No Helm chart yet. Raw manifests were proven first via live cluster testing; Helm wrapping is planned next.
  • PVC storage sizes (5Gi) are placeholder defaults. docker-compose.yml's named volumes are unbounded, so there was no real size to translate from — size for your own capacity needs.
  • A liveness-probe timing bug was found and fixed via live testing. The original db probe's initialDelaySeconds: 10 was too short for first-boot image pull + PVC attach, causing kubelet to kill a container that was still legitimately starting. Fixed to initialDelaySeconds: 45, failureThreshold: 6, then re-verified with zero restarts.
  • GHCR image visibility. The private-to-public toggle wasn't reachable via the GitHub API in this environment, so app/voice authenticate via an imagePullSecret rather than relying on a public image.