P5: Migrate devpi to Kubernetes #34

Merged
eblume merged 12 commits from feature/p5-devpi into main 2026-01-20 14:55:37 -08:00

12 commits

Author SHA1 Message Date
765117bb9e P5: Mark devpi migration complete
- Add P5_devpi.complete.md with implementation notes
- Document key learnings (registry mirrors, memory, env vars)
- Remove incomplete P5_devpi.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 14:54:36 -08:00
782f95c64b Increase devpi memory limit to 2Gi for PyPI index build
The Whoosh search indexer needs significant memory during initial
PyPI index build. Using high limit with low request so memory is
reclaimed after indexing completes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 12:51:28 -08:00
82f60bcf19 Remove devpi from ansible - now hosted in k8s
- Remove devpi and devpi_metrics roles from indri.yml
- Remove svc:pypi from tailscale_serve config
- Remove devpi logs from alloy collection
- Remove devpi backup from borgmatic
- Update README with correct uvx --from devpi-client syntax

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:35:53 -08:00
0da98efb90 Increase devpi memory limit to 768Mi
OOM during initialization - try modest increase first.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:25:45 -08:00
5683a96057 Fix DEVPI_PORT env var conflict with k8s service discovery
Kubernetes auto-sets DEVPI_PORT for service discovery, which conflicts
with our port configuration. Renamed to DEVPI_LISTEN_PORT.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:24:04 -08:00
8e9ab46335 Add devpi auto-initialization with startup script
- Startup script checks for initialization and runs devpi-init if needed
- Root password passed via DEVPI_ROOT_PASSWORD env var from secret
- Secret template references 1Password vault item
- Updated README with setup instructions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:19:37 -08:00
e2fd274ba9 Add CRI-O registry config for private images and Tailscale mirror
- Add direct access config for host.containers.internal:5050 (insecure)
- Add mirror config for registry.tail8d86e.ts.net -> host.containers.internal:5050
- Revert statefulset to use registry.tail8d86e.ts.net (cleaner, if mirror works)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:10:51 -08:00
3ab67dd222 Fix devpi image path for minikube registry access
- Use host.containers.internal:5050 instead of registry.tail8d86e.ts.net
- Minikube's CRI-O can't resolve Tailscale DNS, but can reach Zot via podman host
- Also update CLAUDE.md to spell out kubectl commands (fish abbreviations don't work in scripts)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:06:25 -08:00
bfc862a9ba Change apps to manual sync policy
Auto-sync was causing issues with testing feature branches -
manual changes to targetRevision were being reverted.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:02:35 -08:00
21f95cf0e9 Update CLAUDE.md with k8s/ArgoCD workflow and project structure
- Add Service Deployment section with ArgoCD PR workflow
- Document app-of-apps pattern and manual sync policy
- Add Tailscale hostname migration steps
- Update project structure to include argocd/ directory
- List services staying on indri vs moving to k8s
- Use fish syntax for shell blocks

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 10:56:42 -08:00
173a9134d3 P5: Add devpi k8s manifests and ArgoCD app
- Dockerfile for devpi-server + devpi-web image
- StatefulSet with 50Gi PVC for data persistence
- Tailscale Ingress for pypi.tail8d86e.ts.net
- README with setup and usage instructions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:50:15 -08:00
b1f7dd4c3f P5: Update devpi migration plan with detailed steps
- Fresh start approach (no data migration needed)
- Build custom container with devpi-server + devpi-web
- Use StatefulSet for persistence
- Include verification steps for pip proxy and mcquack upload

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:40:05 -08:00