Convert Figma logo to code with AI

telepresenceio logotelepresence

Local development against a remote Kubernetes or OpenShift cluster

7,295
579
7,295
27

Top Related Projects

open source Kubernetes-native API gateway for microservices built on the Envoy Proxy

38,275

Connect, secure, control, and observe services.

11,487

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

63,965

The Cloud Native Application Proxy

28,877

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

31,955

Run Kubernetes locally

Quick Overview

Telepresence is an open-source tool for local development of Kubernetes microservices. It allows developers to run a single service locally while connecting to a remote Kubernetes cluster, enabling faster development cycles and easier debugging of distributed applications.

Pros

  • Seamless local development experience with remote Kubernetes clusters
  • Faster development cycles by avoiding constant container rebuilds and deploys
  • Easy debugging of microservices in complex distributed environments
  • Supports various programming languages and frameworks

Cons

  • Initial setup can be complex for some environments
  • May introduce additional network latency in certain scenarios
  • Requires careful configuration to ensure security in production environments
  • Limited support for some advanced Kubernetes features

Getting Started

  1. Install Telepresence:
# macOS
brew install datawire/blackbird/telepresence

# Linux
curl -s https://packagecloud.io/install/repositories/datawire/telepresence/script.deb.sh | sudo bash
sudo apt install telepresence
  1. Connect to your Kubernetes cluster:
telepresence connect
  1. Intercept a service:
telepresence intercept <service-name> --port <local-port>:<remote-port>
  1. Run your local service and start developing!

Competitor Comparisons

open source Kubernetes-native API gateway for microservices built on the Envoy Proxy

Pros of Emissary

  • Designed as a full-featured API Gateway and Ingress Controller
  • Offers advanced traffic management and routing capabilities
  • Provides built-in support for authentication and rate limiting

Cons of Emissary

  • Steeper learning curve due to more complex configuration options
  • May be overkill for simple development environments
  • Requires more resources to run compared to Telepresence

Code Comparison

Emissary configuration example:

---
apiVersion: getambassador.io/v3alpha1
kind: Mapping
metadata:
  name: example-mapping
spec:
  prefix: /example/
  service: example-service

Telepresence configuration example:

intercepts:
- name: example
  service: example-service
  port: 8080

Emissary focuses on defining API routes and services, while Telepresence emphasizes local development and service interception. Emissary's configuration is more detailed, reflecting its broader feature set as an API Gateway. Telepresence's configuration is simpler, tailored for development workflows and service proxying.

While both tools serve Kubernetes environments, they address different needs. Emissary is better suited for production-grade API management, whereas Telepresence excels in streamlining local development and testing against remote clusters.

38,275

Connect, secure, control, and observe services.

Pros of Istio

  • Comprehensive service mesh solution with advanced traffic management, security, and observability features
  • Supports multi-cluster and multi-cloud deployments
  • Provides robust load balancing, circuit breaking, and fault injection capabilities

Cons of Istio

  • Steeper learning curve and more complex setup compared to Telepresence
  • Higher resource overhead due to its extensive feature set
  • May introduce additional latency in certain scenarios

Code Comparison

Istio (configuring a virtual service):

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-service
spec:
  hosts:
  - my-service
  http:
  - route:
    - destination:
        host: my-service
        subset: v1

Telepresence (intercepting traffic):

telepresence intercept my-service --port 8080:80

Istio provides a more declarative approach to traffic management, while Telepresence offers a simpler command-line interface for local development and debugging. Istio's configuration is more verbose but offers greater flexibility, whereas Telepresence focuses on ease of use for developers working on microservices locally.

Both tools serve different purposes: Istio is a full-fledged service mesh for production environments, while Telepresence is primarily designed for local development and testing of microservices in Kubernetes clusters.

11,487

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

Pros of Linkerd2

  • Provides a full-featured service mesh with advanced traffic management and observability
  • Offers automatic mTLS encryption and strong security features out-of-the-box
  • Lightweight and has minimal performance overhead compared to other service meshes

Cons of Linkerd2

  • Requires cluster-wide installation and modifications, which can be complex
  • May introduce additional latency for inter-service communication
  • Limited to Kubernetes environments, not suitable for local development

Code Comparison

Linkerd2 (installing the service mesh):

linkerd install | kubectl apply -f -
linkerd inject deployment.yaml | kubectl apply -f -

Telepresence (local development setup):

telepresence connect
telepresence intercept my-service --port 8080:80

While both projects aim to improve Kubernetes development and operations, they serve different purposes. Linkerd2 is a comprehensive service mesh for production environments, while Telepresence focuses on local development and debugging of Kubernetes applications.

63,965

The Cloud Native Application Proxy

Pros of Traefik

  • Designed as a full-featured reverse proxy and load balancer
  • Supports automatic HTTPS with Let's Encrypt integration
  • Offers dynamic configuration and service discovery

Cons of Traefik

  • Steeper learning curve for complex configurations
  • May be overkill for simple development environments
  • Requires more resources to run compared to Telepresence

Code Comparison

Traefik configuration (YAML):

http:
  routers:
    my-router:
      rule: "Host(`example.com`)"
      service: my-service
  services:
    my-service:
      loadBalancer:
        servers:
          - url: "http://localhost:8080"

Telepresence configuration (CLI):

telepresence connect
telepresence intercept my-service --port 8080:80

While Traefik is a powerful reverse proxy and load balancer, Telepresence focuses on local development and testing of Kubernetes services. Traefik excels in production environments, offering advanced routing and load balancing features. Telepresence, on the other hand, simplifies the development workflow by allowing developers to run services locally while connected to a remote Kubernetes cluster.

28,877

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

Pros of Envoy

  • More versatile and can be used as a general-purpose proxy for various protocols
  • Highly performant and scalable, suitable for large-scale deployments
  • Extensive feature set for traffic management, observability, and security

Cons of Envoy

  • Steeper learning curve due to its complexity and wide range of features
  • Requires more configuration and setup compared to Telepresence
  • May be overkill for simple development scenarios

Code Comparison

Telepresence configuration example:

intercepts:
- name: example
  service: example-svc
  port: 8080

Envoy configuration example:

static_resources:
  listeners:
  - address:
      socket_address:
        address: 0.0.0.0
        port_value: 8080

While Telepresence focuses on local development and testing, Envoy is a full-featured proxy designed for production environments. Telepresence offers a simpler setup for developers working on microservices, whereas Envoy provides more advanced networking capabilities but requires more extensive configuration.

31,955

Run Kubernetes locally

Pros of Minikube

  • Provides a full-fledged local Kubernetes environment
  • Supports multiple hypervisors and container runtimes
  • Offers a more realistic Kubernetes experience for testing and development

Cons of Minikube

  • Requires more system resources compared to Telepresence
  • Setup and configuration can be more complex
  • May not be as suitable for rapid development cycles

Code Comparison

Minikube startup:

minikube start --driver=docker
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
kubectl expose deployment hello-minikube --type=NodePort --port=8080

Telepresence usage:

telepresence connect
telepresence intercept hello-world --port 8080:http

Key Differences

  • Minikube creates a full local Kubernetes cluster, while Telepresence connects to an existing cluster
  • Telepresence focuses on local development and debugging, whereas Minikube is more suited for testing and simulating production environments
  • Minikube requires more setup and resources, but provides a more comprehensive Kubernetes experience
  • Telepresence offers faster development cycles and easier integration with local development environments

Both tools serve different purposes in the Kubernetes ecosystem, with Minikube being more suitable for full cluster simulation and Telepresence excelling in rapid development and debugging scenarios.

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

Telepresence: Fast, Local Development for Kubernetes

Artifact Hub Gurubase

Telepresence is a CNCF project that connects your workstation to a Kubernetes cluster. Code and debug a service locally — with your own IDE, debugger, and hot reload — while it receives real traffic from the cluster, without the container build/push/deploy cycle.

Demo: connect, reach a cluster service, intercept it locally

Key Features

  • Cluster access - Your workstation reaches cluster Services and Pods as if it were inside the cluster: cluster DNS, cluster IPs, no port-forwards.
  • Four attachment modes - Replace the remote container, intercept a service port, wiretap a copy of the traffic, or ingest just the environment and volumes.
  • Traffic filtering - Intercept only your own requests, selected by HTTP header or path, so a whole team can share one cluster without collisions.
  • Sidecar or node-agent - The traffic-agent is either injected as a sidecar (the default), or runs as a node-hosted pod that attaches to workloads without modifying them: no injection, no pod restarts.
  • Remote environment, local process - Run with the remote container's environment variables and volume mounts, so the code behaves like it does in the cluster.

Getting Started

How It Works

When Telepresence connects, it creates a virtual network interface on your workstation and routes cluster traffic through a traffic-manager deployed in the cluster. Attaching to a workload adds a traffic-agent — a sidecar or a node-agent — that hands the workload's traffic, environment, and volumes over to your machine. See the architecture overview for the full picture.

Community

Sponsors

Thank you to the sponsors who support the development of Telepresence:

You can support the project too, via GitHub Sponsors.

Contributing

See AGENTS.md for build instructions, architecture overview, and development guidelines.

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation. The Windows release binaries and installers are Authenticode-signed with it.

License

Telepresence is licensed under the Apache License 2.0.