cluster-api-control-plane-provider-steward

command module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2026 License: Apache-2.0 Imports: 25 Imported by: 0

README

Steward Cluster API Control Plane Provider

License Go Version Go Report Card Release

The Steward Control Plane Provider is a Cluster API implementation that bridges CAPI with Steward hosted control planes.

What is This?

This provider enables Cluster API to use Steward's TenantControlPlane resources as the control plane for CAPI-managed clusters. Instead of provisioning dedicated control plane nodes, the control plane runs as pods in a management cluster, managed by Steward.

How it works:

  1. CAPI creates a Cluster resource referencing a StewardControlPlane
  2. This provider creates a Steward TenantControlPlane resource
  3. Steward provisions the hosted control plane (apiserver, controller-manager, scheduler as pods)
  4. Worker nodes from any CAPI infrastructure provider join the hosted control plane
  5. The provider synchronizes status between CAPI and Steward

What is Steward?

Steward is an open-source project offering hosted Kubernetes control planes. The control plane runs in a management cluster as regular pods, enabling efficient multi-tenancy and reduced infrastructure overhead.

Steward is a community-governed fork of Kamaji, maintained by Butler Labs and the open source community. See the Steward documentation for more information.

StewardControlPlane Example

apiVersion: controlplane.cluster.x-k8s.io/v1alpha1
kind: StewardControlPlane
metadata:
  name: my-cluster-control-plane
  namespace: default
spec:
  version: "1.29.0"
  replicas: 2
  dataStoreName: default
  network:
    serviceType: LoadBalancer
    certSANs:
      - "my-cluster.example.com"
  kubelet:
    preferredAddressTypes:
      - InternalIP
      - ExternalIP
      - Hostname
    cgroupfs: systemd
  addons:
    coreDNS: {}
    kubeProxy: {}

CAPI Cluster Example

Complete example using StewardControlPlane with a CAPI infrastructure provider:

apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: my-cluster
  namespace: default
spec:
  clusterNetwork:
    pods:
      cidrBlocks:
        - 10.244.0.0/16
    services:
      cidrBlocks:
        - 10.96.0.0/16
  controlPlaneRef:
    apiVersion: controlplane.cluster.x-k8s.io/v1alpha1
    kind: StewardControlPlane
    name: my-cluster-control-plane
  infrastructureRef:
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: <InfrastructureCluster>
    name: my-cluster
---
apiVersion: controlplane.cluster.x-k8s.io/v1alpha1
kind: StewardControlPlane
metadata:
  name: my-cluster-control-plane
  namespace: default
spec:
  version: "1.29.0"
  replicas: 2
  dataStoreName: default
  network:
    serviceType: LoadBalancer
  addons:
    coreDNS: {}
    kubeProxy: {}

Supported CAPI Infrastructure Providers

Infrastructure Provider Version Notes
AWS >= v2.4.0 Technical considerations
Azure >= v1.18.0 Technical considerations
Equinix/Packet >= v0.7.2 Technical considerations
Hetzner >= v1.0.0-beta.30 Technical considerations
IONOS Cloud >= v0.3.0 Technical considerations
KubeVirt >= 0.1.7 Technical considerations
Metal3 >= 1.4.0 Technical considerations
Nutanix >= 1.2.4 Technical considerations
OpenStack >= 0.8.0 Technical considerations
Proxmox >= v0.6.0 Technical considerations
Tinkerbell >= v0.5.2 Technical considerations
vSphere >= 1.7.0 Technical considerations

Looking for additional integrations? Open a GitHub Discussion or issue.

Prerequisites

  • Kubernetes management cluster (v1.28+)
  • Steward installed and configured with a DataStore
  • Cluster API core components (v1.6+)
  • A supported CAPI infrastructure provider

Installation

Using clusterctl
clusterctl init --control-plane steward
Using Helm
helm repo add butler https://charts.butlerlabs.dev
helm install capi-steward butler/capi-steward -n capi-system

Development

This document describes how to use kind and Tilt for a simplified workflow that offers easy deployments and rapid iterative builds.

  1. Create a kind cluster according to the CAPI Infrastructure Provider requirements
  2. Install Cluster API with the clusterctl CLI
  3. Install Steward using Helm
  4. Clone this repository
  5. Run the provider with make run or use dlv for debugging
  6. Run Tilt by issuing tilt up

Versioning

Versioning adheres to Semantic Versioning principles. A full list of releases is available in the Releases section.

Contributing

Contributions are welcome! Please see our Contributing Guide for details.

  • Check existing issues before opening a new one
  • For bugs, provide a detailed report to help replicate and assess the issue
  • Commit messages follow conventional commits

Documentation

License

Apache License 2.0. See LICENSE for details.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api
v1alpha1
Package v1alpha1 contains API Schema definitions for the controlplane v1alpha1 API group +kubebuilder:object:generate=true +groupName=controlplane.cluster.x-k8s.io
Package v1alpha1 contains API Schema definitions for the controlplane v1alpha1 API group +kubebuilder:object:generate=true +groupName=controlplane.cluster.x-k8s.io
pkg

Jump to

Keyboard shortcuts

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