Convert Figma logo to code with AI

linkerd logolinkerd

Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x.

5,331
503
5,331
147

Top Related Projects

35,857

Connect, secure, control, and observe services.

24,693

Cloud-native high-performance edge/middle/service proxy

23,940

Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.

50,858

The Cloud Native Application Proxy

39,056

🦍 The Cloud-Native API Gateway and AI Gateway.

20,022

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

35,857

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.

24,693

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.

23,940

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.

50,858

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.

39,056

🦍 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.

20,022

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

linkerd

GitHub license Circle CI Slack Status Docker Pulls CII Best Practices

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.