Architecture
Concepts
Introduction
Kardinal is a traffic routing and state isolation layer for Kubernetes that enables engineers to efficiently do development, test, and QA work within a single stable Kubernetes cluster.
Previously, developers would spin up separate Kubernetes clusters where every resource is duplicated for development, test, and QA workflows. With Kardinal, developers deploy only the absolute minimum resources necessary to validate changes within a single, prod-like cluster.
Kardinal achieves this by rethinking the idea of isolated application deploys, and replacing them with logical environments with a single cluster, called flows. Every resource that can be shared between flows is shared at fine-grained level. This includes stateless microservices and any stateful dependencies like test databases, caches, and queues.
There are a few techniques outside of Kardinal for isolating dev, test, and QA environments. To see how Kardinal fits in to other options, see the table below:
| Isolation method | Level of Isolation | Cost | # of Duplicated Resources |
|---|---|---|---|
| Separate VPCs | Most coarse-grained | Highest Cost | Highest |
| Separate Kubernetes Clusters | Coarse-grained | High Cost | High |
| Separate Namespaces (vclusters) | Fine-grained | Low Cost | Low |
| Separate Traffic Routes (Kardinal) | Most fine-grained | Lowest Cost | Lowest |