Skip to main content

CRD Reference

Butler extends the Kubernetes API with Custom Resource Definitions (CRDs) under the butler.butlerlabs.dev API group.

API Groups

API GroupVersionDescription
butler.butlerlabs.devv1alpha1Butler platform resources
steward.butlerlabs.devv1alpha1Hosted control plane resources

Core Resources

Cluster Management

CRDScopeShort NameDescription
TenantClusterNamespacedtcTenant Kubernetes cluster
ClusterBootstrapNamespacedcbManagement cluster bootstrap
MachineRequestNamespacedmrVM provisioning request
LoadBalancerRequestNamespacedlbrCloud L4 load balancer for control plane

Platform Configuration

CRDScopeShort NameDescription
ButlerConfigClusterbcPlatform-wide configuration
ProviderConfigNamespacedpcInfrastructure provider credentials

Multi-Tenancy

CRDScopeShort NameDescription
TeamClustertmTeam isolation boundary
UserClusterUser account
IdentityProviderClusteridpSSO/OIDC configuration

Images

CRDScopeShort NameDescription
ImageSyncNamespacedisSync OS images from Image Factory to providers

Addons

CRDScopeShort NameDescription
AddonDefinitionClusteradAddon catalog entry
TenantAddonNamespacedtaAddon on tenant cluster
ManagementAddonClustermaAddon on management cluster

Networking

CRDScopeShort NameDescription
NetworkPoolNamespacednpIP address pool for on-prem IPAM
IPAllocationNamespacedipaIndividual IP allocation from a pool

Workspaces

CRDScopeShort NameDescription
WorkspaceNamespacedwsButler Portal workspace
WorkspaceTemplateClusterwstWorkspace template definition

Steward Resources

Steward provides hosted control plane management.

CRDScopeDescription
TenantControlPlaneNamespacedHosted Kubernetes control plane
DataStoreClusterBackend storage for control planes

Labels and Annotations

Standard Labels

LabelDescription
app.kubernetes.io/managed-by: butlerResource managed by Butler
butler.butlerlabs.dev/team: <name>Team ownership
butler.butlerlabs.dev/tenant: <name>Associated tenant cluster
butler.butlerlabs.dev/network-poolAssociated network pool
butler.butlerlabs.dev/allocation-typeIP allocation type (loadbalancer, nodes)

Annotations

AnnotationDescription
butler.butlerlabs.dev/descriptionHuman-readable description
butler.butlerlabs.dev/created-byUser who created the resource

Finalizers

Butler uses finalizers to ensure proper cleanup:

FinalizerApplied ToPurpose
butler.butlerlabs.dev/tenantclusterTenantClusterCleanup child resources
butler.butlerlabs.dev/teamTeamCleanup namespace and RBAC
butler.butlerlabs.dev/tenantaddonTenantAddonUninstall Helm release
butler.butlerlabs.dev/networkpoolNetworkPoolBlock deletion with active allocations
butler.butlerlabs.dev/ipallocationIPAllocationEnsure Released phase for audit trail
butler.butlerlabs.dev/providerconfigProviderConfigBlock deletion if TenantClusters reference it
butler.butlerlabs.dev/loadbalancerrequestLoadBalancerRequestEnsure cloud LB resources are deleted before CR removal
clusterbootstrap.butler.butlerlabs.dev/finalizerClusterBootstrapCleanup MachineRequests, LoadBalancerRequests, and Secrets

See Also