| commit | d20ddccddf601c2a34cc5238bd82b6a4a1744502 | [log] [tgz] |
|---|---|---|
| author | Jan Schär <jan@monogon.tech> | Wed May 08 14:18:29 2024 +0200 |
| committer | Jan Schär <jan@monogon.tech> | Tue May 14 12:11:45 2024 +0000 |
| tree | 52eeeb7917b79220ad0f0cb34447525f7c21341b | |
| parent | 8bc82868fd289220078ff317235db084349d9f70 [diff] |
m/n/k/reconciler: implement leader election Before this change, the reconciler runs on all Kubernetes controllers. When we are in a rolling upgrade of the cluster where a reconciled object changes, this will cause the old and new versions of the reconciler to fight each other, constantly updating the object back and forth. Now, the reconciler is elected among nodes of the latest release. The status of the reconciliation is communicated to all Kubernetes controllers through a new key-value in etcd. Additionally, compatibility constraints can be expressed by changing the constants minReconcilerRelease and minApiserverRelease, allowing reconciliation to happen in a controlled way that ensures compatibility even during rolling upgrades. Change-Id: Iaf7c27702bd9809a13d47bcf041b71438353bef2 Reviewed-on: https://review.monogon.dev/c/monogon/+/3062 Tested-by: Jenkins CI Reviewed-by: Serge Bazanski <serge@monogon.tech>
This is the main repository containing the source code for the Monogon Platform.
This is pre-release software - take a look, and check back later! In the meantime, join us on Matrix: #monogon-os-community:matrix.org.
Our build environment is self-contained and requires only minimal host dependencies:
/dev/kvm (if you want to run tests).Our docs assume that Bazelisk is available as bazel on your PATH.
Refer to SETUP.md for detailed instructions.
The source code lives in //metropolis (Metropolis is the codename of Monogon OS).
See the //metropolis/README.md for a developer quick start guide, or see the Monogon OS Handbook for user documentation.