Helm chart for running Central in Kubernetes

What high-level problem are you trying to solve?
Some users (@TobiasMcNulty, @Tino, @Florian_May, @spwoodcock) have publicly expressed a desire to run ODK in Kubernetes and would like an official Helm chart.

Upload any helpful links, sketches, and videos.
There are some public examples already. Perhaps we could "adopt" one of these as official and collaboratively improve them?

Related: Host ODK Central Docker images on GitHub container registry

@yanokwa Thank you. I will have a look and compare them to ours.

I have sanitised the helm Chart we use at our institution so it can be used as a public helm chart, to be found here, in the helm directory:

What it does so far:

  • Deploy a set of the public Odkcentral containers (any version published there) together with a (bitnamilegacy) postgresql cluster, the public redis images, the public enketo image and a postfix image.
  • Create a default admin user if not present
  • Connect to any other accessible postgresql database for instance cloudnative pg

Some questions:

Can we use this as a starting point for a public Helm chart in the ODK repo?
Do people want to collaborate working on this to expand and improve it?

Hi @Tino

Thanks for open sourcing your Helm chart! I will take a look to see if it could work for Caktus, or if we could merge ours together. The main differences I noticed so far is that we are using sub-charts for the difference services, and we prefer to deploy a managed Postgres instance rather than running Postgres in the cluster. We are also still building our own images due to some missing environment variables in the official images, but we are gradually reducing our dependence on our own images (in no small part thanks to the Central team! :slightly_smiling_face:).

In case it's helpful for testing out the Caktus chart, I recently published a blog post about using it on DigitalOcean, as a parallel to the official DigitalOcean guide:

Please feel free to let us know in case of any feedback.

Cheers,

Tobias

Hello Tobias,

Thank you for sharing. We also started out with building our own images but since I am not a fan of having to rebuild images all the time :slight_smile: I have switched to using the default images. Now we have do a lot of searching and replacing variables in our helm chart now (which also breaks if variables get switched around too much)

But I am pretty proud of the fact the our current chart is backwards compatible up to version ODKCentral version v2025.4.0 and I will try to keep it backwards compatible.

In our current deployment we switched from the bitnami postgres version to a CloudNative Postgres database for easier maintenance but often also use a managed service for this.

Since the first versions of our Chart were built on top of our own managed Kubernetes environment I have to sanitize everything before making it public. We have some changes to the chart to also run the 2026.x versions but I have not incorporated them yet.

At the moment it is just a slow sideproject :frowning: But let's use each others knowledge and make things better!