Collabora Online Logo

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!

3 Responses

  1. Are there instructions for a real Kubernetes cluster (as opposed to a local Minikube) which uses the NGINX Ingress Controller?

    HAProxy is NOT the default and I don’t think many people want to install an extra Ingress Controller on their cluster.

    In this form, this is NOT very useful, please give us a solution for a real Kubernetes cluster.

      1. Hi cor
        I’ve been trying to deploy it using nginx-ingress qnd cert-manager as well, I have a 504 timeout. I believe there has something to be done to make it work. It works if I do a kubectl port-forward of the svc, but not when the cert-manager is issuing a challenge, therefore adding a rule to the nginx-ingress to resolve the host. Are there any examples on how to deploy it using nging ingress and cert manager?
        Thanks

Leave a Reply

Subscribe to our newsletter:

Follow us on social media:

Learn how we helped 100 top brands gain success