evcc, otbr, libation, external-dns (apps), monitoring (4), woodpecker:
values in OpenBao KV (homelab/apps/*, loaded 2026-07-13), manifests are
now ExternalSecrets keeping the old Secret names. libation's payload is
a binary SQLite db — stored base64 in KV with decodingStrategy: Base64
on the ES. Decryption blocks dropped from apps/evcc/otbr/libation/
monitoring KS (paths sops-free) plus the dormant one on grafana-db.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CRgBFn9m8a2ncFMLusikH6
Deploys evcc (evcc.io) as a monitoring-only instance — no charger or
loadpoint yet — to validate the Vitocharge VX3 -> open3e -> MQTT energy
pipeline and get familiar with evcc ahead of a future wallbox.
evcc runs as a plain Deployment (house style, like gatus) with:
- grid/PV/battery custom MQTT meters + battery SoC, reading the VX3
open3e datapoints (grid 1603, PV 1690, battery power 1836, SoC 1664)
- config delivered via a sops-encrypted Secret (mqtt password inline)
- Traefik ingress on evcc.renner.uno / evcc.k.renner.uno
- a 1Gi ceph-block PVC for evcc's SQLite state
- a dedicated Flux Kustomization (clusters/homelab/evcc.yaml)
- a per-namespace CiliumNetworkPolicy (evcc-ns.yaml)
MQTT: adds a scoped broker user `evcc` (read-only on open3e/#) to the
Mosquitto deployment, plus the reciprocal home-assistant-ns ingress rule
so evcc can reach mosquitto:1883 via ClusterIP. The password is a shared
sops value (evcc namespace + home-assistant namespace).
Note: applying this restarts the Mosquitto pod once (brief MQTT blip for
HA/open3e), because the broker's env/command changes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>