Gitopper
lastmod 2024-08-16created 2024-08-161 edits
Doing Gitops without Kubernetes
Features
- A GitOps tool for people who don't use Kubernetes
- Watches a remote git repository, pulls changes, and reloads the server (service) process by sending it a HUP signal
- Performs a sparse (but full-history) git checkout so that each service sees only the files it actually needs
- Sets up several bind mounts to give services access to files in Git
- If the target directory doesn't exist, it is created as the current user (if specified)
- Offers little more than pulling a repository, but lets you use a GitOps workflow without depending on an environment like Kubernetes
- The Git repository used to provision services must have at least one (sub)directory for each service
- Installs packages if specified, but doesn't upgrade or downgrade them, assuming there is a better way to do that
- The remote interface uses SSH keys for authentication
- The following features are implemented:
- Metrics: exports the Git hash so rollouts can be tracked
- Diff detection: possible via metrics or gitopperctl
- Out of band rollbacks: bypasses the normal Git workflow using gitopperctl
- No client side processing: files are used exactly as they are in the Git repository
- Canarying: a service can be given a different branch to check out