2025-10-07 11:05:08 +01:00
..
2025-10-07 11:05:08 +01:00
2025-10-07 11:05:08 +01:00
2025-10-07 11:05:08 +01:00
2025-10-07 11:05:08 +01:00
2025-10-07 11:05:08 +01:00
2025-10-07 11:05:08 +01:00
2025-10-07 11:05:08 +01:00
2025-10-07 11:05:08 +01:00

Cluster Configurations

This directory contains cluster configuration definitions for the provisioning system. Clusters represent complete deployments that combine multiple task services and infrastructure components.

Available Clusters

Web Cluster (web/)

Purpose: Basic web service cluster deployment

  • Configuration: Simple web service with configurable name validation
  • Dependencies: None (self-contained)
  • Use Case: Basic web applications and static sites

OCI Registry (oci-reg/)

Purpose: Full OCI-compliant container registry deployment

  • Configuration: Comprehensive container registry with storage, security, and networking
  • Features:
    • Multiple storage drivers with deduplication and garbage collection
    • Authentication via htpasswd and TLS support
    • UI interface and search capabilities
    • Registry synchronization and CVE scanning
    • Structured logging and monitoring
  • Dependencies: Requires provisioning module base schemas
  • Use Case: Private container registries for Kubernetes clusters

Planned Clusters

  • buildkit: Container build infrastructure
  • cdci-argocd: GitOps CD pipeline with ArgoCD
  • cdci-tekton: CI/CD with Tekton pipelines
  • git: Git repository hosting
  • pod_repo: Pod repository management
  • postgresql: Database cluster
  • repository: General repository services

Usage

Creating a Cluster

# Using the main CLI
provisioning/core/cli/provisioning cluster create <cluster-name> <infra-name>

# Using workflow system
nu -c "use core/nulib/workflows/cluster.nu *; cluster create '<cluster-name>' '<infra-name>' --check"

Listing Clusters

provisioning/core/cli/provisioning cluster list

Deleting a Cluster

nu -c "use core/nulib/workflows/cluster.nu *; cluster delete '<cluster-name>' '<infra-name>' --check"

Configuration Structure

Cluster configurations are defined using KCL schemas:

schema ClusterName:
    name: str = "cluster-name"
    # Cluster-specific configuration
    check:
        len(name) > 0, "Cluster name cannot be empty"

Integration

Clusters integrate with:

  • Providers: AWS, UpCloud, Local for infrastructure provisioning
  • Task Services: Container runtimes, networking, storage, monitoring
  • Orchestrator: Workflow management and coordination
  • Configuration System: KCL schema validation and type safety

Development

Adding a New Cluster

  1. Create cluster directory: mkdir <cluster-name>
  2. Create KCL directory: mkdir <cluster-name>/kcl
  3. Define cluster schema: <cluster-name>/kcl/<cluster-name>.k
  4. Add module definition: <cluster-name>/kcl/kcl.mod
  5. Update cluster registry in main provisioning module

KCL Module Structure

[package]
name = "cluster-name"
edition = "v0.11.2"
version = "0.0.1"

[dependencies]
provisioning = { path = "../../../kcl", version = "0.0.1" }

For more information, see the main provisioning documentation.