Skip to content

feat(composables): add raganything deployment with minio and postgres…#3

Open
Kaiohz wants to merge 1 commit into
mainfrom
feat/deploy-raganything
Open

feat(composables): add raganything deployment with minio and postgres…#3
Kaiohz wants to merge 1 commit into
mainfrom
feat/deploy-raganything

Conversation

@Kaiohz
Copy link
Copy Markdown
Collaborator

@Kaiohz Kaiohz commented Apr 6, 2026

… infrastructure

  • Add MinIO deployment, service, ingress, and bucket init job
  • Add RagAnything API deployment with configmap and ingress
  • Add PostgreSQL deployment with persistence
  • Add composable-agents deployment
  • Configure external secrets for OpenBao integration
  • Set up persistent volumes on NFS storage

Infrastructure dependencies:

  • MinIO: Object storage for RAG documents
  • PostgreSQL (pgvector + Apache AGE): Knowledge graph storage
  • RagAnything: FastAPI service exposing REST and MCP endpoints

Services exposed:

  • raganything.soludev.tech - RagAnything API + MCP
  • composables-minio.soludev.tech - MinIO Console
  • composables-api-minio.soludev.tech - MinIO API

… infrastructure

- Add MinIO deployment, service, ingress, and bucket init job
- Add RagAnything API deployment with configmap and ingress
- Add PostgreSQL deployment with persistence
- Add composable-agents deployment
- Configure external secrets for OpenBao integration
- Set up persistent volumes on NFS storage

Infrastructure dependencies:
- MinIO: Object storage for RAG documents
- PostgreSQL (pgvector + Apache AGE): Knowledge graph storage
- RagAnything: FastAPI service exposing REST and MCP endpoints

Services exposed:
- raganything.soludev.tech - RagAnything API + MCP
- composables-minio.soludev.tech - MinIO Console
- composables-api-minio.soludev.tech - MinIO API
@Kaiohz
Copy link
Copy Markdown
Collaborator Author

Kaiohz commented Apr 12, 2026

📊 Code Confidence Score: 8/10

✅ Points positifs

  • Manifests K3s complets et cohérents : composable-agents + raganything + minio + postgres — 22 fichiers, 558 additions
  • ExternalSecrets via OpenBao (ClusterSecretStore) — bonne pratique
  • Probes configurées (liveness + readiness) sur tous les deployments
  • Tolerations klipperlb-exclude (spécifique K3s)
  • NFS PV pour persistance MinIO + Postgres
  • Bucket init job (mc mb raganything + composable-agents)
  • Ingress configuré avec redirect HTTPS

⚠️ Points d'attention

  • Resources MinIO : limite 1Gi — potentiellement juste pour des gros datasets RAG, à monitorer
  • Pas de NetworkPolicy — namespace composables ouvert, tout peut communiquer avec tout
  • Pas de ref Jira — ajouter un ticket pour tracer ce déploiement ?

🔴 Risques identifiés

  • Postgres sur NFS avec accessMode ReadWriteMany : PostgreSQL nécessite un accès exclusif au datadir. NFS + RWMany = risque de corruption si plusieurs pods montent le volume. Il faudrait utiliser ReadWriteOnce pour le PVC Postgres en production.

Recommandation

  1. Changer accessModes du PVC Postgres en ReadWriteOnce
  2. Ajouter une NetworkPolicy basique (deny ingress par défaut, allow intra-namespace)
  3. Surveiller l'usage MinIO et ajuster les limits si besoin

Review automatique par SoluBot 🤖

Copy link
Copy Markdown
Collaborator Author

@Kaiohz Kaiohz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Review: raganything deployment with MinIO + Postgres — Score 7/10

✅ Points positifs

  1. Structure K8s complète : deployment, service, ingress, ConfigMap, PVC, ExternalSecret pour chaque composant
  2. ExternalSecrets avec OpenBao — bonne pratique, pas de secrets en clair
  3. NFS PV/PVC pour MinIO et Postgres — persistance correcte
  4. Bucket init Job pour créer les buckets MinIO au démarrage
  5. Ingress Traefik avec redirect HTTPS
  6. Tolerations klipperlb-exclude pour K3s
  7. Probes liveness/readiness configurées

⚠️ Points d'attention

  1. Postgres : image postgres:17-alpine mais pas d'extension pg_textsearch dans les init args — le service mcp-raganything en a besoin (cf BRIC-7). Il faut soit ajouter un initContainer soit utiliser une image custom.

  2. Postgres : pas de livenessProbe — seul readinessProbe est configuré. Un Postgres bloqué ne sera pas restarté.

  3. MinIO : minio/minio:latest — utiliser un tag fixe (ex: RELEASE.2026-04-01) pour éviter les surprises en production.

  4. RagAnything deployment absent du diff — le titre mentionne raganything mais le diff tronqué ne montre que composable-agents + minio + postgres. Vérifier que le deployment raganything est bien inclus.

  5. ConfigMap composable-agents-config : MINIO_ACCESS_KEY: minioadmin en clair → devrait être dans le ExternalSecret. Même si c'est du dev, c'est une mauvaise pratique qui peut fuir en prod.

  6. Resources : composable-agents limits 512Mi — vérifier si suffisant avec LangGraph + LLM calls.

  7. Pas de Kustomization ou Flux HR — ces manifests ne seront pas déployés automatiquement par Flux CD. Il manque le Kustomization et éventuellement le HelmRelease.

💡 Suggestions

  • Ajouter un initContainer ou ConfigMap pour shared_preload_libraries=pg_textsearch sur Postgres
  • Tag fixe pour MinIO
  • Déplacer MINIO_ACCESS_KEY vers ExternalSecret
  • Ajouter les manifests Flux (Kustomization) pour le GitOps

Review by SoluBot 🤖

@Kaiohz
Copy link
Copy Markdown
Collaborator Author

Kaiohz commented Apr 14, 2026

Code Review — Deploy raganything + minio + postgres

✅ Points positifs

  • Infrastructure complète : MinIO, PostgreSQL pgvector, RagAnything, composable-agents
  • External-secrets configuré pour OpenBao ✅
  • Liveness/readiness probes sur les deployments ✅
  • Toleration klipperlb-exclude pour K3s ✅

🔴 Points bloquants

  1. MINIO_ACCESS_KEY en dur dans configmap (minioadmin) — Ce secret doit être dans un external-secret.yaml ou un Kubernetes Secret, pas en clair dans un ConfigMap. Même chose pour POSTGRES_USER dans le configmap composable-agents.

  2. Image tag latest sur composable-agents — Toujours pinner un tag spécifique. latest est non-reproductible.

⚠️ Points d'attention

  1. Pas de resource limits — Que des requests, pas de limits. Ajouter des limits mémoire/CPU.
  2. YAML plats — Pas de Kustomize. Envisager un kustomization.yaml minimum.
  3. Bucket init job — Pas de restartPolicy explicite. Ajouter OnNever ou OnFailure.
  4. Pas de NetworkPolicy — À prévoir pour la prod.

Score : 6/10

Fonctionnel pour dev, mais secrets en dur + image latest doivent être corrigés avant merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant