chore: Remove obsolete dedicated claudebox pods

The shared worker pool (claudebox-0) now handles all project builds
with dynamic git cloning. The dedicated per-project pods were stuck
in Init state and are no longer needed.

Removed:
- claudebox-aeries StatefulSet and PVC
- claudebox-pantheon StatefulSet and PVC
- Associated secrets and configmaps (deleted from cluster)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
jordan 2026-01-31 01:15:17 -07:00
parent b9aa64f284
commit 8db06a32ec
5 changed files with 3 additions and 372 deletions

View File

@ -1,162 +0,0 @@
# claudebox-aeries - Claude Code pod for the Aeries project
# v0.6 - Shared credentials, project-specific commands/skills/agents in workspace
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: claudebox-aeries
namespace: rdev
labels:
app.kubernetes.io/name: claudebox-aeries
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/project: aeries
spec:
serviceName: claudebox-aeries
replicas: 1
selector:
matchLabels:
app: claudebox-aeries
template:
metadata:
labels:
app: claudebox-aeries
app.kubernetes.io/name: claudebox-aeries
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/project: aeries
spec:
# Init container clones repo if workspace is empty
initContainers:
- name: git-clone
image: ghcr.io/orchard9/rdev-claudebox:v0.3.0
command:
- /bin/bash
- -c
- |
set -e
# Setup SSH for GitHub
mkdir -p /root/.ssh
cp /ssh-keys/id_ed25519 /root/.ssh/id_ed25519
chmod 600 /root/.ssh/id_ed25519
cp /ssh-keys/known_hosts /root/.ssh/known_hosts
chmod 644 /root/.ssh/known_hosts
# Clone or fetch
if [ ! -d /workspace/.git ]; then
echo "Cloning aeries repository..."
# Remove any existing files (e.g., lost+found from filesystem)
rm -rf /workspace/* /workspace/.[!.]* 2>/dev/null || true
git clone git@github.com:orchard9/aeries.git /workspace
echo "Clone complete."
else
echo "Repository exists, fetching latest..."
cd /workspace
git fetch origin
echo "Fetch complete."
fi
# Show status
cd /workspace
git log -1 --oneline
volumeMounts:
- name: workspace
mountPath: /workspace
- name: ssh-keys
mountPath: /ssh-keys
readOnly: true
containers:
- name: claudebox
image: ghcr.io/orchard9/rdev-claudebox:v0.3.0
imagePullPolicy: Always
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "4Gi"
volumeMounts:
# Workspace with cloned repo
- name: workspace
mountPath: /workspace
# Claude config directory (persistent for auth)
- name: claude-config
mountPath: /root/.claude
# SSH keys for git operations
- name: ssh-keys
mountPath: /root/.ssh
readOnly: true
# Project-specific CLAUDE.md
- name: project-config
mountPath: /workspace/CLAUDE.md
subPath: CLAUDE.md
# 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-aeries-workspace
- name: claude-config
persistentVolumeClaim:
claimName: claudebox-shared-claude-config
- name: ssh-keys
secret:
secretName: github-deploy-key-aeries
defaultMode: 0600
items:
- key: id_ed25519
path: id_ed25519
- key: known_hosts
path: known_hosts
- name: project-config
configMap:
name: claudebox-aeries-config
# Pull from GitHub Container Registry
imagePullSecrets:
- name: ghcr-secret
---
# Headless service for StatefulSet
apiVersion: v1
kind: Service
metadata:
name: claudebox-aeries
namespace: rdev
labels:
app.kubernetes.io/name: claudebox-aeries
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/project: aeries
spec:
clusterIP: None
selector:
app: claudebox-aeries
ports:
- port: 8080
name: http

View File

@ -1,162 +0,0 @@
# claudebox-pantheon - Claude Code pod for the Pantheon project
# v0.6 - Shared credentials, project-specific commands/skills/agents in workspace
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: claudebox-pantheon
namespace: rdev
labels:
app.kubernetes.io/name: claudebox-pantheon
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/project: pantheon
spec:
serviceName: claudebox-pantheon
replicas: 1
selector:
matchLabels:
app: claudebox-pantheon
template:
metadata:
labels:
app: claudebox-pantheon
app.kubernetes.io/name: claudebox-pantheon
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/project: pantheon
spec:
# Init container clones repo if workspace is empty
initContainers:
- name: git-clone
image: ghcr.io/orchard9/rdev-claudebox:v0.3.0
command:
- /bin/bash
- -c
- |
set -e
# Setup SSH for GitHub
mkdir -p /root/.ssh
cp /ssh-keys/id_ed25519 /root/.ssh/id_ed25519
chmod 600 /root/.ssh/id_ed25519
cp /ssh-keys/known_hosts /root/.ssh/known_hosts
chmod 644 /root/.ssh/known_hosts
# Clone or fetch
if [ ! -d /workspace/.git ]; then
echo "Cloning pantheon repository..."
# Remove any existing files (e.g., lost+found from filesystem)
rm -rf /workspace/* /workspace/.[!.]* 2>/dev/null || true
git clone git@github.com:orchard9/pantheon.git /workspace
echo "Clone complete."
else
echo "Repository exists, fetching latest..."
cd /workspace
git fetch origin
echo "Fetch complete."
fi
# Show status
cd /workspace
git log -1 --oneline
volumeMounts:
- name: workspace
mountPath: /workspace
- name: ssh-keys
mountPath: /ssh-keys
readOnly: true
containers:
- name: claudebox
image: ghcr.io/orchard9/rdev-claudebox:v0.3.0
imagePullPolicy: Always
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "4Gi"
volumeMounts:
# Workspace with cloned repo
- name: workspace
mountPath: /workspace
# Claude config directory (persistent for auth)
- name: claude-config
mountPath: /root/.claude
# SSH keys for git operations
- name: ssh-keys
mountPath: /root/.ssh
readOnly: true
# Project-specific CLAUDE.md
- name: project-config
mountPath: /workspace/CLAUDE.md
subPath: CLAUDE.md
# 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-pantheon-workspace
- name: claude-config
persistentVolumeClaim:
claimName: claudebox-shared-claude-config
- name: ssh-keys
secret:
secretName: github-deploy-key-pantheon
defaultMode: 0600
items:
- key: id_ed25519
path: id_ed25519
- key: known_hosts
path: known_hosts
- name: project-config
configMap:
name: claudebox-pantheon-config
# Pull from GitHub Container Registry
imagePullSecrets:
- name: ghcr-secret
---
# Headless service for StatefulSet
apiVersion: v1
kind: Service
metadata:
name: claudebox-pantheon
namespace: rdev
labels:
app.kubernetes.io/name: claudebox-pantheon
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/project: pantheon
spec:
clusterIP: None
selector:
app: claudebox-pantheon
ports:
- port: 8080
name: http

View File

@ -6,23 +6,16 @@ namespace: rdev
resources: resources:
- namespace.yaml - namespace.yaml
# v0.1 - Generic claudebox (for testing/dev) # Shared worker claudebox (runs all project builds)
- pvc.yaml - pvc.yaml
- claudebox.yaml
# v0.2 - Project-specific claudeboxes
- pvc-pantheon.yaml
- pvc-aeries.yaml
# v0.6 - Shared Claude credentials (auth only)
- pvc-shared-claude.yaml - pvc-shared-claude.yaml
- claudebox.yaml
- configmaps.yaml - configmaps.yaml
# NOTE: secrets.yaml and credentials.yaml contain real keys and are gitignored. # NOTE: secrets.yaml and credentials.yaml contain real keys and are gitignored.
# Copy from *.example files and fill in real values before deploying. # Copy from *.example files and fill in real values before deploying.
- secrets.yaml # from secrets.yaml.example - secrets.yaml # from secrets.yaml.example
- credentials.yaml # from credentials.yaml.example - credentials.yaml # from credentials.yaml.example
- claudebox-pantheon.yaml
- claudebox-aeries.yaml
# v0.4+ - API Server (RBAC now included in rdev-api.yaml) # v0.4+ - API Server (RBAC now included in rdev-api.yaml)
- rdev-api.yaml - rdev-api.yaml

View File

@ -1,19 +0,0 @@
# PVCs for claudebox-aeries
# v0.6 - Workspace only (claude-config is now shared)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: claudebox-aeries-workspace
namespace: rdev
labels:
app.kubernetes.io/name: claudebox-aeries
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/project: aeries
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 5Gi

View File

@ -1,19 +0,0 @@
# PVCs for claudebox-pantheon
# v0.6 - Workspace only (claude-config is now shared)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: claudebox-pantheon-workspace
namespace: rdev
labels:
app.kubernetes.io/name: claudebox-pantheon
app.kubernetes.io/part-of: rdev
rdev.orchard9.ai/project: pantheon
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 5Gi