Addons
Butler manages cluster addons through a Helm-based catalog system. Addons extend cluster functionality with networking, storage, ingress, monitoring, and other capabilities.
Addon Types
Platform Addons
Required for cluster operation. Butler installs these automatically during cluster creation. They cannot be removed through the Console or CLI.
| Addon | Purpose |
|---|---|
| Cilium | CNI networking (pod-to-pod communication) |
| MetalLB | LoadBalancer Services (on-prem clusters only) |
| kube-vip | Control plane virtual IP (on-prem management clusters) |
Optional Addons
Users install and remove these through TenantCluster spec, the Console, or directly via TenantAddon CRDs.
| Category | Available Addons |
|---|---|
| Storage | Longhorn, OpenEBS |
| Ingress | Traefik, nginx-ingress |
| Certificates | cert-manager |
| Monitoring | Prometheus, Victoria Metrics |
| GitOps | Flux, ArgoCD |
How It Works
Three CRDs drive the addon system:
AddonDefinition -- Cluster-scoped catalog entries. Each definition specifies a Helm chart repository, chart name, available versions, default values, and whether the addon is a platform requirement. Definitions can also carry a tier (infrastructure or apps) that controls GitOps export ordering, and an iconData field with a base64-encoded SVG logo for display in the Console. Platform admins manage the catalog.
TenantAddon -- Namespaced resources that represent an addon installed on a specific tenant cluster. Butler creates TenantAddons from TenantCluster.spec.addons or users can create them directly. The butler-controller installs the Helm chart on the tenant cluster and tracks its health.
ManagementAddon -- Cluster-scoped resources for addons installed on the management cluster itself (Steward, CAPI providers, monitoring stack).
Specifying Addons
Define addons in the TenantCluster spec:
spec:
addons:
cni:
provider: cilium
version: "1.17.0"
loadBalancer:
provider: metallb
version: "0.14.9"
storage:
provider: longhorn
version: "1.7.0"
certManager:
enabled: true
version: "1.16.0"
ingress:
enabled: true # default; set to false to skip Traefik (saves 1 LB IP)
version: "34.3.0"
Each addon's version field is required. Butler does not auto-select versions. The ingress controller (Traefik) is enabled by default and can be disabled for workload patterns that don't need HTTP ingress (CI runners, batch processing, dedicated ingest clusters).
See Also
- Architecture > Addon System -- Installation sequence, dependency resolution, and controller flow
- AddonDefinition CRD Reference -- Full field specification
- Addon Catalog Operations -- Using the Console to browse and manage addons
- TenantCluster Reference -- Addon spec fields