Timoni is a package manager for Kubernetes, powered by CUE and inspired by Helm. It offers a better experience of creating, packaging, and delivering apps to Kubernetes by relying on cuelang’s type safety, code generation, and data validation features.
Before installing Timoni, ensure you have the following prerequisites:
CUE Language: Timoni utilizes the CUE language for defining and validating data. To check if CUE is installed, run
cue version
. If not installed, follow the official installation guide.Go: Timoni is built using Go. Make sure Go is installed by running
go version
. If not installed, follow the official installation guide.OCI-compatible container runtime (e.g., containerd, cri-o, or Docker).
Kubernetes cluster (local or remote) with
kubectl
configured.
To install Timoni, follow the steps below:
Option 1: Install from source
- Clone the Timoni repository:
git clone https://github.com/stefanprodan/timoni.git
cd timoni
- Build Timoni:
make build
- Install Timoni binary:
sudo make install
Option 2: Use a pre-built binary
Download the appropriate pre-built binary for your system from the releases page. After downloading, extract the binary and move it to a location in your PATH
.
Option 3: Use Chainguard Images
Chainguard Images provides a timoni image with Timoni pre-installed. To use it, follow the instructions in the Chainguard Images documentation.
Working with modules, bundles, and instances
After installing Timoni, you can work with modules, bundles, and instances.
- Modules: A Timoni module is a set of CUE definitions and constraints organized into a CUE module. To create a new module, use
timoni mod init <module-name>
. - Bundles: A Timoni bundle is a CUE file for defining a group of instances together with their values and module references. To create a new bundle, create a CUE file with the desired configuration.
- Instances: A Timoni instance represents a module instantiation on a Kubernetes cluster. To create a new instance, use
timoni apply <name> oci://<module-url> -v <semver> -f <path/to/values.cue>
.
For more information and detailed usage, refer to the official documentation.
Sources: