apiVersion: apps/v1 kind: StatefulSet metadata: name: claudebox namespace: rdev labels: app.kubernetes.io/name: claudebox app.kubernetes.io/part-of: rdev spec: serviceName: claudebox replicas: 1 selector: matchLabels: app: claudebox template: metadata: labels: app: claudebox app.kubernetes.io/name: claudebox app.kubernetes.io/part-of: rdev spec: containers: - name: claudebox image: us-central1-docker.pkg.dev/orchard9/docker-images/rdev-claudebox:v0.1.0 imagePullPolicy: Always resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "2" memory: "4Gi" volumeMounts: # Workspace for projects - name: workspace mountPath: /workspace # Claude credentials (from secret) - name: claude-credentials mountPath: /root/.claude readOnly: true # Simple liveness check - container is running livenessProbe: exec: command: - cat - /healthcheck.sh initialDelaySeconds: 5 periodSeconds: 60 # Readiness - claude CLI is available readinessProbe: exec: command: - claude - --version initialDelaySeconds: 10 periodSeconds: 30 timeoutSeconds: 10 volumes: - name: workspace persistentVolumeClaim: claimName: claudebox-workspace - name: claude-credentials secret: secretName: claude-credentials defaultMode: 0600 # Pull from Artifact Registry imagePullSecrets: - name: gcr-secret --- # Headless service for StatefulSet apiVersion: v1 kind: Service metadata: name: claudebox namespace: rdev labels: app.kubernetes.io/name: claudebox app.kubernetes.io/part-of: rdev spec: clusterIP: None selector: app: claudebox ports: - port: 8080 name: http