LiteLLM Kubernetes: Seguridad y Troubleshooting
Tabla de contenidos
Parte 4 de 4. En la Parte 3 conectamos las herramientas. Esta parte final cubre producción, troubleshooting y pasos siguientes.
LiteLLM es un gateway de IA open-source que unifica las APIs de más de 100 proveedores tras un endpoint compatible con OpenAI. Revisa la Parte 1 para el contexto completo.
Consideraciones de Producción
Mi equipo actual es un homelab. Si lo llevas a producción, estas mejoras son obligatorias.
Usar Kubernetes Secrets
El Deployment de la Parte 2 ya referencia secrets mediante secretKeyRef. Audita tus ConfigMaps y logs por si hubiera credenciales filtradas.
env: - name: KIMI_API_KEY valueFrom: secretKeyRef: name: litellm-provider-keys key: KIMI_API_KEYAñadir Límites de Recursos
resources: requests: memory: "512Mi" cpu: "500m" limits: memory: "2Gi" cpu: "2000m"Habilitar TLS
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: litellm-ingress namespace: litellm annotations: cert-manager.io/cluster-issuer: "letsencrypt-prod"spec: tls: - hosts: - litellm.tudominio.com secretName: litellm-tls rules: - host: litellm.tudominio.com http: paths: - path: / pathType: Prefix backend: service: name: litellm-service port: number: 4000Configurar Monitoring
Sin visibilidad, operas a ciegas. Monitoriza requests, errores y latencia para detectar problemas.
LiteLLM expone métricas de Prometheus en /metrics:
apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata: name: litellm-metrics namespace: litellmspec: selector: matchLabels: app: litellm endpoints: - port: "4000" path: /metrics interval: 30sImplementar Rate Limiting
El rate limiting evita que un solo cliente agote tu cuota mediante el algoritmo simple-shuffle con callbacks de éxito-fallo.
general_settings: master_key: "os.environ/LITELLM_MASTER_KEY"
router_settings: routing_strategy: "simple-shuffle"
litellm_settings: success_callback: ["prometheus"] failure_callback: ["prometheus"]Troubleshooting
| Error | Causa | Solución |
|---|---|---|
Connection refused | Pod no listo | kubectl get pods -n litellm |
Authentication Error | API key incorrecta | Verifica LITELLM_MASTER_KEY |
Model not found | Typo en nombre | Revisa proxy_config.yaml |
Kimi: 401 Unauthorized | Faltan headers | Añade User-Agent + X-Kimi-Client |
OpenRouter: 400 | Falta HTTP-Referer | Añade header con tu dominio |
DB connection failed | URL Postgres mala | Verifica DATABASE_URL |
Pod stuck Pending | HostPath no existe | Crea /k3s_storage/litellm |
Modo Debug
Añade --detailed_debug a los args, luego kubectl logs -n litellm -l app=litellm --tail=100 -f.
Conclusión
LiteLLM en Kubernetes eliminó mi caos de API keys. ¿Cambia precios? Actualizas un archivo. ¿Nuevo modelo? Tres líneas. Se acabó buscar credenciales.
Próximos pasos: Añade fallback routing para resiliencia, spend tracking para costes, y caching para reducir latencia. Cada feature se configura en minutos.
Preguntas Frecuentes
¿Qué es LiteLLM?
Gateway de LLM open-source con API unificada compatible con OpenAI para 100+ proveedores.
¿Por qué desplegar en Kubernetes y no localmente?
Gestión centralizada, config persistente, acceso compartido y escalado sin pérdida de estado.
¿Puedo añadir más proveedores?
Sí, 100+ soportados. Añade una entrada a model_list en proxy_config.yaml.
¿Mis datos de API están seguros?
Keys en Kubernetes Secrets. En producción: TLS, network policies y aislamiento de namespace.
¿Cómo actualizo la config sin reiniciar?
Actualiza proxy_config.yaml y ejecuta kubectl rollout restart deployment/litellm-deployment -n litellm.
¿Proxy vs SDK?
Proxy es servidor standalone (esta serie). SDK es librería Python. Usa Proxy para múltiples clientes.
Fuentes y Referencias
- Documentación Oficial de LiteLLM
- Guía de Despliegue de LiteLLM Proxy
- Documentación de API de Kimi
- Documentación de OpenRouter
- Documentación de NVIDIA NIM
- Documentación de Kubernetes
- Documentación de Tailscale
También disponible en inglés, Also available in English.