Add OpenBao secrets backend for Spindle CI
OpenBao server runs as a k8s StatefulSet (JuiceFS-backed) with a
host-level proxy for AppRole token renewal alongside Spindle.
Server (k8s):
- 1-replica StatefulSet in openbao namespace, JuiceFS PVC
- NodePort 30820 for host-level proxy access
- Auto-unseal via postStart lifecycle hook + k8s Secret
- KV v2 engine at spindle/, AppRole auth for proxy
Proxy (host, systemd user service):
- Connects to server via NodePort, handles token renewal
- Credentials at /home/spindle/.openbao/{role-id,secret-id}
- remove_secret_id_file_after_reading = false (survives restarts)
Integration:
- spindle.service depends on openbao-proxy.service
- Healthcheck failover starts proxy before spindle
- update-job deploys bao binary + proxy configs to all nodes
- make setup-openbao for one-time init + AppRole configuration