Top Related Projects
Connect, secure, control, and observe services.
Cloud-native high-performance edge/middle/service proxy
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
The Cloud Native Application Proxy
🦍 The Cloud-Native API Gateway and AI Gateway.
eBPF-based Networking, Security, and Observability
Quick Overview
Linkerd is an open-source service mesh for Kubernetes that adds observability, security, and reliability features to applications without requiring code changes. It provides automatic mTLS, traffic splitting, retries, and detailed telemetry for microservices running on Kubernetes clusters.
Pros
- Easy to install and use with minimal configuration required
- Provides automatic mutual TLS (mTLS) encryption and identity-based security
- Offers powerful observability features, including real-time metrics and distributed tracing
- Lightweight and has minimal performance overhead compared to other service meshes
Cons
- Limited to Kubernetes environments, not suitable for non-Kubernetes deployments
- Requires additional resources and complexity in the cluster
- Learning curve for teams new to service mesh concepts
- May introduce latency in certain scenarios, although generally minimal
Getting Started
To install Linkerd on your Kubernetes cluster:
# Install the Linkerd CLI
curl -sL https://run.linkerd.io/install | sh
# Add Linkerd to your PATH
export PATH=$PATH:$HOME/.linkerd2/bin
# Check if your Kubernetes cluster is ready for Linkerd
linkerd check --pre
# Install Linkerd on your cluster
linkerd install | kubectl apply -f -
# Verify the installation
linkerd check
# (Optional) Install the Linkerd dashboard
linkerd viz install | kubectl apply -f -
After installation, you can inject Linkerd into your existing Kubernetes deployments:
kubectl get deploy -o yaml | linkerd inject - | kubectl apply -f -
This will add the Linkerd proxy as a sidecar to your pods, enabling the service mesh functionality.
Competitor Comparisons
Connect, secure, control, and observe services.
Pros of Istio
- More comprehensive feature set, including advanced traffic management and security capabilities
- Stronger integration with Kubernetes and cloud-native ecosystems
- Larger community and corporate backing, leading to faster development and support
Cons of Istio
- Higher complexity and steeper learning curve
- More resource-intensive, requiring additional infrastructure components
- Can introduce performance overhead due to its extensive feature set
Code Comparison
Istio (Envoy configuration):
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews-route
spec:
hosts:
- reviews.prod.svc.cluster.local
http:
- route:
- destination:
host: reviews.prod.svc.cluster.local
subset: v2
Linkerd (Traffic Split):
apiVersion: split.smi-spec.io/v1alpha1
kind: TrafficSplit
metadata:
name: reviews-split
spec:
service: reviews
backends:
- service: reviews-v1
weight: 500m
- service: reviews-v2
weight: 500m
Both Istio and Linkerd are popular service mesh solutions, but they differ in complexity and feature sets. Istio offers more advanced capabilities at the cost of increased complexity, while Linkerd focuses on simplicity and ease of use. The code examples demonstrate how traffic management is configured in each project, highlighting their different approaches to achieving similar goals.
Cloud-native high-performance edge/middle/service proxy
Pros of Envoy
- More flexible and configurable, supporting a wider range of protocols and use cases
- Better performance and lower latency in high-traffic scenarios
- Stronger community support and ecosystem, with many third-party extensions
Cons of Envoy
- Steeper learning curve and more complex configuration
- Requires more resources to run effectively
- Less opinionated, which can lead to more decision-making and potential misconfiguration
Code Comparison
Envoy configuration (YAML):
static_resources:
listeners:
- address:
socket_address:
address: 0.0.0.0
port_value: 8080
Linkerd configuration (YAML):
routers:
- protocol: http
servers:
- port: 8080
Both Envoy and Linkerd are popular service mesh and proxy solutions, but they have different strengths and use cases. Envoy is more flexible and performant, making it suitable for large-scale, complex deployments. Linkerd is simpler to set up and use, with a focus on Kubernetes environments.
Envoy's configuration is more verbose and detailed, allowing for fine-grained control over traffic management. Linkerd's configuration is more concise and opinionated, which can lead to faster setup times but less customization options.
Ultimately, the choice between Envoy and Linkerd depends on the specific requirements of your project, your team's expertise, and the complexity of your infrastructure.
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
Pros of Dapr
- More comprehensive microservices framework, offering a wider range of building blocks
- Language-agnostic with SDKs for multiple programming languages
- Designed for both Kubernetes and non-Kubernetes environments
Cons of Dapr
- Steeper learning curve due to its broader feature set
- Potentially more complex setup and configuration
- Less focused on service mesh capabilities compared to Linkerd
Code Comparison
Dapr (using Go SDK):
import "github.com/dapr/go-sdk/client"
client, err := dapr.NewClient()
if err != nil {
panic(err)
}
Linkerd (using linkerd-viz):
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
linkerd.io/inject: enabled
Summary
Dapr is a more comprehensive microservices framework, offering a wide range of building blocks for developing distributed applications. It supports multiple programming languages and can be used in both Kubernetes and non-Kubernetes environments. However, this breadth of features can lead to a steeper learning curve and more complex setup.
Linkerd, on the other hand, is primarily focused on being a lightweight service mesh for Kubernetes. It excels in providing observability, security, and reliability features for microservices communication. Linkerd is generally easier to set up and use, but it may not offer as many application-level features as Dapr.
The choice between the two depends on your specific needs: Dapr for a full-featured microservices framework, or Linkerd for a focused Kubernetes service mesh solution.
The Cloud Native Application Proxy
Pros of Traefik
- Easier to set up and configure, with automatic service discovery
- More versatile, supporting multiple protocols and backends
- Better suited for microservices architectures
Cons of Traefik
- Less focus on observability and telemetry compared to Linkerd
- May have higher resource consumption in some scenarios
- Lacks some advanced service mesh features present in Linkerd
Code Comparison
Traefik configuration example:
http:
routers:
my-router:
rule: "Host(`example.com`) && PathPrefix(`/api`)"
service: my-service
Linkerd configuration example:
apiVersion: linkerd.io/v1alpha2
kind: ServiceProfile
metadata:
name: my-service.default.svc.cluster.local
spec:
routes:
- name: GET /api
condition:
method: GET
pathRegex: /api
Both Traefik and Linkerd are popular open-source projects for managing network traffic in modern distributed systems. Traefik excels as a versatile and user-friendly reverse proxy and load balancer, while Linkerd focuses on providing a lightweight service mesh with strong observability features. The choice between them depends on specific use cases and requirements, with Traefik being more suitable for general-purpose traffic management and Linkerd offering advanced service mesh capabilities.
🦍 The Cloud-Native API Gateway and AI Gateway.
Pros of Kong
- More extensive plugin ecosystem with over 100 plugins available
- Supports multiple protocols beyond HTTP, including TCP, UDP, and gRPC
- Offers a user-friendly GUI for easier management and configuration
Cons of Kong
- Can be more resource-intensive, especially for smaller deployments
- Steeper learning curve due to its extensive feature set
- Configuration can be more complex compared to Linkerd's simpler approach
Code Comparison
Kong configuration example:
services:
- name: example-service
url: http://example.com
routes:
- paths:
- /api
Linkerd configuration example:
apiVersion: linkerd.io/v1alpha2
kind: ServiceProfile
metadata:
name: example-service
spec:
routes:
- name: GET /api
condition:
method: GET
pathRegex: /api
Both Kong and Linkerd are popular service mesh and API gateway solutions, but they have different strengths. Kong excels in its extensive plugin ecosystem and multi-protocol support, making it suitable for complex, large-scale deployments. Linkerd, on the other hand, focuses on simplicity and ease of use, with a lighter footprint and faster setup process. The choice between the two depends on specific project requirements, scalability needs, and the desired level of customization.
eBPF-based Networking, Security, and Observability
Pros of Cilium
- Provides advanced network security features with eBPF-based filtering
- Offers better performance and scalability for large clusters
- Supports multi-cluster networking and service mesh capabilities
Cons of Cilium
- Steeper learning curve due to complexity and eBPF concepts
- Requires newer kernel versions for full feature support
- Less mature ecosystem compared to Linkerd
Code Comparison
Cilium (Go):
func (d *Daemon) compileBase() error {
var args []string
prog := d.conf.BpfDir + "/bpf_lxc.c"
args = append(args, []string{
prog,
"-c",
"-O2",
}...)
// ...
}
Linkerd (Rust):
pub fn new(config: Config) -> Self {
let (tx, rx) = mpsc::channel(1);
let (ready_tx, ready_rx) = oneshot::channel();
let task = tokio::spawn(async move {
let mut inner = Inner::new(config, rx);
ready_tx.send(()).unwrap();
inner.run().await;
});
// ...
}
Both projects use different programming languages and approaches. Cilium focuses on low-level networking with eBPF, while Linkerd emphasizes simplicity and ease of use in its service mesh implementation.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
This repo is for the 1.x version of Linkerd. Feature development is now happening in the linkerd2 repo. This repo is currently only used for periodic maintenance releases of Linkerd 1.x.
Linkerd 1.x (pronounced "linker-DEE") acts as a transparent HTTP/gRPC/thrift/etc proxy, and can usually be dropped into existing applications with a minimum of configuration, regardless of what language they're written in. It works with many common protocols and service discovery backends, including scheduled environments like Nomad, Mesos and Kubernetes.
Linkerd is built on top of Netty and Finagle, a production-tested RPC framework used by high-traffic companies like Twitter, Pinterest, Tumblr, PagerDuty, and others.
Linkerd is hosted by the Cloud Native Computing Foundation (CNCF).
Want to try it?
We distribute binaries which you can download from the Linkerd releases page. We also publish Docker images for each release, which you can find on Docker Hub.
For instructions on how to configure and run Linkerd, see the 1.x user documentation on linkerd.io.
Working in this repo
BUILD.md includes general information on how to work in this repo. Additionally, there are documents on how to build several of the application subprojects:
- linkerd -- produces
linkerd
router artifacts - namerd -- produces
namerd
service discovery artifacts - grpc -- produces the
protoc-gen-io.buoyant.grpc
code generator
We :heart: pull requests! See CONTRIBUTING.md for info on contributing changes.
Related Repos
- linkerd2: The main repo for Linkerd 2.x and where current development is happening.
- linkerd-examples: A variety of configuration examples and explanations
- linkerd-tcp: A lightweight TCP/TLS load balancer that uses Namerd
- linkerd-viz: Zero-configuration service dashboard for Linkerd
- linkerd-zipkin: Zipkin tracing plugins
- namerctl: A commandline utility for controlling Namerd
Code of Conduct
This project is for everyone. We ask that our users and contributors take a few minutes to review our code of conduct.
License
Copyright 2018, Linkerd Authors. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Top Related Projects
Connect, secure, control, and observe services.
Cloud-native high-performance edge/middle/service proxy
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
The Cloud Native Application Proxy
🦍 The Cloud-Native API Gateway and AI Gateway.
eBPF-based Networking, Security, and Observability
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot