Host ODK Central Docker images on GitHub container registry

Yo dowg!

With "need" I mean that pre-built Docker images would make non-standard deployments more accessible by cutting out the "docker build" steps.
In combination with alternatives to docker-compose, e.g. Helm charts, or even just Kubernetes YAML configs for each volume and container, this could make non-standard deployments a bit easier without taking away from the main "docker-compose" and "go faster, use hosted" ways.

In my particular use case, I need to deploy ODK Central on our own infrastructure. We run Azure / Kubernetes / Rancher, so my tasks are:

  • Build images. Dead easy if you have access to an environment with Docker. Harder if not. This hurdle can be completely eliminated through pre-built images. A secondary docker-compose file can use those pre-built images.
  • Deploy ODK Central using images and config settings from docker-compose.

I'm experimenting with Kompose to translate docker-compose into a Helm chart and Kubernetes YAML config files: https://github.com/dbca-wa/central/blob/master/README_k8s.md.
Once I get that to work, the deployment to Kubernetes through Rancher reduces to "upload YAML files to Rancher in the browser".

Lastly, a clarification: Deploying Central via Rancher requires pre-built images, but no Helm chart. One can also create workloads (containers), volumes, and configmaps (settings) by hand, which I describe for ODK Central <= 0.9 at Installing ODK central in microsoft azure cloud - #2 by Florian_May. However, doing so manually with 19 moving parts (containers, volumes, configs) is immensely tedious and error-prone.

Having a Helm chart however could facilitate deployment of Central to any Kubernetes service.

My questions:

  • What are costs and risks of letting GH actions build Docker images?
    • Presumably, once the build is working (it does here), it's automated and wouldn't require mainenance.
    • Ideally, Docker tagging should follow GH tagging: master branch = "latest" tag, GH tag = Docker image tag
  • What are costs and risks of hosting these images on e.g. GetODK's GH packages?
    • Setting up an "organization token" will take a few mins
    • Is download bandwidth limited, are there any costs on high use?
  • If I wanted to share a working ODK Central deployment using Kubernetes / Rancher, what would be the most appropriate place for it?
1 Like