Kolab is distributed as container images, meaning a solution to run these containers is required.

The recommended way to run Kolab is on top of Kubernetes as the container orchestrator.

Kubernetes uses “manifests” to define what should be executed. To maintain this manifest a Helm Chart is used, which provides a configurable template, rendering a complete Kubernetes manifest of everything that should be running for a complete Kolab environment.

This results in the following chain:

  • A values.yaml file configures the Helm Chart, as the primary configuration point.
  • The Helm Chart provides the template to render a complete Kubernetes manifest
  • The manifest is applied to Kubernetes which orchestrates running the necessary containers in the desired configuration.

To support bare-metal and virtualized installations, ansible is used to provision a Kubernetes cluster based on k3s.

Supported Kubernetes Distributions

Kolab is focused on running on your own hardware, and as such the primary focus is not on running in somebody else cloud. This initially leads to K3s and Openshift as target Kubernetes distributions.

  • Kolab on Kubernetes can in principle work on any (Linux) Kubernetes distribution, but initially aims at two target platforms: K3S and Openshift
  • The only supported architecture is x86. PPC64LE can be supported on openshift by building images on openshift.
    • Platform support depends on availability of third party packages, as well as compatiblity of source code.

Deployment Method

The deployment is managed by:

  • Ansible playbooks (configured via inventory.yaml) to manage the virtualized nodes, which run k3s and other dependencies.
  • A helm chart (configured via values.yaml) to manage the kolab deployment running on k3s.

The ansible playbooks assume that one or more KVM hypervisors are available to run the virtualized nodes, and the following topolgy is assumed:

  • Control host: A workstation with access to the two hypervisors is used to manage the environment.
  • Hypervisor A
    • Infrastructure VM 1
    • Worker VM 1
  • Hypervisor B
    • Infrastructure VM 2
    • Worker VM 2

The ansible playbooks are executed from the control host.
It is required that passwordless ssh logins are configured (for the user executing the ansible scripts),
from the control host to the hypervisors for the virtual machine setup.

  • First an inventory.yaml file must be created to describe the deployment.
  • An initial run of the ansible playbook will provision the vms on the hypervisors, setup haproxy, mariadb and a k3s cluster, and deploy kolab in the cluster.
  • An initial values.yaml will be generated from a template next to the inventory file.

Going forward the inventory.yaml and values.yaml files should be added to version control. Changes to the environment can be applied by either executing th