Saltar a contenido

Vaultwarden Kubernetes Secrets (VKS)

Sincroniza la colección Homelab de Vaultwarden hacia Secrets de Kubernetes.

Resumen

VKS (antoniolago/vaultwarden-kubernetes-secrets) autentica contra Vaultwarden con la API key de un usuario de servicio y crea Secrets en Kubernetes a partir de ítems etiquetados con el campo custom namespaces. Sustituye a External Secrets Operator (que no tiene provider nativo para Vaultwarden) como puente Vaultwarden → k8s.

Estado

Campo Valor
Estado Operativo
Argo CD Application vaultwarden-kubernetes-secrets
Namespace vaultwarden-kubernetes-secrets

Despliegue

Campo Valor
Método Helm chart (multi-source)
Chart / imagen vaultwarden-kubernetes-secrets@2.0.0 (OCI ghcr.io/antoniolago/charts)
Origen clusters/luka/apps/vaultwarden-kubernetes-secrets/
Config en el repo clusters/luka/config/vaultwarden-kubernetes-secrets/

Red

Campo Valor
Service — (sin Service; solo sync interno)
URL — (no expuesto)

Acceso y usuarios

  • Usuario de servicio: vaultwarden-sync (API key de usuario + master password; email gorkarevilla+vaultwarden-sync@gmail.com), con acceso solo lectura a la colección Homelab.
  • Credenciales: SealedSecret vaultwarden-kubernetes-secrets (BW_CLIENTID / BW_CLIENTSECRET / VAULTWARDEN__MASTERPASSWORD).

Configuración

  • VAULTWARDEN__SERVERURL=https://passwords.local.gorkarevilla.com (debe ser HTTPS: VKS rechaza URLs http://). Apunta al endpoint interno de Traefik.
  • VAULTWARDEN__ORGANIZATIONNAME=Familia, VAULTWARDEN__COLLECTIONNAME=Homelab.
  • SYNC__SYNCINTERVALSECONDS=300 (5 min). RBAC cluster-wide (crea Secrets en todos los namespaces).
  • Un ítem con el campo custom namespaces produce un Secret cuyo nombre sale del nombre del ítem (espacios → -), con claves username/password.

Almacenamiento

  • La DB de sync (sync.db) va en un emptyDir (estado reconstruible desde Vaultwarden). No requiere PVC.

Dependencias

  • Depende de: k3s, Vaultwarden (org Familia / colección Homelab), Sealed Secrets.
  • Usado por: cualquier servicio cuyos secretos viven en la colección Homelab.

Backup y recuperación

  • Re-desplegable desde Git; el estado (qué Secrets crea) lo manda Vaultwarden.

Monitorización

  • Pendiente (ServiceMonitor opcional del chart, requiere Prometheus Operator).

Referencias

  • https://github.com/antoniolago/vaultwarden-kubernetes-secrets

Notas / TODO

  • Pin por digest de imagen si se quiere reproducibilidad exacta (el chart usa tag 2.0.0).
  • El SERVERURL debe ser HTTPS (VKS rechaza http://).
  • El campo custom del ítem es namespaces (plural); namespace (singular) no se reconoce y el ítem se ignora.
  • El sync.db va en un emptyDir (efímero); se pierde en cada reinicio. Para persistirlo habría que activar el componente API del chart (que lo guarda en un PVC). El borrado de huérfanos se apoya en labels, no en la DB, así que sigue funcionando, pero el estado de sync se reconstruye en cada arranque.