Files
sama/kube/dcos
..

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.