4.9 KiB
4.9 KiB
DCOS — Kubernetes Deployment
Kubernetes deployment for the Distributed Cognitive Operating System. Follows the standard homelab pattern (Traefik ingress, cert-manager TLS, local-path PVCs).
Quick Deploy
# One-command deploy (follows your pattern)
bash runmefirst.sh
What Gets Deployed
| Resource | Name | Purpose |
|---|---|---|
| Namespace | dcos-service |
Isolation |
| Deployment | dcos |
Main DCOS pods |
| Service | dcos |
ClusterIP:8080 |
| Ingress | dcos |
dcos.celestium.life |
| PVC | dcos-memory-pvc |
20Gi memory store |
| PVC | dcos-config-pvc |
2Gi config |
| ServiceAccount | dcos |
Pod identity |
| Middleware | dcos-stripprefix |
Traefik path stripping |
Files
| File | Purpose |
|---|---|
deployment.yaml |
Deployment: 1 replica, 4 CPU/4Gi RAM, PVC mounts |
service.yaml |
ClusterIP service on port 8080 |
ingress.yaml |
Traefik ingress → dcos.celestium.life with TLS |
pvc.yaml |
20Gi memory + 2Gi config (local-path) |
serviceaccount.yaml |
Service account |
middleware.yaml |
Traefik Middleware for path stripping |
values.yaml |
Helm values (image, resources, autoscaling) |
runmefirst.sh |
Namespace + kubectl apply |
Helm Values
Key values in values.yaml:
image:
repository: ghcr.io/celesrenata/dcos
tag: "1.0.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 8080
ingress:
enabled: true
hosts:
- name: dcos.celestium.life
tls:
- secretName: dcos-cert
resources:
limits:
cpu: "4"
memory: "4Gi"
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 10
dcos:
maxAgents: 100
selfOrgEnabled: true
decentralized: true
Commands
# Deploy
bash runmefirst.sh
# Helm install
helm upgrade -i dcos . --namespace dcos-service --create-namespace -f values.yaml
# Helm upgrade with new image
helm upgrade -i dcos . --namespace dcos-service --set image.tag="1.0.1"
# Scale
kubectl scale deployment dcos --replicas=3 -n dcos-service
# Port-forward for local testing
kubectl port-forward service/dcos 8080:8080 -n dcos-service
# Check status
kubectl get all -n dcos-service
# View logs
kubectl logs -f deployment/dcos -n dcos-service
# Exec into pod
kubectl exec -it deployment/dcos -n dcos-service -- python -m dcos --init
# Uninstall
helm uninstall dcos --namespace dcos-service
kubectl delete -f pvc.yaml -n dcos-service
kubectl delete namespace dcos-service
Storage
PVC Details
| PVC | Size | StorageClass | Mount Path | Contents |
|---|---|---|---|---|
dcos-memory-pvc |
20Gi | local-path | /app/data/memory_store |
SQLite databases |
dcos-config-pvc |
2Gi | local-path | /app/config |
YAML configs |
Persistent Data
Memory databases are stored in data/memory_store/:
memory_store/
├── episodic.db # Episodic memory (temporal events)
├── knowledge_graph.db # Semantic memory (knowledge graph)
├── learning.db # Learning data
├── long_term.db # Long-term memory
├── procedural.db # Procedural memory (patterns)
├── user_model.db # User model
└── world_model.db # World model
Networking
Service
dcos.celestium.life
│
▼
Ingress (traefik) → TLS (cert-manager)
│
▼
Service (ClusterIP:8080) → Sticky cookies (8h)
│
▼
Pod:8080
Ingress Annotations
traefik.ingress.kubernetes.io/affinity: "true"
traefik.ingress.kubernetes.io/service.sticky.cookie: "true"
traefik.ingress.kubernetes.io/service.sticky.cookie.maxage: "28800"
cert-manager.io/cluster-issuer: ca-issuer
Monitoring
# Pod health
kubectl get pods -n dcos-service -w
# PVC usage
kubectl get pvc -n dcos-service
# Ingress
kubectl get ingress -n dcos-service
# Service endpoints
kubectl get endpoints -n dcos-service
# Resource usage
kubectl top pods -n dcos-service
Troubleshooting
| Problem | Check | Solution |
|---|---|---|
| Pod not starting | kubectl describe pod dcos-* -n dcos-service |
Check events for image pull errors |
| PVC pending | kubectl get pvc -n dcos-service |
Verify local-path storage class exists |
| Ingress not routing | kubectl get ingress -n dcos-service |
Check Traefik config |
| TLS errors | kubectl get certificates -n dcos-service |
Verify cert-manager is running |
| Memory full | kubectl exec dcoss-*/df -h /app/data |
Expand PVC or clean old data |
Image
Repository: ghcr.io/celesrenata/dcos
Tags: 1.0.0 (production), latest (development), <commit> (CI)
Pull Policy: IfNotPresent (production), Always (development)
Deployed to dcos-service namespace. Ingress at dcos.celestium.life.