Jeff McCune ee16f14e03 refactor build plan pipeline
Previously the BuildPlan pipeline didn't execute generators and
transformers concurrently.  All steps were sequentially executed.  Holos
was primarily concurrent by executing multiple BuildPlans at once.

This patch changes the Build implementation for each BuildPlan to
execute a GoRoutine pipeline.  One producer fans out to a group of
routines each executing the pipeline for one artifact in the build plan.
The pipeline has 3 stages:

1: Fan-out to build each Generator concurrently.
2: Fan-in to build each Transformer sequentially.
3: Fan-out again to run each validator concurrently.

When the artifact pipelines return, the producer closes the tasks
channel causing the worker tasks to return.

Note the overall runtime for 8 BuildPlans is roughly equivalent to
previously at 160ms with --concurrency=8 on my M3 Max.  I expect this to
perform better than previously when multiple artifacts are rendered for
each BuildPlan.
2024-11-29 14:52:06 -08:00
2024-11-24 21:34:09 -08:00
2024-11-29 14:52:06 -08:00
2024-11-29 14:52:06 -08:00
2024-11-04 19:08:44 -08:00
2024-11-29 14:52:06 -08:00
2024-08-23 08:09:37 -07:00
2024-07-29 14:41:59 -07:00
2024-04-09 15:57:31 -07:00
2024-04-09 15:57:31 -07:00
2024-07-02 08:57:20 -07:00
2024-11-04 19:08:44 -08:00
2024-11-09 14:30:44 -08:00
2024-11-25 08:10:11 -08:00

Holos

Holos is a configuration management tool for Kubernetes implementing the rendered manifests pattern. It handles configurations ranging from single resources to multi-cluster platforms across regions.

Key components:

  • Platform schemas defining component integration
  • Building blocks unifying Helm, Kustomize and Kubernetes configs with CUE
  • BuildPlan pipeline for generating, transforming and validating manifests
---
title: Rendering Overview
---
graph LR
    Platform[<a href="https://holos.run/docs/v1alpha5/api/author/#Platform">Platform</a>]
    Component[<a href="https://holos.run/docs/v1alpha5/api/author/#ComponentConfig">Components</a>]

    Helm[<a href="https://holos.run/docs/v1alpha5/api/author/#Helm">Helm</a>]
    Kustomize[<a href="https://holos.run/docs/v1alpha5/api/author/#Kustomize">Kustomize</a>]
    Kubernetes[<a href="https://holos.run/docs/v1alpha5/api/author/#Kubernetes">Kubernetes</a>]

    BuildPlan[<a href="https://holos.run/docs/v1alpha5/api/core/#BuildPlan">BuildPlan</a>]

    ResourcesArtifact[<a href="https://holos.run/docs/v1alpha5/api/core/#Artifact">Resources<br/>Artifact</a>]
    GitOpsArtifact[<a href="https://holos.run/docs/v1alpha5/api/core/#Artifact">GitOps<br/>Artifact</a>]

    Generators[<a href="https://holos.run/docs/v1alpha5/api/core/#Generator">Generators</a>]
    Transformers[<a href="https://holos.run/docs/v1alpha5/api/core/#Transformer">Transformers</a>]
    Validators[<a href="https://holos.run/docs/v1alpha5/api/core/#Validator">Validators</a>]
    Files[Manifest<br/>Files]

    Platform --> Component
    Component --> Helm --> BuildPlan
    Component --> Kubernetes --> BuildPlan
    Component --> Kustomize --> BuildPlan

    BuildPlan --> ResourcesArtifact --> Generators
    BuildPlan --> GitOpsArtifact --> Generators

    Generators --> Transformers --> Validators --> Files

Setup

brew install holos-run/tap/holos

Refer to setup for other installation methods and dependencies.

Example

See our tutorial for a complete hello world example.

package holos

holos: Component.BuildPlan

Component: #Helm & {
	Name: "podinfo"
	Chart: {
		version: "6.6.2"
		repository: {
			name: "podinfo"
			url:  "https://stefanprodan.github.io/podinfo"
		}
	}
	Values: ui: {
		message: string | *"Hello World" @tag(message, type=string)
	}
}

Organizational Role

Platform engineers use Holos to generate Kubernetes manifests, both locally and in CI pipelines. The manifests are committed to version control and deployed via GitOps tools like ArgoCD or Flux.

Holos integrates seamlessly with existing Helm charts, Kustomize bases, and other version-controlled configurations.

Advantages of Holos

Safe

Holos leverages CUE for strong typing and validation of configuration data, ensuring consistent output from Helm and other tools.

Consistent

A unified pipeline processes all configurations - whether from CUE, Helm, or Kustomize - through the same well-defined stages.

Flexible

Composable building blocks for generation, transformation, validation and integration let teams assemble workflows that match their needs.

The core is intentionally unopinionated about platform configuration patterns. Common needs like environments and clusters are provided as customizable topics recipes rather than enforced structures.

Getting Help

Get support through our Discord channel or GitHub discussions. Configuration challenges arise at all experience levels - we welcome your questions and are here to help.

License

Holos is licensed under Apache 2.0 as found in the LICENSE file.

Description
No description provided
Readme Apache-2.0 31 MiB
Latest
2025-11-24 17:19:49 +00:00
Languages
CUE 92.1%
Go 7.5%
Makefile 0.2%