Skip to content

Commit 1839d86

Browse files
committed
busbar 0.1.2 — admin-mTLS works out of the box (live-cluster fix)
Testing the admin plane on a cert-manager cluster showed adminTLS.enabled gave only a server cert, but busbar's boot-guard requires mTLS (client_ca_file) on a network-exposed admin listener → crash loop. - Wire client_ca_file from the ca.crt cert-manager writes into the server-cert Secret, so adminTLS.certManager.enabled=true is real mTLS with no extra config. Explicit clientCASecret still wins. - Guard: adminTLS.enabled + existingSecret + no clientCASecret now fails helm install with guidance instead of crash-looping. Verified on kind + cert-manager: admin+mTLS boots (client_ca_file present), ingress + NetworkPolicy (admin restricted to one namespace) apply cleanly.
1 parent 166c764 commit 1839d86

4 files changed

Lines changed: 26 additions & 1 deletion

File tree

charts/busbar/CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Changelog
22

3+
## 0.1.2
4+
5+
Found by testing the admin-mTLS path on a live (cert-manager) cluster:
6+
7+
- **`adminTLS.enabled` now yields real mTLS.** busbar's boot-guard requires a client CA
8+
(`client_ca_file`) on a network-exposed admin listener, not just a server cert — a
9+
server-cert-only config crash-looped. The chart now wires `client_ca_file` from the
10+
`ca.crt` that cert-manager writes into the server-cert Secret (clients present certs
11+
signed by the same issuing CA), so `adminTLS.certManager.enabled=true` works out of the
12+
box. An explicit `clientCASecret` still takes precedence.
13+
- **New guard:** `adminTLS.enabled` with an `existingSecret` but no `clientCASecret` (where
14+
the chart can't derive a CA) now fails `helm install` with guidance instead of
15+
crash-looping the pod.
16+
317
## 0.1.1
418

519
Fixes found by deploying the chart to a live (kind) cluster — none were catchable by

charts/busbar/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v2
22
name: busbar
33
description: A production-grade Helm chart for busbar, a Rust LLM gateway with a data plane and a separate, loopback-by-default, mTLS-gated admin plane.
44
type: application
5-
version: 0.1.1
5+
version: 0.1.2
66
appVersion: "1.4.0"
77
kubeVersion: ">=1.24.0-0"
88
home: https://getbusbar.com

charts/busbar/templates/_helpers.tpl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ clear message so the user never ships an un-bootable deployment.
9090
{{- if and (not .Values.adminTLS.enabled) (not .Values.adminInsecure) -}}
9191
{{ fail "\n\nservice.admin.enabled=true exposes the admin plane on a non-loopback address (0.0.0.0:8081), which busbar's boot-guard REFUSES TO BOOT unless the admin listener requires mTLS or an explicit insecure waiver is set.\n\nFix one of:\n --set adminTLS.enabled=true (recommended: mTLS via cert-manager or an existing cert + client CA)\n --set adminInsecure=true (insecure waiver; only in a trusted, network-policied namespace)\n\nOr leave service.admin.enabled=false (default) to keep the admin plane on loopback.\n" }}
9292
{{- end -}}
93+
{{- /* mTLS needs a client CA, not just a server cert. cert-manager wires the issuing CA
94+
automatically; with an existingSecret the operator must supply a client CA. */}}
95+
{{- if and .Values.adminTLS.enabled (not .Values.adminTLS.certManager.enabled) (not .Values.adminTLS.clientCASecret) -}}
96+
{{ fail "\n\nadminTLS.enabled provides a server cert but no client CA, and busbar's admin boot-guard requires mTLS (client_ca_file) on a network-exposed admin listener — a server cert alone is not enough.\n\nFix one of:\n --set adminTLS.certManager.enabled=true (cert-manager wires the issuing CA as the client CA automatically)\n --set adminTLS.clientCASecret=<secret> (a Secret with ca.crt that admin clients must chain to)\n --set adminInsecure=true (skip mTLS; token-only admin plane)\n" }}
97+
{{- end -}}
9398
{{- end -}}
9499
{{- end }}
95100

charts/busbar/templates/configmap.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,14 @@ data:
1919
admin_tls:
2020
cert_file: /etc/busbar/tls/admin/tls.crt
2121
key_file: /etc/busbar/tls/admin/tls.key
22+
{{- /* busbar's boot-guard requires client_ca_file (real mTLS), not just server TLS.
23+
With an explicit client CA, use it. Otherwise fall back to the ca.crt that
24+
cert-manager writes into the server-cert Secret (the issuing CA) so mTLS works
25+
out of the box: admin clients present certs signed by that same CA. */}}
2226
{{- if .Values.adminTLS.clientCASecret }}
2327
client_ca_file: /etc/busbar/tls/admin-ca/ca.crt
28+
{{- else if .Values.adminTLS.certManager.enabled }}
29+
client_ca_file: /etc/busbar/tls/admin/ca.crt
2430
{{- end }}
2531
{{- end }}
2632
{{- if .Values.dataTLS.enabled }}

0 commit comments

Comments
 (0)