Convert Figma logo to code with AI

linkerd logolinkerd2

Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.

10,567
1,271
10,567
214

Top Related Projects

35,688

Connect, secure, control, and observe services.

24,693

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

23,812

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

50,061

The Cloud Native Application Proxy

19,712

eBPF-based Networking, Security, and Observability

38,788

🦍 The Cloud-Native API Gateway and AI Gateway.

Quick Overview

Linkerd is an open-source service mesh that provides a transparent way to add observability, security, and reliability to microservices. It is designed to be a lightweight, language-agnostic, and highly scalable solution for managing service-to-service communication in modern cloud-native applications.

Pros

  • Observability: Linkerd provides detailed metrics, tracing, and logging for all service-to-service communication, enabling developers to quickly identify and resolve issues.
  • Security: Linkerd automatically encrypts all traffic between services and can enforce mutual TLS authentication, ensuring secure communication.
  • Reliability: Linkerd's load balancing, retries, and circuit breaking features help improve the overall reliability and resilience of the application.
  • Ease of Use: Linkerd is designed to be easy to install and configure, with a simple command-line interface and a well-documented deployment process.

Cons

  • Complexity: While Linkerd aims to be lightweight, the overall complexity of a service mesh architecture can be a challenge for some teams, especially those new to the concept.
  • Performance Overhead: The additional layer of abstraction introduced by Linkerd can result in a small performance overhead, which may be a concern for latency-sensitive applications.
  • Vendor Lock-in: By choosing Linkerd, teams may become dependent on the project and its ecosystem, which could lead to vendor lock-in concerns.
  • Limited Language Support: Linkerd primarily focuses on supporting popular languages and frameworks, but may have limited support for less common or niche technologies.

Getting Started

To get started with Linkerd, follow these steps:

  1. Install the Linkerd CLI:
curl -sL https://run.linkerd.io/install | sh
  1. Verify the installation:
linkerd version
  1. Install Linkerd into your Kubernetes cluster:
linkerd install | kubectl apply -f -
  1. Verify the installation:
linkerd check
  1. Inject the Linkerd proxy into your application:
kubectl get deploy -n default -o yaml | linkerd inject - | kubectl apply -f -
  1. Explore the Linkerd dashboard:
linkerd dashboard

For more detailed instructions and advanced configuration options, please refer to the Linkerd documentation.

Competitor Comparisons

35,688

Connect, secure, control, and observe services.

Pros of Istio

  • Istio provides a more comprehensive set of features, including traffic management, security, and observability, making it a more robust and feature-rich solution.
  • Istio has a larger community and ecosystem, with more contributors and a wider range of integrations and plugins.
  • Istio is more actively developed and maintained, with more frequent updates and bug fixes.

Cons of Istio

  • Istio has a higher complexity and learning curve, which can make it more challenging to set up and configure, especially for smaller projects.
  • Istio has a higher resource footprint, requiring more CPU and memory resources to run, which can be a concern for resource-constrained environments.
  • Istio's performance can be slower than Linkerd's, especially for simple use cases, due to its more comprehensive feature set.

Code Comparison

Linkerd:

apiVersion: linkerd.io/v1alpha2
kind: ServiceProfile
metadata:
  name: web
spec:
  routes:
  - condition:
      method: GET
      pathRegex: /api/.*
    name: api
  - condition:
      method: GET
      pathRegex: /static/.*
    name: static

Istio:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: web
spec:
  hosts:
  - web
  http:
  - match:
    - uri:
        regex: /api/.*
    route:
    - destination:
        host: api
  - match:
    - uri:
        regex: /static/.*
    route:
    - destination:
        host: static
24,693

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

Pros of Envoy

  • Envoy is a more mature and widely-adopted project, with a larger community and more contributors.
  • Envoy has a broader set of features and capabilities, including support for a wide range of protocols and load balancing algorithms.
  • Envoy is designed to be highly scalable and performant, making it a good choice for large-scale, high-traffic applications.

Cons of Envoy

  • Envoy has a steeper learning curve compared to Linkerd, as it is a more complex and feature-rich project.
  • Envoy may have a higher resource footprint than Linkerd, as it is a more heavyweight solution.

Code Comparison

Linkerd:

impl Proxy {
    pub fn new(config: Config) -> Self {
        Proxy {
            config,
            runtime: Runtime::new(),
            metrics: Metrics::new(),
            tracing: Tracing::new(),
            // ...
        }
    }

    pub fn run(&mut self) {
        self.runtime.block_on(async {
            self.tracing.init();
            self.metrics.init();
            // ...
        });
    }
}

Envoy:

class Envoy : Logger::Loggable<Logger::Id::main> {
public:
  Envoy(OptionsImpl& options, Event::TimeSystem& time_system,
        Thread::BasicLockProvider& lock_provider, Stats::Store& stats_store,
        Filesystem::Instance& file_system, Api::Api& api,
        Server::ComponentFactory& component_factory,
        std::unique_ptr<Server::HotRestartInterface> restarter)
      : options_(options),
        time_system_(time_system),
        lock_provider_(lock_provider),
        stats_store_(stats_store),
        file_system_(file_system),
        api_(api),
        component_factory_(component_factory),
        restarter_(std::move(restarter)) {}

  // ...
};
23,812

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

Pros of Dapr

  • Dapr provides a wide range of built-in components for common tasks like state management, pub/sub, and more, making it easier to build distributed applications.
  • Dapr supports multiple programming languages, allowing developers to use their preferred language for different services.
  • Dapr's service invocation and binding capabilities simplify the integration of services, reducing the complexity of distributed systems.

Cons of Dapr

  • Dapr's complexity and additional layer of abstraction may introduce overhead and performance concerns in some use cases.
  • The Dapr ecosystem is relatively newer compared to Linkerd, which may have a more mature and established community.
  • Dapr's learning curve may be steeper for developers who are not familiar with the concept of a service mesh or sidecar architecture.

Code Comparison

Linkerd2 (Proxy Configuration):

apiVersion: linkerd.io/v1beta1
kind: Proxy
metadata:
  name: default
spec:
  proxyImage:
    imageName: ghcr.io/linkerd/proxy
    version: stable-2.12.1
  proxyInitImage:
    imageName: ghcr.io/linkerd/proxy-init
    version: v2.1.0

Dapr (Component Configuration):

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
spec:
  type: state.redis
  version: v1
  metadata:
  - name: redisHost
    value: localhost:6379
  - name: redisPassword
    value: ""
50,061

The Cloud Native Application Proxy

Pros of Traefik

  • Traefik is a modern, fast, and easy-to-use reverse proxy and load balancer that simplifies the deployment and management of microservices.
  • It provides automatic configuration and discovery of services, making it easy to integrate with various cloud providers and container orchestration platforms.
  • Traefik offers a user-friendly web UI for monitoring and managing the proxy.

Cons of Traefik

  • Traefik may have a steeper learning curve compared to Linkerd, especially for users new to reverse proxies and load balancers.
  • The configuration of Traefik can be more complex, as it requires understanding various concepts like routers, middlewares, and services.

Code Comparison

Linkerd2 (Proxy Initialization):

let proxy = Proxy::new(
    config.proxy.clone(),
    config.identity.clone(),
    config.tap.clone(),
    config.dst_client.clone(),
    config.metrics.clone(),
    config.tracing.clone(),
    config.drain.clone(),
    config.admin.clone(),
    config.outbound.clone(),
    config.inbound.clone(),
    config.dns_resolver.clone(),
    config.event_buffer_capacity,
    config.event_buffer_max_age,
);

Traefik (Entrypoint Configuration):

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"
    http:
      tls:
        certResolver: myresolver
19,712

eBPF-based Networking, Security, and Observability

Pros of Cilium

  • Cilium provides a more comprehensive solution for network and security policies, with support for advanced features like network load balancing and service mesh integration.
  • Cilium has a strong focus on performance and scalability, making it a suitable choice for large-scale deployments.
  • Cilium's integration with Kubernetes and other container orchestration platforms is more seamless, providing a more unified management experience.

Cons of Cilium

  • Cilium has a steeper learning curve compared to Linkerd, requiring more configuration and setup to get started.
  • Cilium's documentation, while comprehensive, may not be as beginner-friendly as Linkerd's.
  • Cilium's resource requirements may be higher than Linkerd's, especially for smaller deployments.

Code Comparison

Linkerd (Proxy Configuration):

proxy:
  image:
    name: ghcr.io/linkerd/proxy
    version: stable-2.12.1
  resources:
    cpu:
      request: 100m
      limit: 1
    memory:
      request: 20Mi
      limit: 250Mi

Cilium (Daemon Set Configuration):

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: cilium
spec:
  template:
    spec:
      containers:
      - name: cilium
        image: quay.io/cilium/cilium:v1.12.2
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 1
            memory: 1Gi
38,788

🦍 The Cloud-Native API Gateway and AI Gateway.

Pros of Kong

  • Kong provides a more comprehensive API management solution, including features like authentication, rate limiting, and transformations.
  • Kong has a larger and more active community, with more third-party plugins and integrations available.
  • Kong offers commercial support and enterprise-grade features, making it a more suitable choice for larger organizations.

Cons of Kong

  • Kong has a steeper learning curve and requires more configuration compared to Linkerd.
  • Kong's performance may be slightly lower than Linkerd's, as it has more features and functionality.
  • Kong's open-source version has a more limited feature set compared to its commercial offerings.

Code Comparison

Here's a brief code comparison between Linkerd and Kong:

Linkerd (Proxy Configuration):

apiVersion: linkerd.io/v1alpha2
kind: Proxy
metadata:
  name: default
spec:
  proxyImage:
    imageName: gcr.io/linkerd-io/proxy
    version: stable-2.12.1
  proxyInitImage:
    imageName: gcr.io/linkerd-io/proxy-init
    version: v2.1.0

Kong (Proxy Configuration):

apiVersion: kong.x-k8s.net/v1
kind: KongClusterPlugin
metadata:
  name: rate-limiting
config:
  minute: 20
  hour: 500
  policy: local
  redis_host: redis.default.svc.cluster.local
  redis_port: 6379
  redis_password: ""
  redis_database: 0

The Linkerd configuration sets up the proxy image and version, while the Kong configuration sets up a rate-limiting plugin with various parameters.

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

Linkerd

CII Best Practices GitHub Actions Status GitHub license Go Report Card Go Reference Slack Status

:balloon: Welcome to Linkerd! :wave:

Linkerd is an ultralight, security-first service mesh for Kubernetes. Linkerd adds critical security, observability, and reliability features to your Kubernetes stack with no code change required.

Linkerd is a Cloud Native Computing Foundation (CNCF) project.

Repo layout

This is the primary repo for the Linkerd 2.x line of development.

The complete list of Linkerd repos is:

Quickstart and documentation

You can run Linkerd on any modern Kubernetes cluster in a matter of seconds. See the Linkerd Getting Started Guide for how.

For more comprehensive documentation, start with the Linkerd docs. (The doc source code is available in the website repo.)

Working in this repo

BUILD.md includes general information on how to work in this repo.

We :heart: pull requests! See CONTRIBUTING.md for info on contributing changes.

Get involved

Steering Committee meetings

We host regular online meetings for the Linkerd Steering Committee. All are welcome to attend, but audio and video participation is limited to Steering Committee members and maintainers. These meetings are currently scheduled on an ad-hoc basis and announced on the linkerd-users mailing list.

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.

Security

See SECURITY.md for our security policy, including how to report vulnerabilities.

Linkerd undergoes periodic third-party security audits and we publish the results here.

License

Copyright 2023 the 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.