blumeops/argocd/manifests/devpi
Erich Blume 34925cb94b Add kustomize images: transformer and configMapGenerator across services
Move hardcoded image tags to kustomization.yaml images: sections (22
services) and replace hand-written ConfigMap manifests with
configMapGenerator (12 services). Image tags are now centralized in
kustomization.yaml, and generated ConfigMaps include content hashes
that trigger automatic pod rollouts on config changes.

New kustomization.yaml files for forgejo-runner and nvidia-device-plugin
switch ArgoCD from directory mode to kustomize mode.

Skipped: argocd (remote upstream), databases, external-secrets,
grafana-config (cross-kustomization dashboards), immich (Helm),
authentik blueprints (special YAML tags).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 14:23:45 -08:00
..
external-secret.yaml Add External Secrets Operator with 1Password Connect (#66) (#66) 2026-01-28 19:30:10 -08:00
ingress-tailscale.yaml Deploy Frigate NVR stack with Mosquitto, Ntfy, and frigate-notify (#190) 2026-02-14 21:27:44 -08:00
kustomization.yaml Add kustomize images: transformer and configMapGenerator across services 2026-02-24 14:23:45 -08:00
README.md P5: Migrate devpi to Kubernetes (#34) 2026-01-20 14:55:37 -08:00
service.yaml P5: Migrate devpi to Kubernetes (#34) 2026-01-20 14:55:37 -08:00
statefulset.yaml Add kustomize images: transformer and configMapGenerator across services 2026-02-24 14:23:45 -08:00

devpi PyPI Caching Proxy

devpi-server running in Kubernetes, providing:

  • PyPI caching proxy at root/pypi
  • Private package hosting at eblume/dev

Setup

1. Create the root password secret

kubectl create namespace devpi
op inject -i argocd/manifests/devpi/secret-root.yaml.tpl | kubectl apply -f -

2. Deploy via ArgoCD

argocd app sync apps
argocd app sync devpi

The container will auto-initialize on first startup using the root password from the secret.

3. Create user and index (first time only)

After the pod is running:

# Login to devpi as root
uvx --from devpi-client devpi use https://pypi.tail8d86e.ts.net
uvx --from devpi-client devpi login root
# Enter root password when prompted

# Create eblume user (prompts for password - use the one from 1Password)
uvx --from devpi-client devpi user -c eblume email=blume.erich@gmail.com

# Create private index inheriting from PyPI
uvx --from devpi-client devpi index -c eblume/dev bases=root/pypi

Usage

As pip index (caching proxy)

Configure ~/.config/pip/pip.conf:

[global]
index-url = https://pypi.tail8d86e.ts.net/root/pypi/+simple/
trusted-host = pypi.tail8d86e.ts.net

Upload private packages

cd ~/code/personal/your-package
uv build
uv publish --publish-url https://pypi.tail8d86e.ts.net/eblume/dev/

URLs

Credentials

Stored in 1Password vault blumeops, item kyhzfifryqnuk7jeyibmmjvxxm:

  • root password - devpi root user
  • password - eblume user password