QuantyKube

Decisions

All pages

From docs/DECISIONS.md in the QuantyKube repository.

Every choice in QuantyKube that might be regretted is written down as a short record: what was decided, what it costs, and what was rejected. Each has its own page here, from docs/DECISIONS.md. When a later record changes an earlier one, the earlier one says so at its top, and its status below names the record that changed it. All others are in force.

The rule the file keeps:

Short ADRs. Newest at the bottom. If a decision gets reversed, strike it through and add a new entry, never silently edit history.

  1. ADR-001 Kubernetes first: the etcd subset the API server uses
  2. ADR-002 Honesty rule for public claims
  3. ADR-003 No third-party crates, the engine comes from QuantyDB
  4. ADR-004 Plaintext over a Unix socket until QuantyCore has TLS Partly superseded
  5. ADR-005 Sandbox means the node runtime behind CRI
  6. ADR-006 One storage interface, QuantyDB behind it first
  7. ADR-007 Apache 2.0, and money from what surrounds the code
  8. ADR-008 Raft comes later, and starts with a simulator Partly superseded
  9. ADR-009 kubectl apply installs an operator that swaps and undoes Partly superseded
  10. ADR-010 A revision is a commit, and the change log keeps both sides Partly superseded
  11. ADR-011 History is kept by time, whatever the API server compacts Amended
  12. ADR-012 A commit holds a range of revisions, so writes share fsyncs
  13. ADR-013 The runtime's syscalls sit behind one unsafe crate
  14. ADR-014 History lives in the change log, snapshots only briefly
  15. ADR-015 Two malloc arenas for the server
  16. ADR-016 Layers are unpacked with every path resolved inside the root
  17. ADR-017 A pod is three bind mounted namespaces, and runtime state is not kept
  18. ADR-018 The runtime refuses what it cannot honour Partly superseded
  19. ADR-019 Volumes are attached after the pivot
  20. ADR-020 cgroups follow the cgroupfs driver
  21. ADR-021 Exec joins the container through a second fork
  22. ADR-022 Pod networks come from CNI plugins
  23. ADR-023 Users resolve inside the image, and non-root means no capabilities
  24. ADR-024 The seccomp filter is Docker's allowlist
  25. ADR-025 Pulls go through the import
  26. ADR-026 Without a device filter there is no MKNOD
  27. ADR-027 Raft before 17 November, with a cut off
  28. ADR-028 History is served through the Kubernetes API
  29. ADR-029 The demonstration and the installer target kubeadm
  30. ADR-030 A failed commit stops the store
  31. ADR-031 Over a network the store speaks TLS and wants a client certificate
  32. ADR-032 Raft is a state machine without I/O, tested by a simulator that finds planted bugs
  33. ADR-033 Store nodes talk over TLS in frames, not gRPC, with certificates from a peer CA
  34. ADR-034 The store on Raft: every write a command in the log, the log in a file of its own
  35. ADR-035 A cluster moves from etcd with its revisions, while the API server is stopped
  36. ADR-036 The runtime runs what a kubeadm node needs: host namespaces, added capabilities, privileged
  37. ADR-037 CI publishes a public image of every commit on main
  38. ADR-038 A node moves onto the runtime with its kubelet stopped and its old pods cleared
  39. ADR-039 kubectl apply reaches a node through a privileged pod that starts a systemd unit
  40. ADR-040 One kubectl apply: an operator that records every step in an Installation