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. Timoni uses its own set of concepts, which are roughly equivalent to Helm’s concepts. Here’s an overview of Timoni’s features:
Timoni Modules
A Timoni module is a set of CUE definitions and constraints organized into a CUE module. It contains a timoni.cue
file, which serves as the Timoni entry point, and a values.cue
file for supplying user-defined values. Optionally, it can include a timoni.ignore
file for ignore rules, a cue.mod
file for module metadata, and a templates
directory for Kubernetes templates.
To initialize a new module, use the timoni mod init
command. To lint a module, use the timoni mod lint
command.
Examples of module structures can be found in the examples/minimal
and examples/redis
directories of the Timoni repository.
Timoni Instances
A Timoni instance represents a module instantiation on a Kubernetes cluster. A module can be installed multiple times on a cluster by giving its instances unique names per namespace.
To build a module, use the timoni build
command. To apply a module, use the timoni apply
command.
Timoni Bundles
A Timoni bundle is a CUE file for defining a group of instances together with their values and module references. It allows you to use arithmetic operations, string interpolation, and everything else that CUE std lib supports.
To lint a bundle, use the timoni bundle lint
command. To build a bundle, use the timoni bundle build
command.