100 lines
3.0 KiB
Markdown
Raw Normal View History

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
```bash
# 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
```bash
provisioning/core/cli/provisioning cluster list
```
### Deleting a Cluster
```bash
nu -c "use core/nulib/workflows/cluster.nu *; cluster delete '<cluster-name>' '<infra-name>' --check"
```
## Configuration Structure
Cluster configurations are defined using KCL schemas:
```kcl
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
```toml
[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](../../../docs/).