How to: easily deploy Collabora Online on your Kubernetes setup

All you need to deploy Collabora Online on your Kubernetes setup, is applying these configuration settings on your installation of Collabora Online.

Install Collabora Online on Kubernetes in 3 easy steps

With the increasing use of the Kubernetes, we are happy to provide an easy way to deploy our online on your Kubernetes setup.
Thanks to Collabora developer lpranam, Collabora Online can be setup with Kubernetes and also a key feature such as collaborative editing will work correctly. Therefore it is vital to ensure that all users editing the same document end up being served by the same pod. Using the WOPI protocol, the http/https URL includes a unique identifier (WOPISrc) for use with that document. Thus load balancing can be done by using WOPISrc – ensuring that all URLs that contain the same WOPISrc are sent to the same pod. We use a reverse proxy to achieve this load balancing mechanism. HAProxy provides the easiest way to achieve all are requirements for this setup.

Pre-installation checklist

  1. running Kubernetes cluster
  2. The helm command-line tool
  3. The kubectl command-line tool

Configuration files can be found at github.com/CollaboraOnline/online/tree/master/kubernetes/helm/collabora-online

Installation steps

  1. Install HAProxy ingress controller
    kubectl apply -f https://raw.githubusercontent.com/haproxytech/kubernetes-ingress/master/deploy/haproxy-ingress.yaml
  2. Prepare the namespace in the Kubernetes cluster with this command
    kubectl create namespace collabora
  3. Install collabora online helm chart
    helm install collabora-online ./kubernetes/helm/collabora-online/

Accessing online service

The following steps may vary a little according to your cloud providers. Here we demonstrate how to access the online with a minikube setup on a local machine.

HAproxy is installed as a NodePort service so to access any service through HAProxy we can use the node’s ip.

  1. To get your node ip with minikube minikube ip

example output

192.168.0.106

2. Each container port is mapped to a NodePort port via the Service object. To find those ports

kubectl get svc --namespace=haproxy-controller

example output

In this instance, the following ports were mapped:

  • Container port 80 to NodePort 30536
  • Container port 443 to NodePort 31821
  • Container port 1024 to NodePort 30480

3. Now in this case to make our hostname available we have to add the following line into /etc/hosts:

192.168.0.106 loolwsd.public.example.com

Feedback and community

If you have feedback, or want to get involved somehow: here’s our cool-dev community!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.