Wire the KVM provider: main.go, kvm-ssh Secret mount, samples, docs, CHANGELOG

Registers "kvm" in the provider builtins, mounts an optional kvm-ssh
Secret at /etc/proxy-operator/kvm, adds a kvm-home providers-config
sample and a proxy_kvm.yaml Proxy sample, documents the provider in
docs/kvm-provider.md (prerequisites, config reference, image cache and
its do-not-replace-in-use rule, known gaps), and updates the README
and architecture provider sections and decision log.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-10 19:13:51 +00:00
co-authored by Claude Fable 5.1
parent b3984ca69d
commit 791988b5a0
11 changed files with 448 additions and 6 deletions
+16
View File
@@ -1,5 +1,21 @@
# Changelog
## 2026-09-08 11:00 UTC — KVM/libvirt provider
- New `kvm` provider type: Managed proxies as VMs on your own libvirt/KVM hosts. Each
host is reached over SSH with the libvirt unix socket forwarded through the
connection (pure Go, nothing to expose on the hypervisors beyond sshd); one provider
instance can span several hosts, selected by `placement.zone`.
- Base images (`images:` map or a direct URL in `placement.image`) are downloaded by the
operator into each host's storage pool on first use, verified by sha256 when configured,
and cached there. Per-VM disks are qcow2 overlays; cloud-init arrives on a NoCloud seed
ISO built in-process. GC identity lives in the domain's `<metadata>` element.
- Wiring: `"kvm": kvm.New` in `cmd/main.go`; optional `kvm-ssh` Secret mounted at
`/etc/proxy-operator/kvm`; samples `config/samples/proxy_kvm.yaml` and a `kvm-home`
block in `providers-config.yaml`; `docs/kvm-provider.md`; opt-in integration test
(`make test-integration-kvm`) against a real hypervisor.
- Not yet validated on a real host — that is the next step on the branch.
## 2026-08-10 09:34 CEST — kind e2e verified; fix Squid OOM in containers; quickstart goes in-cluster
- Full end-to-end pass on a throwaway kind cluster: Squid pod Ready with a real CONNECT