Cluster Multi Tenancy(4.2)

Concept

Cluster Multi Tenancy is a concept meaning multiple Usage Engine installations in the same Kubernetes cluster. Typically, this is used to accommodate separate production, test, and development instances. You also typically want the freedom of using more recent versions for development and test than what you currently have in production.

multi-tenency.png
Illustration of an installation where the production, test, and development instances all have different versions

As can be seen in the picture above, in addition to the production, test, and development installations, there is a separate operator installation. Henceforth this is referred to as the crd-operator. The
crd-operator is different compared to the regular operators in that it is responsible for managing the helm lifecycle of the ECDeployment CRD (typically converting between CRD versions). The regular operators (i.e. the ones belonging to a specific Usage Engine instance) are only responsible for managing the lifecycle of the ECDeployment instances. 

To summarize, the following rules apply for multi-tenancy:

  • Each Usage Engine instance needs to be installed in its own dedicated namespace.

  • A crd-operator instance needs to be installed in its own dedicated namespace.

  • The version of the crd-operator instance must be at least the same as the latest version of any currently installed instance. 
    For example, in the picture above, the latest installed Usage Engine version is v2.2.0 (i.e. the development instance), therefore the crd-operator version must be at least v2.2.0. 

Failure to follow these rules may compromise the integrity of your ECDeployments.

Installation Instructions

In a multi-tenant scenario, the crd-operator must be installed first. This is done through the operator helm chart:

$ helm upgrade --install <your release name> usage-engine-private-edition-operator --version <the relevant version> --namespace <the dedicated crd-operator namespace> Example: $ helm upgrade --install crd-operator usage-engine-private-edition-operator --version 2.1.0 --namespace usage-engine-crd-operator

Once that is done, you can proceed to install the Usage Engine instances that you require using the regular installation instructions. The only difference is that you must set the following helm value for each installation:

  • global.multiTenant=true

Upgrade Instructions

When it comes to upgrading any of the instances, first check if that means that the crd-operator also needs to be upgraded (remember the rules in the Concept section). 

If the crd-operator needs to be upgraded, it can be done using more or less the same commands as for installation. The only difference would be the version parameter value.

Once that is done, you can proceed to upgrade the instance using the regular upgrade instructions. Remember that you still must set the following helm value when upgrading the installation:

  • global.multiTenant=true