Kubernetes notifications with BotKube

Please note that this post, first published over a year ago, may now be out of date.

With the increasing complexity of Kubernetes clusters, it is crucial to stay on top of the health, performance and security of your Kubernetes systems.

What is ChatOps?

In the evolving world of IT operations, ChatOps has emerged as an effective methodology. It seamlessly integrates operations tasks with popular collaboration platforms like Slack, Teams or Discord.
ChatOps blends everyday work and communication tools, enabling real-time monitoring and troubleshooting of system events without having to switch between different tools or platforms. This unified approach simplifies processes plus it enhances productivity, efficiency and teamwork in a modern tech-driven environment.

Imagine a situation where your team faces a system outage over the weekend. In order to resolve the issue quickly, you might require collaboration and coordinated troubleshooting between multiple team members.
ChatOps becomes a go-to tool in such circumstances. Implementing a ChatOps approach for your IT systems allows you to place this tool in the middle of the conversation, right away. Your team can collaborate effectively in real-time. Making cloud interactions visible enables seamless, constant pairing.

BotKube

BotKube overview

For me, BotKube stands out as one of the leading ChatOps tools, designed to enable collaborative monitoring and troubleshooting of your Kubernetes components straight from your preferred messaging platform.

As of today, BotKube supports integration with all major messaging platforms, such as Slack, Microsoft Teams, Discord and Mattermost. Additionally, it provides the flexibility to link with external apps through webhooks.

Benefits of BotKube

Behind the scenes, BotKube watches your Kubernetes cluster for events. This gives you a real-time monitoring experience that you can tailor to your preferred alerts and notifications. Unlike many other monitoring platforms that only support event information, BotKube is bi-directional. This allows you to trigger kubectl or Helm operations directly from within your chat platform. By default, that integration is read-only, though write operations can also be enabled. I will discuss the potential security risks associated with this feature further down in this blog article.

As I already mentioned, one of BotKube’s standout features is its interactive capability, which empowers you to monitor and debug directly from your messaging platform - even from your smartphone. BotKube also provides developers with self-service access to their Kubernetes resources without needing to run a command line shell and without having extensive knowledge of kubectl commands.

Here is a screenshot illustrating the integration of BotKube with Slack.

Screenshot of BotKube integration with Slack

In this example, I’ve executed a kubectl command to list all pods under the kube-system namespace of a minikube cluster.

Options for deploying BotKube with Slack

We’re avid Slack users at The Scale Factory which is why I’ll focus on how to deploy BotKube with that service. There are two options to integrate BotKube with Slack: The BotKube Socket Slack App and the BotKube Cloud Slack App.

The BotKube Cloud Slack App offers some additional features over its counterpart, most notably the Multi-cluster executor support, which allows operations across multiple clusters via a single Slack app. For SaaS businesses that manage workload on multiple Kubernetes clusters, this feature can be really handy. However, it’s worth noting that this version requires an account and a subscription to the BotKube Web App.

Because the BotKube Socket Slack App is free and still retains a significant portion of the features, I’ll focus on this method of deployment.

Before you can start using BotKube, a new Slack App needs to be created within your Slack workspace. This means that either you or a Slack Workspace administrator in your team will need to create one. Whilst creating a new Slack app you will have to define a Slack manifest file to add BotKube’s basic info, scope, settings and features. You can find an example of the manifest in Create Slack app BotKube documentation, which you can then modify to suit your needs. Once you have gone through the process of generating and retrieving the Slack Bot Token and App level token for BotKube app, you’re ready to deploy BotKube on your Kubernetes cluster.

Deploying BotKube on your cluster can be approached in several ways. You can manually deploy it using Kubernetes YAML manifests. Another option is to define it via a Helm chart. You can also define the manifest file with the IAC tool (Terraform).
I’d nearly always recommend an infrastructure as code approach. I strongly recommend deploying BotKube with Helm chart, and if you’re using Terraform I recommend using Terraform to declaratively specify that Helm deployment. That approach allows a seamless integration and simplifies management - especially if you are running multiple environments that mimic production.

Security Considerations

As your SaaS business grows, and you increase your use of Kubernetes, security can inevitably become a significant concern. By default, BotKube sets the execution of kubectl and helm commands to read-only.

However, you may want to run commands that modify objects in your cluster. This needs write access, which usually means setting up a (Cluster)Role and (Cluster)RoleBinding and then referencing that access from the plugin’s context configuration. It’s important to note that write access can only be enabled for private Slack channels.

Enabling create, update, or delete access should be taken with caution as careless handling could lead to unintended changes and potential disruption to workloads. If you’re using a GitOps approach, write access lets the team bypass that - which can lead to drift, and to problems down the road. If you opt to enable these commands, it’s advisable to do so in a private channel accessible only to individuals with sufficient Kubernetes knowledge and skills. One benefit from using Slack is that this kind of manual intervention automatically becomes visible to other people in that team.

You can further restrict write access, perhaps by permitting write permission only to specific ConfigMaps rather than any object. If you choose to enable write access in your production environment, and you’re worried about making those changes visible to colleagues, I recommend building a notifier that alerts to a public Slack channel whenever someone makes a production change using BotKube. This ensures the responsible usage of these commands and mitigates potential risks.

Summary

BotKube presents a robust solution for managing Kubernetes clusters within complex and dynamic environments. By bringing together the power of ChatOps and the versatility of Kubernetes ecosystems, BotKube simplifies collaboration, troubleshooting and real-time monitoring, allowing teams to respond proactively to Kubernetes events. Furthermore, the tool provides the convenience of interacting with your Kubernetes cluster directly from your messaging platform, as well as for your developers who might not have in-depth experience with Kubernetes.
The BotKube integration with Slack presents a compelling use case. Its support for other major messaging platforms, coupled with its flexible deployment options makes it adaptable for pretty much any SaaS business that runs containers at scale. With thoughtful security measures in place, BotKube ensures effective management of your Kubernetes cluster. As the Kubernetes ecosystem evolves, ChatOps tools like BotKube will continue to be invaluable in maintaining the health, performance and security of these complex systems.


Do you need expert advice on Kubernetes? We are a Kubernetes Certified Service Provider and have a wealth of experience with Kubernetes, EKS, and containers. Book a Kubernetes review today.


This blog is written exclusively by The Scale Factory team. We do not accept external contributions.

Free Healthcheck

Get an expert review of your AWS platform, focused on your business priorities.

Book Now

Discover how we can help you.


Consulting packages

Advice, engineering, and training, solving common SaaS problems at a fixed price.

Learn more >

Growth solutions

Complete AWS solutions, tailored to the unique needs of your SaaS business.

Learn more >

Support services

An ongoing relationship, providing access to our AWS expertise at any time.

Learn more >