ADR 0006 — iGPU de Frigate: pasar la Iris Xe de lebron a kyrie¶
- Estado: aceptado
- Fecha: 2026-10-30
Contexto¶
Frigate se para en lebron el 2026-10-29 por falta de recursos y se migra al
clúster k3s (Fase 4). La detección usa OpenVINO sobre la iGPU Intel Iris Xe,
que está pasada por PCI a la VM lebron. kyrie (VM 9002 del pool
k8s-homelab) no la ve.
AGENTS prohíbe modificar las VMs legacy. Además, el provider bpg/proxmox
gestiona hostpci mediante id, pero ese parámetro no es compatible con
api_token (exige usuario y contraseña root). El token del repo está
limitado al pool k8s-homelab y no puede ver lebron.
Decisión¶
Mover la iGPU manualmente de lebron a kyrie con una excepción expresa
del propietario del repo, autorizada para esta migración:
- Parar
lebron(VM 100), quitarle el dispositivo PCI y arrancarla. - Parar
kyrie(VM 9002), añadir0000:00:02.0(sinx-vga) y arrancarla. - Verificar
/dev/drienkyrie.
En el momento de esta decisión Terraform no gestionaba hostpci (el token
no podía leer el inventario PCI del nodo). El procedimiento manual está en
docs/runbooks/frigate-igpu.md.
Actualización (2026-10-31):
hostpcipasa a gestionarse con Terraform (var.k3s_node_hostpci→ bloquehostpcidel módulok3s-node) usando un resource mapping de Proxmox (igpu), porque los dispositivos PCI no mapeados solo los puede configurarroot(error real conid: «only root can set 'hostpci0' config for non-mapped devices»). El mapping se crea a mano y el token lo lee conSys.Auditen/(rolk8s-homelab-audit);VM.Config.HWTypeen el rol del pool permite escribirhostpci. El movimiento inicial delebronakyriefue manual, como se describe arriba.
Consecuencias¶
- Excepción puntual a la regla de no tocar
lebron; queda registrada aquí. - Parada breve de Home Assistant, Mosquitto, InfluxDB y el resto de servicios
de
lebrondurante el cambio. - La iGPU deja de estar disponible para cualquier otra VM.
- El driver
i915no viene en la imagen cloud: el rol Ansibleigpuinstalalinux-modules-extra+linux-image-genericy carga el módulo. Sin ese rol, el PCI aparece en la VM pero no se crea/dev/dri. - Desde 2026-10-31
hostpciestá en el estado de Terraform: unapplylo mantiene y un cambio manual se revertiría. RequiereSys.Auditen/yVM.Config.HWTypeen el pool. - Rollback: devolver el PCI a
lebron, descomentar el bloque del servicio (está comentado enportainer-compose) y arrancarlo.
Alternativas descartadas¶
- Detección en CPU: pierde la aceleración del detector y del reconocimiento
facial, y el objetivo es reducir el consumo respecto a
lebron. - Gestionar
hostpcicon Terraform: descartada inicialmente porque exigía ampliar el ámbito del token. Revisada el 2026-10-31: se hace conapi_tokenañadiendoSys.Auditen/(rol mínimok8s-homelab-audit),VM.Config.HWTypeal rol del pool y un resource mapping PCI creado a mano, sin credenciales root en el provider.