Funk-lab/k8s/apps/openalice/deployment.yaml
alkatrazz 08db9670da feat(openalice): déploiement in-cluster de l'agent IA financier (back-end finance d'Asa)
Déploie TraderAlice/OpenAlice (AGPL-3.0) dans le namespace ai comme back-end de
connaissances financières pour Asa, consommé via le connecteur MCP Ask.

- CI build-openalice.yml : rebuild depuis le Dockerfile amont (ref épinglée v0.60.0-beta.1)
  → ghcr.io/alkatrazz24/funk-openalice, bump manifest sur main
- k8s/apps/openalice : Deployment (restricted + fsGroup, Recreate), PVC 5Gi NFS /data,
  Service web:47331 + mcpask:3003, IngressRoute openalice.lab.local
- ArgoCD app + doc admin/ia/openalice.md (RAG) + MAJ CLAUDE.md
- Cerveau hybride : LiteLLM/Qwen3-8B local (gratuit) + Claude basculable ; données
  TraderHub (sans clé) + FMP gratuit. Lecture/recherche seule — aucun broker, zéro trading.

Onboarding premier boot (Web UI) imposé : credentials scellés dans /data par design.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 12:27:58 +02:00

81 lines
2.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

apiVersion: apps/v1
kind: Deployment
metadata:
name: openalice
namespace: ai
spec:
replicas: 1
# OpenAlice écrit dans un volume RWO (NFS) — pas de rolling avec 2 pods sur le même volume.
strategy:
type: Recreate
selector:
matchLabels:
app: openalice
template:
metadata:
labels:
app: openalice
spec:
# Image privée sur ghcr → secret de pull créé manuellement dans le ns ai
# (cf. README : kubectl create secret docker-registry ghcr-pull ...)
imagePullSecrets:
- name: ghcr-pull
# Conformité PodSecurity "restricted" (namespace ai). fsGroup 1000 → le volume NFS
# (HOME des CLIs + /data) est inscriptible par l'uid non-root de l'image.
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
seccompProfile:
type: RuntimeDefault
containers:
- name: openalice
# Tag amont géré par la CI (build-openalice.yml) : bumpé en <ref> à chaque build main.
image: ghcr.io/alkatrazz24/funk-openalice:v0.60.0-beta.1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
ports:
- name: web
containerPort: 47331
# MCP Ask connector — consommé in-cluster par Asa (STT-server). À ACTIVER une fois
# au premier boot (Web UI Connectors) : { mcpAsk: { enabled: true, port: 3003 } }.
- name: mcpask
containerPort: 3003
env:
# OpenAlice stocke ses credentials (provider IA, clés vendor) SCELLÉS dans /data,
# configurés au premier boot via la Web UI — voir README. Rien de secret en env ici.
- name: TZ
value: "Europe/Paris"
# Derrière Traefik (entrypoint web) : on fait confiance au proxy in-cluster pour
# les en-têtes (IP réelle / host). LAN privé, HTTP.
- name: OPENALICE_TRUSTED_PROXIES
value: "10.42.0.0/16"
# Web UI Hono : le portail 47331 répond mais peut 401 derrière le gate admin →
# sonde TCP plutôt qu'HTTP. Démarrage lent (runtime Node + CLIs agent embarqués).
readinessProbe:
tcpSocket:
port: 47331
initialDelaySeconds: 20
periodSeconds: 15
livenessProbe:
tcpSocket:
port: 47331
initialDelaySeconds: 60
periodSeconds: 30
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: "1"
memory: 1536Mi
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: openalice-data