Repository navigation
v0.6.0
[0.6.0] - 2026-10-19
Upgrade notes / operator action required
-
Manifests moved to
deploy/base. Install with
kubectl apply -k deploy/base; the client-cert opt-in is
kubectl apply -k deploy/overlays/client-cert.kubectl apply -f deploy/
no longer works. -
The stock DaemonSet authenticates with its in-cluster ServiceAccount. It
no longer mounts thebeep-controller-kubeconfigSecret or passes
--kubeconfig. Operators who rely on a client-cert kubeconfig must apply the
deploy/overlays/client-certoverlay. -
The ServiceAccount token is mounted into the controller container only.
deploy/base/daemonset.yamlsetsautomountServiceAccountToken: falseand
mounts a projectedserviceaccountvolume into the controller container, not
the privileged node-prep initContainer. Re-check any custom DaemonSet patches. -
Supported platforms: systemd-based Linux only (kernel 6.6+, little-endian
x86-64/AArch64, latest two Kubernetes minors). -
Nodes need
/etc/sysctl.d. node-prep writes/etc/sysctl.d/60-beep.conf
to persistgeneve0rp_filter=0. -
Lost-node prune bounds. A removed node leaves Service
status.loadBalancer.ingresswithin 30 s of a graceful stop once the
surviving controllers have run for 40 s, and up to 70 s right after a
restart; a silently lost node within 85 s of the later of its last renewal
and the survivor's start. -
Published ingress for existing
externalTrafficPolicy: LocalServices
changes. While no node has a usable endpoint (per address family), every
node is listed instatus.loadBalancer.ingress(fail-open), so a Service
created before its pods gets an ingress; new connections are dropped until a
pod is usable. Once one is, only nodes with a usable local pod stay listed.
Added
- Service
sessionAffinity: ClientIPis honoured: a client stays pinned to one
endpoint while the endpoint set is stable (timeoutSecondsis not honoured).
Changed
- Loader
--fixturerepeated for one front now adds endpoints instead of
keeping the last; an optional:affinitysuffix requests ClientIP affinity. FRONT_META.flagsbit 0 now means ClientIP affinity (no byte-layout change).externalTrafficPolicy: Localnow deviates from upstream semantics. A
node with no usable local pod forwards to the ready, non-terminating
endpoints cluster-wide (client IP preserved) instead of dropping. The front
is count 0 (drop) only when no pod is ready anywhere; a remote
serving-but-terminating pod keeps the Service published but is not a
fallback target.- Dependency and CI-action bumps (Renovate).
Fixed
geneve0rp_filterno longer reverts to the distro default after the
device is re-created on systemd hosts.- The loader re-attaches pinned links severed by deleting the geneve device
instead of crash-looping until/sys/fs/bpf/beepis cleaned by hand. - The controller no longer logs WARN for idle watch timeouts or the startup
initial-LIST wait; its watches request bookmarks. - A removed node's address leaves Service
status.loadBalancer.ingress
promptly, and the controller handles SIGTERM by withdrawing its Lease
addresses.