Andrea Casarin

Andrea Casarin

Published on: 3/28/2024, 12:45:23 PM - Reading time: 2 minutes

Caddy: an Nginx - Traefik - HAProxy alternative

Are you tired of adding tools to your Kubernetes clusters? Do you want a more integrated and straightforward approach to ingress control? Look no further than Caddy, an Nginx, Traefik, and HAProxy alternative. In this article, we'll explore how Caddy could simplify your Kubernetes management tasks while providing advanced features like caching and automatic HTTPS.

As someone who is using Nginx as ingress for K8S with cert manager to manage HTTPS, I understand the struggle of managing multiple tools for cluster routing. Following the principle of "https-anywhere," we need an ingress controller that can handle both Kubernetes service access types and automatic HTTPS. I tried Traefik thinking it was the solution, until i discovered it has no cache support on the community version and rolled back to Nginx. Then I stumbled upon Caddy thanks to Paul Butler – The hater’s guide to Kubernetes. This led me on a journey to discover Caddy, a lightweight and modern ingress controller that offers the features we need without the bloat of other solutions.

Simple, easy, fast, fun

Caddy is incredibly easy to use and set up, thanks to its simple and intuitive configuration file format. You can easily create and manage ingress rules, and Caddy provides a fun and interactive way to monitor your cluster's traffic flow. With Caddy, you don't need extensive knowledge of networking protocols or Kubernetes configurations; it takes only minutes to set up and start enjoying the benefits of this solution.

Full-fledged: cache, Acme client

One area where Caddy outshines other ingress controllers is its built-in caching mechanism. This feature allows you to offload some of the traffic load from your Kubernetes services to Caddy's cache, ensuring a smoother and faster experience for your users. Additionally, Caddy integrates with the popular Acme client, enabling automated SSL/TLS certificates management for your services. With these features, you can simplify your cert management tasks and avoid the headaches of dealing with multiple tools for this critical aspect of ingress control.

Modern and well-documented

Caddy is modern in every sense of the word: its syntax, configuration file format, and overall design are all tailored to provide an enjoyable development experience. The official documentation is also top-notch, featuring a comprehensive guide on how to get started with Caddy as well as detailed descriptions of all available configurations options. By following their guidelines, even less tech-savvy users can set up and manage Caddy efficiently and effectively.

Closing/Reference

While I'm not using Caddy yet for my existing projects, I plan to give it a try for new endeavors. By leveraging its simple configuration syntax, built-in caching capabilities, and Acme support, we can significantly simplify our Kubernetes management tasks and enhance user experience. Follow me on Twitter for future updates and feel free to drop your email for any further inquiries!

Resources: