Antithesis launches Kubernetes support
As you might know, Antithesis is a platform for testing distributed systems. We find and perfectly reproduce the bugs no human tester can find in complex distributed systems (because you can’t write enough tests in a human lifetime). You describe what correct (or incorrect) behavior is, and we run a massively parallel simulation of your system and inject the faults it would experience in a real production environment. The result is that we find the bugs you can’t otherwise uncover, before they hit prod and cause downtime or thorny correctness issues. You know, like the devilish concurrency things that require you to think in terms of nanosecond timing.
So it always surprised people when we told them that they had to use Docker Compose for orchestration in Antithesis. There’s nothing wrong with Docker Compose – it’s ergonomic, simple, and perfect for developers building complex applications quickly. But there was always a gigantic, helm-shaped gap in that story – so many distributed systems run on Kubernetes.
For the last few months, Kubernetes support has been our worst-kept secret – it’s right there, in our docs! We’ve been working with a group of customers who orchestrate with Kubernetes in production, and they’re now hunting down bugs in simulated single-node k3s clusters, using the same Helm charts they use to orchestrate their software in production. What does this look like?
We run your system using raw Kubernetes manifests, so you can bring your existing manifests. Use kustomize or helm template to render raw manifests ready to be deployed in our environment:
$ helm repo add my-repo https://charts.example.com/
$ helm repo update
$ helm template my-release my-repo/my-chart \
--set image.tag=v2.0 \
-f values-prod.yaml -f secrets.yaml \
--output-dir manifests/You then package your manifests in a folder in a single container image:
.
├── manifests/ # Must be at the root of the config image
│ ├── deployment.yaml # Valid Kubernetes manifests
│ ├── service.yaml # Each file may contain one or more resources
│ └── ingress.yaml
└── some_other_file # Any additional files needed for setupYou upload that image to our registry along with your containerized software and external dependencies. We then run your software in a simulated single-node cluster (we use k3s because it’s lightweight and a fully conformant Kubernetes distro).
From there, you get all the benefits of Antithesis testing – aggressive fault injection, massive parallelization, intelligent exploration, and a property-based approach that lets you develop with confidence instead of worrying about rewriting tests for every code change.
If you’re just hearing about us, but like what you’re hearing – resilient tests that actually, thoroughly test complex distributed systems, here are a couple of short pieces that tell you more about what we do and how we do it.
Or maybe you’d like to just see this in action! We’re excited to work with Kubernetes users everywhere.