Containerizing Foreman/Katello

Is it possible to containerize enough of Foreman/Katello yet in order to deploy it on a container platform to get a scaleable, fault tolerant system? HA solutions so far just seem to suck. There are some good points, but at some stage they all fall apart so far. Finding a way to run Foreman/Katello as proper micro-containers would provide an excellent way to provide HA, scaling, perhaps even rolling updates?

@ehelms is attempting to do so in and there are quite a few open PRs to improve this. I’ll let him correct me if I’m wrong, but Katello still has a lot of things in the actual application that make it hard to load balance, let alone get a scaleable fault tolerant system. For example, there are still quite a few assumptions that $HOSTNAME is the service name. We’re working on getting these out

IMHO you should be able to run an application using classical load balancing on bare metal/VMs as well because it’s easier to debug when you’re not that familiar with Kubernetes/Openshift. For me that’s a goal in

I expect that when our efforts get up and running we’ll find many points where we find out the application needs fixes. Of course I’d be happy to be proven wrong and it all works magically but experience has shown me it’s never as nice as you’d hope :slight_smile:

Note that I expect the vanilla Foreman to be much more cloud native because we know users are running load balanced instances.

Any help in this area is of course very welcome.


Yes, absolutely agree on the bare metal/VMs too. Would it help if the installer used ansible to orchestrate all the various Puppet manifests?

Is there any way to monitor the progress of something like this? Is there an overall ticket which has a reasonably accurate tracker of all the moving parts?

I was discussing this with @sean797 last week and even he seems to have done some work in this area :thinking:

I don’t think so, the method of configuration is mostly irrelevant once you have a container image built and you can build it with Puppet or Ansible.

I do see a benefit of using Ansible to poke foreman-installer with clustered VMs or bare metal (as you can really ensure they are all the same) but you can also grab all the puppet modules our installer uses and run them from another puppet master to config a distributed Foreman or Katello. I think there are pros and cons to both approaches.
I’m fairly sure there are more issues we are yet to identify, contributions welcome (even if it’s just testing)

I think you are talking about