odin logo

odin

Template Kubernetes resources using CUE

Odin is not a package manager.

Odin does not know how to apply resources.

Odin is not meant to be used alone.

Because Odin is great at one singular thing:

Composing Kubernetes configurations

package example

import (
	odin "go-valkyrie.com/odin/api/v1alpha1"
)

odin.#Bundle & {
	metadata: {
	name: "example"
	}
	components: {
		httpbin: odin.#Component & {
			metadata: name: "httpbin"
			config: {
				image: string
			}
			resources: deployment: {
				apiVersion: "apps/v1"
				kind: "Deployment"
				metadata: name: "httpbin"
				spec: {
						template: spec: containers: [{
						name: "httpbin"
						image: config.image
						...
					}]
				}
			}
			resources: service: {
				apiVersion: "v1"
				kind: "Service"
				...
			}
			...
		}
	}
	values: {
		components: httpbin: image: "kennethreitz/httpbin:latest"
	}
}