Soup is a GitOps operator for Kubernetes.
- Focused on design and usage simplicity.
- Deployment to kubernetes performed with Server-Side Apply, allows a simple yet fully capable deployment module for all type of resources.
- Match branch names with Regex.
- Match manifests names with patterns.
- Option to create namespaces called the same way as the branch. Useful in combination with the regex branch selector.
Image docs/images/overview.png shows an overview on how the system works.
You can watch the following demo of Soup working.
Kubernetes >= v1.20
Install in 3 easy steps:
- First get the kubernetes kubernetes manifest for installing
curl -O https://raw.githubusercontent.com/caldito/soup/main/manifests/install.yml
- Override the
repo
argument in the file you just downloaded - Apply to the cluster
kubectl apply -f install.yml
There is also support for arm64 clusters. To use it change the container image in the install.yml
file from pablogcaldito/soup:<version>
to pablogcaldito/soup:arm64-<version>
before applying.
Soup reads a file named .soup.yml
on the repository branches in order to know what to deploy and in which namespace. An example can be found in docs/examples/.soup.yml.
The command line arguments should be in this form:
-arg=value
Available arguments:
- repo: the url of the repo. This must be specified
- interval: the sync interval in seconds. By default is set to 120s.
Pull requests are welcomed and encouraged. For questions, feature requests and bug reports, please open an issue.
There is also a TODO file containing work planned to do.
An internal diagram which may be useful for contributors can be found in docs/images/internals.png.