Files
k8s-manifests/researchowl/deployment.yaml
T
chemavxandClaude Opus 4.8 384c3e4542 researchowl: repoint to Infisical secret + flip to Recreate
3b of the centralization. All 5 secretKeyRefs now reference
researchowl-secrets-infisical (synced from /researchowl). Also adds
strategy: Recreate (single-replica RWO SQLite/WAL — avoids two pods
briefly sharing /data/researchowl.db during a roll), permanent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 06:40:21 +00:00

116 lines
3.3 KiB
YAML

---
apiVersion: v1
kind: Namespace
metadata:
name: researchowl
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
# Never let ArgoCD prune this PVC: it holds persistent app data.
argocd.argoproj.io/sync-options: Prune=false
name: researchowl-data
namespace: researchowl
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: researchowl
namespace: researchowl
labels:
app: researchowl
spec:
replicas: 1
# Single-replica bot on a RWO local-path SQLite DB (WAL): Recreate avoids two pods
# briefly opening /data/researchowl.db during a roll (double-writer corruption risk).
strategy:
type: Recreate
selector:
matchLabels:
app: researchowl
template:
metadata:
labels:
app: researchowl
spec:
containers:
- name: researchowl
image: git.chemavx.xyz/chemavx/researchowl:cd557a2d
imagePullPolicy: Always
env:
- name: TELEGRAM_BOT_TOKEN
valueFrom:
secretKeyRef:
name: researchowl-secrets-infisical
key: telegram-bot-token
- name: TELEGRAM_ALLOWED_USERS
valueFrom:
secretKeyRef:
name: researchowl-secrets-infisical
key: telegram-allowed-users
- name: OLLAMA_URL
value: "http://ollama.ollama.svc.cluster.local:11434"
- name: OLLAMA_MODEL
value: "qwen2.5:3b"
- name: OLLAMA_EMBED_MODEL
value: "nomic-embed-text"
- name: DB_PATH
value: "/data/researchowl.db"
- name: MAX_SOURCES
value: "150"
- name: MAX_DEPTH
value: "3"
- name: QUALITY_THRESHOLD
value: "0.4"
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: researchowl-secrets-infisical
key: anthropic-api-key
- name: GHOST_URL
value: "https://zonadeexclusion.com"
- name: GHOST_API_KEY
valueFrom:
secretKeyRef:
name: researchowl-secrets-infisical
key: ghost-api-key
- name: GHOST_URL_EN
value: "https://www.theexclusionzone.com"
- name: GHOST_API_KEY_EN
valueFrom:
secretKeyRef:
name: researchowl-secrets-infisical
key: ghost-api-key-en
volumeMounts:
- name: data
mountPath: /data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "1Gi"
cpu: "500m"
volumes:
- name: data
persistentVolumeClaim:
claimName: researchowl-data
imagePullSecrets:
- name: gitea-registry-infisical
# Secret is managed imperatively (not by ArgoCD) to avoid overwriting real values:
# kubectl create secret generic researchowl-secrets \
# --from-literal=telegram-bot-token=YOUR_TOKEN \
# --from-literal=telegram-allowed-users=YOUR_USER_ID \
# --from-literal=anthropic-api-key=YOUR_KEY \
# -n researchowl