-
-
Notifications
You must be signed in to change notification settings - Fork 786
Description
Problem
Extensions that ship multiple services (e.g., FRR with zebra, bgpd, bfdd, staticd, mgmtd) have no way to let users control which services should be started. All registered extension services start automatically when the extension is installed.
Currently, the only mechanism to delay service startup is configuration: true in the service's depends section, but this blocks Talos boot if no ExtensionServiceConfig is provided — making it unsuitable for optional services.
Use Case
FRR (Free Range Routing) provides ~15 routing daemons, but most users only need 2-3 of them (e.g., zebra + bgpd). Right now, the extension either:
- Starts all daemons (wasteful, noisy logs)
- Uses
configuration: trueto gate startup, but then blocks boot if the user doesn't configure every single daemon
Proposal
An extension-level configuration mechanism (as opposed to per-service ExtensionServiceConfig) that allows users to declare which services from a multi-service extension should be enabled.
For example, something like:
apiVersion: v1alpha1
kind: ExtensionConfig
name: frr
services:
- mgmtd
- zebra
- bgpdOr alternatively, a configuration: optional dependency that means "wait for config if it exists, but don't block boot if it doesn't":
depends:
- configuration: optionalContext
This came up while developing the FRR extension (siderolabs/extensions#977). Related discussion in that PR with @smira and @dsseng.