## Summary - Migrate devpi PyPI caching proxy from indri LaunchAgent to Kubernetes - Custom container image with devpi-server + devpi-web + auto-init - StatefulSet with 50Gi PVC, Tailscale Ingress at pypi.tail8d86e.ts.net - Remove devpi from ansible playbooks and update CLAUDE.md with k8s workflow ## Key Changes - Add CRI-O registry mirror config for registry.tail8d86e.ts.net - Change ArgoCD apps to manual sync (was auto-sync causing issues) - 2Gi memory limit for Whoosh indexer (reclaimed after startup) ## Deployment and Testing - [x] devpi pod healthy in k8s - [x] pip install through proxy works - [x] mcquack 1.0.0 uploaded and installable - [x] Old devpi stopped on indri ## Post-Merge Reset ArgoCD to main: ``` argocd app set apps --revision main && argocd app sync apps argocd app set devpi --revision main && argocd app sync devpi ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.tail8d86e.ts.net/eblume/blumeops/pulls/34
62 lines
1.5 KiB
YAML
62 lines
1.5 KiB
YAML
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: devpi
|
|
namespace: devpi
|
|
spec:
|
|
serviceName: devpi
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: devpi
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: devpi
|
|
spec:
|
|
securityContext:
|
|
fsGroup: 1000
|
|
containers:
|
|
- name: devpi
|
|
image: registry.tail8d86e.ts.net/blumeops/devpi:latest
|
|
env:
|
|
- name: DEVPI_ROOT_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: devpi-root
|
|
key: password
|
|
- name: DEVPI_OUTSIDE_URL
|
|
value: "https://pypi.tail8d86e.ts.net"
|
|
ports:
|
|
- containerPort: 3141
|
|
name: http
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /devpi
|
|
resources:
|
|
requests:
|
|
memory: "256Mi"
|
|
cpu: "100m"
|
|
limits:
|
|
memory: "2Gi" # High limit for initial PyPI index build, reclaimed after
|
|
cpu: "500m"
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /+api
|
|
port: 3141
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 30
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /+api
|
|
port: 3141
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 10
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: data
|
|
spec:
|
|
accessModes: ["ReadWriteOnce"]
|
|
resources:
|
|
requests:
|
|
storage: 50Gi
|