I came across this tweet that asked what are the top 3 tools every Kubernetes cluster should have…
I liked this question a lot, however I think there are more than 3 that every Kubernetes cluster should have. Here is what I think are the basic tools that every Kubernetes cluster should be running …
Top Tools to Run in Every Kubernetes Cluster
- cluster autoscaler
- metrics server
- nginx ingress controller
- Datadog Agent for monitoring, alerting, and log aggregation
Details About Each Tool
cert-manager is amazing! If you have it running in a k8s cluster, it will create/renew free TLS certs for any services that show up in the cluster.
Check out my other blog on how to get cert-manager setup.
external-dns automates the creation of DNS records for applications running in the k8s cluster. Its a must have!
cluster-autoscaler will add more nodes to the k8s cluster when all the current resources have been used by the existing workloads.
Run this service to expose the resource metrics API that allows the use of Horizontal Pod Autoscaler to scale up workloads based on CPU or memory usage.
If interested, check out this other blog I have on the topic.
If you need a great out-of-the-box load balancer, look no further than nginx. Its a fast, high quality way to get the job done.
For all my monitoring (infra and APM) I love Datadog. They also have a great log aggregation offering. While they may be a tad more expensive, their monitoring is top notch providing a single dashboards to view all monitoring and logs. Plus its super fast to setup and the administrative burden is very low. While Prometheus is a very popular choice for monitoring/altering, I prefer Datadog for its ease of use and robust functionality.
Deploying These Base Tools
Having an automated way to create and maintain infrastructure is essential. The default tool for infra as code is Terraform to spin up a k8s cluster. To get all the base tools running everyone basically uses Helm charts.