holos

package module
v0.101.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 3, 2024 License: Apache-2.0 Imports: 2 Imported by: 0

README

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.

Documentation

Overview

Package holos defines types for the rest of the system.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FileContent added in v0.96.0

type FileContent string

FileContent represents the contents of a file as a string.

type FilePath added in v0.96.0

type FilePath string

FilePath represents the path of a file relative to the current working directory of holos at runtime.

type InstancePath

type InstancePath string

A InstancePath is a string representing the absolute filesystem path of a holos instance. It is given a unique type so the API is clear.

type PathCueMod

type PathCueMod string

A PathCueMod is a string representing the absolute filesystem path of a cue module. It is given a unique type so the API is clear.

Directories

Path Synopsis
api
author/v1alpha3
Package v1alpha3 contains CUE definitions intended as convenience wrappers around the core data types defined in package core.
Package v1alpha3 contains CUE definitions intended as convenience wrappers around the core data types defined in package core.
author/v1alpha5
Package author contains a standard set of schemas for component authors to generate common core BuildPlans.
Package author contains a standard set of schemas for component authors to generate common core BuildPlans.
core/v1alpha2
Package v1alpha2 contains the core API contract between the holos cli and CUE configuration code.
Package v1alpha2 contains the core API contract between the holos cli and CUE configuration code.
core/v1alpha3
Package v1alpha3 contains the core API contract between the holos cli and CUE configuration code.
Package v1alpha3 contains the core API contract between the holos cli and CUE configuration code.
core/v1alpha5
Package core contains schemas for a Platform and BuildPlan.
Package core contains schemas for a Platform and BuildPlan.
cmd
cli
cli/controller
Package controller integrates Choria Machine Room into Holos for cluster management.
Package controller integrates Choria Machine Room into Holos for cluster management.
cli/pull
Package pull pulls resources from the PlatformService and caches them in the local filesystem.
Package pull pulls resources from the PlatformService and caches them in the local filesystem.
cli/push
Package push pushes resources to the holos api server.
Package push pushes resources to the holos api server.
cli/register
Package register provides user registration via the command line.
Package register provides user registration via the command line.
client
Package client provides configuration and convenience methods for making API calls to the holos server.
Package client provides configuration and convenience methods for making API calls to the holos server.
ent
errors
Package errors provides error wrapping with location information
Package errors provides error wrapping with location information
logger
Package logger provides logging configuration and helpers to pass a logger instance through the context.
Package logger provides logging configuration and helpers to pass a logger instance through the context.
push
Package push pushes resources to the holos api server.
Package push pushes resources to the holos api server.
render
Deprecated: use cli instead
Deprecated: use cli instead
server/db
Package db manages database client and schema migrations to interact with entities.
Package db manages database client and schema migrations to interact with entities.
server/handler
Package handler implements service handlers.
Package handler implements service handlers.
server/middleware/authn
Package authn provides the middleware handler responsible for authenticating requests and adding the Identity to the request context.
Package authn provides the middleware handler responsible for authenticating requests and adding the Identity to the request context.
server/middleware/logger
Package logger logs http responses See: https://github.com/elithrar/admission-control/blob/v0.6.7/request_logger.go#L40
Package logger logs http responses See: https://github.com/elithrar/admission-control/blob/v0.6.7/request_logger.go#L40
strings
Package strings implements simple functions to manipulate UTF-8 encoded strings that are not included in the standard library package.
Package strings implements simple functions to manipulate UTF-8 encoded strings that are not included in the standard library package.
tint
Package tint copied from https://github.com/lmittmann/tint/tree/v1.0.4 to adjust the colors
Package tint copied from https://github.com/lmittmann/tint/tree/v1.0.4 to adjust the colors
token
Package token obtains, caches, and provides an ID token to authenticate to the holos api server.
Package token obtains, caches, and provides an ID token to authenticate to the holos api server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL