Go Kure
Kure: Type-Safe Kubernetes Resource Generation
Warning
⚠️ Work in Progress: Kure is currently under active development and has not been released yet. APIs and features are subject to change. Use at your own risk.
Kure is a powerful Go library for programmatically building Kubernetes resources, designed specifically for GitOps workflows. Say goodbye to complex templating engines and hello to strongly-typed, composable resource generation.
Why Kure?
Building Kubernetes manifests for GitOps can be challenging:
- YAML templating is error-prone and hard to maintain
- Helm charts add complexity with their templating language
- Raw manifests lead to duplication and inconsistency
Kure solves these problems by providing:
- Type-safe builders that catch errors at compile time
- Composable patterns for reusable resource generation
- Native Go code instead of template syntax
- GitOps-ready output for Flux and ArgoCD
Features
Comprehensive Resource Support
- Core Kubernetes resources (Deployments, Services, ConfigMaps, etc.)
- FluxCD resources (Kustomizations, HelmReleases, Sources)
- cert-manager integration
- External Secrets Operator
- MetalLB configuration
Hierarchical Organization
- Cluster → Node → Bundle → Application structure
- Logical grouping of related resources
- Clean directory layout generation
Advanced Capabilities
- JSONPath-based patching system
- Multi-environment support
- OCI registry integration
- Validation and error handling
Quick Start
import "github.com/go-kure/kure/pkg/fluxcd"
// Create a Flux Kustomization
ks := fluxcd.CreateKustomization("my-app", "default",
kustv1.KustomizationSpec{
Path: "./manifests",
SourceRef: kustv1.CrossNamespaceSourceReference{
Kind: "GitRepository",
Name: "my-repo",
},
})
Learn More
- Overview - Introduction and design philosophy
- Architecture - Deep dive into Kure’s design
- Launcher System - Declarative Kubernetes manifest generation
- Examples - See Kure in action
Get Involved
Kure is open source and welcomes contributions!