A Kubernetes operator that implements the Cluster API infrastructure provider for bare-metal machines.
Simple, reliable approach: Redfish power management + iPXE network boot + Hardware inspection.
- Simple - No complex vendor-specific workarounds
- Reliable - Only uses universally-supported Redfish features
- Vendor Agnostic - Works with any Redfish-compliant BMC
- Hardware Discovery - Collects real hardware specs via inspection
- Production Ready - Clean architecture, minimal dependencies
- Beskar7 claims a physical host
- Sets PXE boot flag via Redfish
- Powers on the server
- Server network boots inspection image (iPXE)
- Inspection image collects hardware details
- Reports back to Beskar7
- Validates hardware requirements
- Kexecs into target OS
- Machine joins cluster
Version: v0.4.0-alpha
Status: Alpha - Under active development
Breaking Changes: v0.4.0 is NOT compatible with v0.3.x (see CHANGELOG)
- Kubernetes v1.31+ with kubectl configured
- Cluster API v1.10+ (install with clusterctl)
- cert-manager v1.16+ (installation guide)
- iPXE infrastructure - DHCP + HTTP server (setup guide)
- Inspection image - beskar7-inspector (repository)
Using Helm (Recommended):
helm repo add beskar7 https://wrkode.github.io/beskar7
helm repo update
helm install beskar7 beskar7/beskar7 --namespace beskar7-system --create-namespaceUsing Release Manifests:
kubectl apply -f https://github.com/wrkode/beskar7/releases/download/v0.4.0-alpha/beskar7-manifests-v0.4.0-alpha.yamlSee Quick Start Guide for detailed installation instructions.
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: PhysicalHost
metadata:
name: server-01
spec:
redfishConnection:
address: "https://192.168.1.100"
credentialsSecretRef: "bmc-credentials"apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: Beskar7Machine
metadata:
name: worker-01
spec:
inspectionImageURL: "http://boot-server/beskar7-inspector/boot"
targetImageURL: "http://boot-server/kairos/v2.8.1.tar.gz"
hardwareRequirements:
minCPUCores: 4
minMemoryGB: 16Complete examples: See examples/ directory for full cluster configurations.
Beskar7 consists of three main controllers:
- PhysicalHost Controller - Manages BMC connections and power state
- Beskar7Machine Controller - Orchestrates provisioning workflow
- Beskar7Cluster Controller - Manages cluster-level infrastructure
Detailed architecture: See docs/architecture.md
Works with any Redfish-compliant BMC. Tested with Dell, HPE, Lenovo, Supermicro, and generic BMCs.
Details: See docs/hardware-compatibility.md
- Quick Start Guide - Step-by-step getting started
- iPXE Setup Guide - Infrastructure setup
- Architecture - Technical architecture details
- API Reference - Complete API documentation
- Examples - Working configuration examples
- Troubleshooting - Common issues and solutions
- Hardware Compatibility - Supported BMCs
git clone https://github.com/wrkode/beskar7.git
cd beskar7
make build
make testSee docs/ci-cd-and-testing.md for complete development guide.
Contributions are welcome! Please:
- Open an issue to discuss major changes
- Follow existing code style
- Add tests for new features
- Update documentation
Apache License 2.0 - See LICENSE file for details.
- Issues: https://github.com/wrkode/beskar7/issues
- Discussions: https://github.com/wrkode/beskar7/discussions
- Documentation: https://github.com/wrkode/beskar7/tree/main/docs
This project was inspired by and learns from:
- Tinkerbell - Network boot provisioning
- Metal³ - Kubernetes bare-metal
- Cluster API - Kubernetes cluster lifecycle
Beskar7 - Simple, reliable bare-metal provisioning for immutable Kubernetes.