100 lines
3.0 KiB
Markdown
100 lines
3.0 KiB
Markdown
# 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/). |