Skip to main content

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.

AddonPurpose
CiliumCNI networking (pod-to-pod communication)
MetalLBLoadBalancer Services (on-prem clusters only)
kube-vipControl plane virtual IP (on-prem management clusters)

Optional Addons

Users install and remove these through TenantCluster spec, the Console, or directly via TenantAddon CRDs.

CategoryAvailable Addons
StorageLonghorn, OpenEBS
IngressTraefik, nginx-ingress
Certificatescert-manager
MonitoringPrometheus, Victoria Metrics
GitOpsFlux, 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