Features - stefanprodan/timoni

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.

Vendoring Kubernetes APIs and CRDs