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
Configuration files can be found at: github.com/CollaboraOnline/online/tree/master/kubernetes/helm/collabora-online
Installation steps
- Install HAProxy ingress controller
kubectl apply -f https://raw.githubusercontent.com/haproxytech/kubernetes-ingress/master/deploy/haproxy-ingress.yaml
- Prepare the namespace in the Kubernetes cluster with this command
kubectl create namespace collabora
- 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.
- 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
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.
Hi Sola,
Thanks for your information. Could you maybe contact the community and bring your ideas there? If you have knowledge to share, it will of course be much appreciated. https://collaboraonline.github.io/
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