Design Principles

    Since Linkerd is built for operators, this also means that Linkerd has do allthat while also imposing the absolute minimum operational complexity. To dothis, we've designed Linkerd with three core principles in mind:

    The first principle is the most important: keep it simple. Simplicity doesn'tmean that Linkerd can't have powerful features, or that it has to haveone-click wizards take care of everything for you. In fact, it means theopposite: every aspect of Linkerd's behavior should be explicit, clear,well-defined, bounded, understandable, and introspectable. For example,Linkerd's is splitinto several operational components based on their functional boundaries(“web”, “api”, etc.) These components aren't just exposed directly to you inthe Linkerd dashboard and CLI, they run on the same data plane as yourapplication does, allowing you to use the same tooling to inspect theirbehavior.

    Finally, just work means that adding Linkerd to a functioning Kubernetesapplication shouldn't break anything, and shouldn't even require configuration.(Of course, configuration will be necessary to customize Linkerd'sbehavior–but it shouldn't be necessary simply to get things working.) To dothis, we've invested heavily in things like automatic L7 protocoldetection, and .

    Together, these three principles give us a framework for weighing product andengineering tradeoffs in Linkerd. We hope they're also useful for understandingwhy Linkerd works the way it does.