MONIT follows the GitOps practices to run many internal services on Kubernetes.
Our first iteration involved Flux1 with Helm3, for which we accumulated some months of experience.
We recently migrated to Flux2 (still using Helm3), which we use in conjunction with a GitLab CI to manage several namespaces in multiple Kubernetes clusters for different environments (production, qa, development).
To provide some numbers: we currently manage 6 namespaces and 8 Kubernetes clusters (production, qa, and 6 namespace-specific ones for development). We run a total of 8 services and 18 cronjobs at the moment, and we also manage numerous PVs, PVCs, and secrets.
Our GitLab CI has two uses: the first one is a simple YAML validation; the second one is to automatically rebase some specific external commits (from a different automatic flow) from master to qa.
Secrets are managed through Mozilla’s SOPS and encryption keys generated with AGE.
We also have an extensive documentation which is slightly tailored towards MONIT-specific configurations and needs, which covers clusters setups, migrations, general Flux operations, and more.