Skip to content
Home » Posts » Which Kubernetes Distribution should one use?

Which Kubernetes Distribution should one use?

This entry is part 1 of 1 in the series Tales of the Mojaloop Design Authority

An interesting question was raised at the first MDA’s convening of 2023…

Which Kubernetes Distribution or Flavour should the Mojaloop Community support? (see Issue 93)

The Mojaloop Design Authority (MDA) unanimously agreed that no specific distribution should be selected, but rather the latest supported version of Kubernetes running on a Cloud Native Computing Foundation (CNCF) certified distribution or managed solution (e.g. Azure, AWS, GCP) should be selected when testing new Mojaloop Releases.

Let me first give you a bit of exposition before we go into the detailed reasoning.

Background

One of Mojaloop’s fundamental goals is to be un-opinionated with regard to the underlying runtime infrastructure since it must be deployable on a wide range of hardware supporting both on-prem and cloud options.

As a result of this, Kubernetes was selected as the target deployable platform.

Kubernetes is an Open-Source system for automating the deployment, scaling, and management of containerized applications. It is the technology that unlocks the ability for Mojaloop (or any hosted application) to be deployed on-prem or in the cloud with minimal, if any change to the underlying deployment descriptor, policies, or security aspects.

This is fundamentally compatible with Mojaloop itself, as it is also an Open-Source solution striving for very much the same ideals.

In addition, Kubernetes has been adopted widely with many vendors offering enterprise solutions that offer different types of support based on your requirements. But most importantly, it is Open-Source…and it thus gains all the benefits that one expects from an Open-Source solution licensed under Apache 2.0 (as is Mojaloop)

This results in many distributions of Kubernetes being made available for one to choose from. 

And this is the segway to our conundrum…

Which should you choose, and which should be supported by the Mojaloop Community as a runtime for Mojaloop itself?

The reasoning behind the answer may be simpler than you expect.

The Answer

The Mojaloop Design Authority agreed that selecting any one or many distributions or even a managed solution (i.e. Azure, AWS, GCP) is actually not important. 

What actually matters is that the distribution is certified by the Cloud Native Computing Foundation (CNCF).

The CNCF provides guidelines and certifications for software conformance ensuring that every vendor’s version of Kubernetes supports the required APIs, as do open-source community versions.

Thus any CNCF-certified Kubernetes distribution should conform to these benefits:

  1. Consistency: Users want consistency when interacting with any installation of Kubernetes.
  2. Timely updates: To remain certified, vendors need to provide the latest version of Kubernetes yearly or more frequently, so you can be sure that you’ll always have access to the latest features the community has been working hard to deliver.
  3. Confirmability: Any end user can confirm that their distribution or platform remains conformant by running the identical open-source conformance application (Sonobuoy) that was used to certify.

What does this actually mean?

Simply put, if you select a supported version of Kubernetes, and test it against a CNCF-certified distribution of Kubernetes, or even a certified managed solution hosted by a cloud provider such as Azure, AWS, or GCP…

It should be deployable, and consistent when deploying against any other CNCF-certified distribution or managed solution matching the same version.

This drastically reduces the “testable” footprint for a Mojaloop Release and ensures that it is compatible with any “matching” versioned CNFC-certified distribution or managed solution.

Feel free to reach out directly through the comment section below to leave your thoughts on this topic or contact our team if you would like to learn more or contribute to the Mojaloop Open Source Project!

References
  1. https://mojaloop.io
  2. https://github.com/mojaloop/design-authority-project/issues/93
  3. https://kubernetes.io
  4. https://kubernetes.io/releases
  5. https://github.com/kubernetes/kubernetes/blob/master/LICENSE
  6. https://docs.mojaloop.io/getting-started/license.html
  7. https://en.wikipedia.org/wiki/Open-source_software
  8. https://www.cncf.io/certification/software-conformance

Join the conversation