<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Concepts :: Go Kure</title><link>https://www.gokure.dev/kure/dev/concepts/index.html</link><description>Concepts Understand the ideas behind Kure’s design.
Architecture - System architecture and component overview Domain Model - The Cluster, Node, Bundle, Application hierarchy Design Philosophy - Type-safe builders, no templating, GitOps-native</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://www.gokure.dev/kure/dev/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>Architecture</title><link>https://www.gokure.dev/kure/dev/concepts/architecture/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.gokure.dev/kure/dev/concepts/architecture/index.html</guid><description>Kure Architecture Documentation Version: 2.0.0
Date: August 2025
Status: Complete
Executive Summary Kure is a Go library for programmatically building Kubernetes resources used by GitOps tools (Flux, cert-manager, MetalLB, External Secrets). The library emphasizes strongly-typed object construction over templating engines, providing a composable, type-safe approach to generating Kubernetes manifests.
Key Architectural Achievements:
Domain-Driven Design: Hierarchical cluster model with clear boundaries Interface Segregation: Split monolithic workflow interfaces into focused components Type Safety: Strong typing throughout with comprehensive validation GitOps Agnostic: Support for multiple GitOps tools through pluggable workflows Declarative Patching: JSONPath-based patching system with structure preservation The architecture supports complex Kubernetes cluster configurations while maintaining simplicity and extensibility through clean separation of concerns and well-defined interfaces.</description></item><item><title>Domain Model</title><link>https://www.gokure.dev/kure/dev/concepts/domain-model/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.gokure.dev/kure/dev/concepts/domain-model/index.html</guid><description>Domain Model Kure models Kubernetes infrastructure as a four-level hierarchy. Each level maps to a concept in GitOps deployment workflows.
The Hierarchy Cluster └── Node (tree structure) └── Bundle (deployment unit) └── Application (workload) Cluster The root of the hierarchy, representing a target Kubernetes cluster. A cluster has a name, a tree of nodes, and GitOps configuration specifying which workflow engine to use (Flux or ArgoCD).
Node An organizational grouping within a cluster. Nodes form a tree structure — for example, a cluster might have top-level nodes for infrastructure and applications, each with child nodes for specific concerns.</description></item><item><title>OCI Artifact Layout</title><link>https://www.gokure.dev/kure/dev/concepts/oci-layout/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.gokure.dev/kure/dev/concepts/oci-layout/index.html</guid><description>OCI Artifact Layout This document describes the folder structure inside a Wharf stack OCI artifact, how Flux Kustomization objects reference that structure, and how the layout changes when the artifact is split across multiple OCIs.
Kure’s ManifestLayout and WriteToTar are the primitives used to produce this layout. The structure described here is what crane emits; kure enforces it via the layout tree.
Single OCI (monolithic) All directories are siblings at the same level. Either all at the OCI root, or all under a &lt;clustername&gt;/ prefix — the nesting depth is consistent throughout.</description></item><item><title>Design Philosophy</title><link>https://www.gokure.dev/kure/dev/concepts/design-philosophy/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.gokure.dev/kure/dev/concepts/design-philosophy/index.html</guid><description>Design Philosophy Kure is built on a few core principles that guide its design and API choices.
Type-Safe Builders Over Templating Traditional Kubernetes tooling relies on string-based templating (Helm, Kustomize overlays, Jsonnet). This creates a class of errors that only surface at deploy time — typos in YAML paths, type mismatches, missing fields.
Kure uses Go’s type system instead:
// Compile-time checked — typos and type errors are caught by the compiler ks := fluxcd.Kustomization(&amp;fluxcd.KustomizationConfig{ Name: "my-app", Namespace: "flux-system", Path: "./clusters/production/apps", Interval: "10m", Prune: true, }) If you misspell a field name, the Go compiler tells you immediately.</description></item></channel></rss>