Skip to content
/ soup Public

GitOps continuous deployment and management tool for Kubernetes focused on simplicity.

License

Notifications You must be signed in to change notification settings

caldito/soup

Repository files navigation

Soup

Apache 2.0 License Go Reference Go Report Card release CircleCI

Soup is a GitOps operator for Kubernetes.

Why Soup

  • 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.

Getting started

Prerequisites

Kubernetes >= v1.20

Installation

Install in 3 easy steps:

  1. First get the kubernetes kubernetes manifest for installing
curl -O https://raw.githubusercontent.com/caldito/soup/main/manifests/install.yml
  1. Override the repo argument in the file you just downloaded
  2. 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.

Usage

Deployment Configuration file

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.

Arguments

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.

Contributing

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.