Why Mattermost built a Kubernetes Operator

Why Mattermost built a Kubernetes Operator

Mattermost is a state-of-the-art, highly scalable open source messaging platform for secure team collaboration. Kubernetes is a robust open source container management platform that runs on any land-based or cloud infrastructure and automates the installation, configuration, and maintenance of diverse, highly distributed systems.

It sounds like Mattermost and Kubernetes are made for each other. And it’s getting even better. 

The Benefits (and Challenges) of using Kubernetes with Mattermost

Kubernetes offers rich incredible out-of-the-box functionality—features like self-healing, load balancing, secret management, and portability, to name a few. Kubernetes makes them simple and easy.

All of these features represent challenging IT tasks that customers previously had to figure out and script themselves; with Kubernetes, they come for free. Kubernetes, then, offers Mattermost customers a single common installation and management method that can be implemented in any environment.

We’re talking about orchestrating big, scalable, distributed systems. A typical Mattermost enterprise deployment, for example, might serve 30,000 to 60,000 users, with at least four Mattermost servers installed on different pieces of hardware. There are also multiple instances of the other applications that Mattermost needs to interact and coordinate with, such as databases, proxies, email services, and so forth.

In a large distributed system, you are potentially talking about a multitude of services, jobs, pods, and clusters—all of which need to remain synchronized and communicate with others while scaling, load balancing, and handling crashes and failures. Kubernetes is a great solution to meet all of these needs.

At this point, Kubernetes probably sounds too good to be true. All of that really complicated stuff taken care of for free. 

Well, there’s a catch: Kubernetes can quickly become complex when deploying non-trivial applications at scale, requiring significant product expertise and heavy IT resources who are experts in Kubernetes management. 

To reduce that complexity, Mattermost is developing an “operator” that will enable you to install and manage Mattermost through simple commands that require only limited Kubernetes knowledge and significantly reduced IT overhead.

For more detailed information on how Kubernetes works, check this out.

What is an operator?

To counter the complexity of non-trivial deployments in Kubernetes, organizations using the container management platform have begun building operators. 

In the simplest terms, an operator is a set of product- or application-specific instructions packaged into its own program that communicates with Kubernetes on how to manage the application. It tells an application what to run, where to find it, and how to configure it. An operator can automate complex application deployment and operation activities, such as installation, configuration changes, software updates, failure recovery, and more.

The real power of operators is that they can extend Kubernetes paradigms to match any application’s specific needs. They can even be used in concert together to facilitate and automate managing the cross-application interaction of stateful applications. The Mattermost operator does this by interacting with MySQL and MinIO operators. And since this is Kubernetes, this infrastructure management automation is scalable and works across the entire distributed environment.

To learn more about operators, read this.

Introducing the Mattermost Kubernetes Operator

To take this a major step forward, we have already built an operator packed with all our Mattermost deployment expertise that you can use today. What could be better than having a Mattermost operator from the people who know Mattermost the best? It’s like having a member of our team manage your Mattermost installation for you.

The Mattermost operator tool is being developed in an ongoing cycle. The operator currently supports running Mattermost highly available, rolling upgrades, blue/green upgrades, database backups/migrations, and scaling based on user seats. 

Moving forward, we will be shipping new versions of our operator that reflect what we’re learning and the new processes we are developing internally. These will include new features, such as canary builds—which we’re working on right now—a multi-master database, auto-scaling, improved disaster recovery, and more.

And since the Mattermost operators are full-fledged applications that we control, we can add almost endless features and improvements to help customers. We’re focusing on ways to make it easier and simpler to do more in the Mattermost operator.

This is an exciting development that will help make Mattermost an even more important part of your organization, increasing efficiency while reducing IT overhead. It’s a continuous improvement cycle. As we grow and learn, you benefit when we ship new versions of the operator containing all of our new expertise and processes.

Get started with the Mattermost Kubernetes Operator

Are you ready to get started? Find instructions on how to install the Mattermost Kubernetes operator here, and learn how we’re using the operator to deploy our Community server in this demo.

Read more about:

Kubernetes
mm

Joram Wilander is a Lead Software Engineer at Mattermost who joined the team in 2014. Previously, he served in engineering roles at companies like BigPark, GREE, and Funzio. Joram graduated from the University of Waterloo, earning a bachelor of science degree in computer engineering.