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
UserCluster—User 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​