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 à 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