Files
poimen-memory/k8s/app/deployment.yaml
T
rock 4403913b39
Build and Push / Test (push) Failing after 6s
Build and Push / Build and push image (push) Skipped
fix: remove unused vault PVC from memory deployment
Memory service stores in pgvector, not local files.
PVC was RWO causing multi-node scheduling failures with 2 replicas.
MEM_HOME points to /tmp (emptyDir) for any scratch needs.
2026-08-30 07:23:18 -07:00

111 lines
3.2 KiB
YAML

# Poimen Memory API Server
# Serves 7 HTTP endpoints for memory ingest, query, and management.
# Connects to memory-db (pgvector) for persistent storage.
apiVersion: apps/v1
kind: Deployment
metadata:
name: poimen-memory
namespace: poimen
labels:
app.kubernetes.io/name: poimen-memory
app.kubernetes.io/component: api-server
spec:
replicas: 2
selector:
matchLabels:
app.kubernetes.io/name: poimen-memory
template:
metadata:
labels:
app.kubernetes.io/name: poimen-memory
spec:
serviceAccountName: poimen-memory
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 999
fsGroup: 999
seccompProfile:
type: RuntimeDefault
containers:
- name: memory
image: forgejo.riotpiao.com/rock/poimen-memory:latest
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
imagePullPolicy: Always
ports:
- containerPort: 8080
name: http
env:
# Database connection (from CNPG auto-generated secret)
- name: DATABASE_HOST
value: "memory-db-rw.poimen.svc.cluster.local"
- name: DATABASE_PORT
value: "5432"
- name: DATABASE_NAME
value: "memory"
- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: memory-db-app
key: username
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: memory-db-app
key: password
- name: DATABASE_URL
value: "postgresql://$(DATABASE_USER):$(DATABASE_PASSWORD)@$(DATABASE_HOST):$(DATABASE_PORT)/$(DATABASE_NAME)?sslmode=disable"
# LLM Gateway API key
- name: MEM_API_KEY
valueFrom:
secretKeyRef:
name: poimen-memory-secrets
key: llm-api-key
# Server config
- name: MEM_PORT
value: "8080"
- name: MEM_HOME
value: "/tmp"
args:
- serve
- --port
- "8080"
- --api-key
- "$(MEM_API_KEY)"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 10
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir:
sizeLimit: 64Mi
# Tolerate control-plane nodes
tolerations:
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule