node/DESIGN.md
The node container orchestrates Calico's per-node lifecycle: it bootstraps the node, installs the CNI plugin, and runs the per-node daemons (Felix, confd, BIRD) under runit inside a single container.
node/filesystem/etc/service/available/<name>/run and is
dispatched via the combined calico binary (see root
DESIGN.md → Combined calico binary).node/pkg/lifecycle/startup/startup.go is the
startup entry point — it provisions the node's resources in
the datastore (Node resource, BGP peers, etc.) before the
per-node daemons take over.calico binary, restart-on-config-change, health
reporting, build system: see the root
DESIGN.md.felix/DESIGN.md and the
per-topic sub-designs under felix/design/.node/filesystem/etc/calico/confd/templates/ — is a
cross-component decision documented in
design/cluster-route-programming/DESIGN.md.A PR that changes how the node container works — startup sequence, runit service set, CNI plugin installation path, or any documented invariant — must update this file in the same PR. Exemptions: bug fix restoring documented behaviour, mechanical refactor with no observable change, comment / log-message edits, dependency bumps. If in doubt, update.
This doc is currently a stub. Sections to flesh out as the content grows: startup flow detail (datastore-side resource provisioning, lock semantics), runit service supervision and restart semantics, CNI plugin installation and upgrade flow, BGP integration via BIRD/confd.