Cabourotte new features and Kubernetes integration
I released recently Cabourotte Cabourotte v0.16.0, I added several features since my previous article (which is I think an interesting read about my motivations behind the project) which I will explain in this article, as well as the roadmap for next year.
Service Discovery and Kubernetes
It’s something I wanted to add since the beginning of the project. Cabourotte finally supports Kubernetes service discovery.
Cabourotte can automatically detect pods and services running inside a Kubernetes cluster and start executing healthchecks on them based on annotations on the resources.
apiVersion: v1
kind: Pod
metadata:
name: test-http-check
annotations:
cabourotte.mcorbin.fr/healthcheck-type: "http"
cabourotte.mcorbin.fr/healthcheck-configuration: |
name: "foo"
description: "bar"
interval: "5s"
timeout: "3s"
port: 443
protocol: "https"
valid-status: [200]
This pod definition will for example configure a healthcheck of type "http" on the pod IP. Kubernetes services can be monitored using the same annotations and an extra one to control whether you want to configure the service IP or the service internal domain as the healthcheck target.
All healthchecks types (tcp, dns, http, tls, commands) can be configured using annotations.
You can also use a Kubernetes Custom Resource in order to configure healthchecks in Cabourotte.
apiVersion: cabourotte.mcorbin.fr/v1
kind: Healthcheck
metadata:
name: healthcheck-sample
namespace: default
labels:
foo: "bar"
spec:
dns-checks:
- name: "mcorbin-dns-check"
description: "dns healthcheck example"
domain: "mcorbin.fr"
interval: "5s"
labels:
environment: prod
This resource will configure Cabourotte with an healthcheck of type dns
on mcorbin.fr
.
You can check the documentation to get more information about how to integrate Cabourotte with Kubernetes.
The nice thing is that you can run Cabourotte as a Deployment, Daemonset, with one or several replicas… depending on your needs and make them all listen and execute healthchecks (which can be the same or different ones based on labels for example).
New frontend
I’m a terrible frontend developer but I still managed to improve a bit the page displaying healthchecks results:
You can help me improving this page by modifying this file :)
Internal refactoring
I did some internal refactoring which make the codebase more maintainable on the long term.
What’s next
I plan to add a generic service discovery mechanism based on HTTP, where Cabourotte will pull regularly an HTTP endpoint supposed to return a JSON payload containing healthchecks configurations.
I will also (finally) work on a CLI. The CLI should allow users to interact with the Cabourotte API, including executing one-off healthchecks on multiple instances and aggregate the results.
Don’t hesitate to send me feedback about the tool.
Add a comment
If you have a bug/issue with the commenting system, please send me an email (my email is in the "About" section).