Skip to content

Helm chart for Kill Bill, Kaui and MariaDB/PostgreSQL (builds on #341) - #353

Open
KBbitsP wants to merge 5 commits into
masterfrom
work-for-ts-252
Open

KBbitsP wants to merge 5 commits into
masterfrom
work-for-ts-252

Conversation

@KBbitsP

@KBbitsP KBbitsP commented Nov 13, 2026 •

Copy link
Copy Markdown

Summary

Helm chart that deploys Kill Bill, Kaui and a database. It builds on #341 (Vijay's two commits are kept as is) and addresses its open review comments.

Changes on top of #341

  • Passwords and the Kaui session key live in a Secret (killbill.adminPassword, database.password, a generated or set kaui.secretKeyBase), or an existing one via existingSecret. The admin password is passed as KB_ADMIN_PASSWORD, which the images read.
  • A checksum of the chart-managed credentials restarts Kill Bill and Kaui when they change; an upgrade with no changes restarts nothing.
  • database.type selects a bundled MariaDB or PostgreSQL (killbill/mariadb / killbill/postgresql); database.external.* points Kill Bill and Kaui at an existing server, with optional jdbcParameters.
  • Bundled databases use the Recreate strategy, an optional storageClass, and a volume that is kept on helm uninstall.
  • Resource names and labels derive from the release name; long names stay unique and within 63 characters.
  • imagePullSecrets on every Deployment; killbill.extraEnv, extraVolumes and extraVolumeMounts (for example, to mount a licence file); kaui.extraEnv.
  • Probes: startup and readiness on Kill Bill's healthcheck and on Kaui's /; Kill Bill liveness on the port only, so a database outage does not restart it.
  • Default images: Kill Bill 0.24.22, Kaui 4.0.31.
  • The change to the latest image's startup script from Added Helm chart for KillBill, Kaui, and MariaDB #341 is reverted: the chart targets versioned images.
  • Removed unused helm create leftovers; updated Chart.yaml and NOTES.txt (with a warning when the default passwords are in use).
  • Added a chart README and a helm_ci workflow: lint, renders of each setup, resource-name checks with long release names, and rejection of an unknown database.type.

Testing

All helm_ci checks also pass locally with Helm 3.16.2.

Installed on Docker Desktop Kubernetes:

Setup Result
Default (MariaDB, Kill Bill 0.24.22, Kaui 4.0.31) Healthy, tenant created, Kaui login works
helm upgrade (database pod replaced) Data kept
helm upgrade with no changes No pods restarted
helm uninstall Database volume kept
Bundled PostgreSQL Healthy, tenant created, Kaui login works
Upgrade to a Kill Bill 0.25 premium image from a private registry, licence mounted from a Secret Starts licensed, plugin loaded, data from 0.24.22 kept, Kaui 5.0.4 login works
Kaui session key Same key in the Secret and in Kaui, kept across upgrades

Notes

  • The defaults use the public Docker Hub images, whose newest line is 0.24. Other versions can be set through killbill.image and kaui.image.
  • The getting-started docs from technical-support#252 are not updated in this PR.

vnandwana and others added 3 commits November 13, 2026 10:51
…netes

* Added configurable images, replicas, services, and environment variables
* Configured Kubernetes service discovery between KB, Kaui, and MariaDB
* Added startup, readiness, and liveness probes
* Updated KB startup script to support configurable DB host
* Added Kubernetes service based communication between components
* Fixed Kaui service port mapping
* Updated Kubernetes service configuration
* Simplified Helm templates and NOTES
Builds on Vijay's Helm chart from #341 (his two commits are kept as is).

- Passwords move to a Secret (killbill.adminPassword, database.password),
  or an existing one via existingSecret. The admin password is now passed
  as KB_ADMIN_PASSWORD, which the images read.
- imagePullSecrets is applied to every Deployment.
- Resource names and labels derive from the release name.
- database.type selects a bundled MariaDB or PostgreSQL; database.external
  points Kill Bill and Kaui at an existing server instead.
- Bundled databases use the Recreate strategy, an optional storageClass,
  and a volume that is kept on helm uninstall.
- killbill.extraEnv, extraVolumes and extraVolumeMounts (for example, to
  mount a licence file); kaui.extraEnv.
- Kaui probes; 5-second timeouts on the Kill Bill and database probes.
- Default images: Kill Bill 0.24.22, Kaui 4.0.31.
- Removed unused helm create leftovers; updated Chart.yaml and NOTES.txt.
- Added a chart README and a helm_ci workflow (lint and render checks).
Copilot AI balanced review requested due to automatic review settings November 13, 2026 06:30

This comment was marked as resolved.

- Revert the change to the latest image's startup script and drop DB_HOST.
  The chart targets versioned images; the latest development image installs
  plugins on start against a local MySQL.
- Kaui and database resource names use the full name cut to 52 characters,
  so long release names keep every name unique and within 63 characters.
- The chart's Secret holds a Kaui session key (kaui-secret-key-base),
  generated once and reused on upgrades, or set with kaui.secretKeyBase.
- A checksum of the chart-managed credentials on the Kill Bill and Kaui
  pods restarts them when a password changes.
- Kill Bill liveness only checks the port, so a database outage does not
  restart it. The MariaDB probe reads the password from MYSQL_PWD.
- database.external.jdbcParameters adds JDBC URL parameters; empty external
  database names fall back to the defaults.
- NOTES.txt warns when the default passwords are in use.
- helm_ci: least-privilege permissions, pinned Helm version, checkout v5,
  and a check that resource names stay unique with a long release name.
Copilot AI balanced review requested due to automatic review settings November 13, 2026 06:58

This comment was marked as resolved.

- Keep component names unique: a full name over 52 characters is cut to 45
  characters plus 6 characters of its hash before the component suffix.
- Compute the credentials checksum from a JSON list, so values that contain
  "|" cannot produce the same checksum.
- Kaui startup and readiness probes call "/" over HTTP, so Kaui only
  receives traffic once it has fully started.
- kaui-secret-key-base is required in the Secret, so every Kaui pod signs
  sessions with the same key.
- helm_ci also checks two long release names in one namespace and a
  fullnameOverride that ends like a component name.
Copilot AI balanced review requested due to automatic review settings November 13, 2026 07:37

This comment was marked as resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants