Demo showing how Telepresence lets your local machine act like it’s inside a Kubernetes cluster to debug and interact with example services (products, inventory, auth) without port forwarding
This demo walks through a small example application and shows how Telepresence lets your local machine behave as if it is running inside a Kubernetes cluster. That makes debugging cluster-internal services — using your local editor, debugger, or network tools — fast and convenient without port-forwarding or building special images.Overview
Three application services:
auth service
product service (entry point)
inventory service
Flow: client → products → inventory (products aggregates inventory data and returns it). The auth service runs independently.
k8s/ — Kubernetes manifests for Deployments and Services
Service responsibilities
Service
Role
Notes
products-service
Entry point for user requests
Aggregates product data and calls inventory-service for stock counts
inventory-service
Provides inventory counts
Cluster-internal
auth-service
Authentication mock
Independent service used in examples
Below are the key manifest excerpts and the sequence of steps used in the demo.Deployment and Service manifestsInventory Deployment + Service (example)
Verify cluster nodesEnsure your kubeconfig context is correct and list nodes:
kubectl get nodes
Example cluster output:
NAME STATUS ROLES AGE VERSIONip-192-168-24-32.ec2.internal Ready <none> 47h v1.30.4-eks-a737599ip-192-168-43-108.ec2.internal Ready <none> 47h v1.30.4-eks-a737599
Install the Telepresence client on your local machineTelepresence provides platform-detecting installers. The example below shows the PowerShell steps for Windows (run PowerShell as Administrator):
Run installer steps as an Administrator. The script will install components and adjust network routes on your machine.
PowerShell installer steps:
# 1. Download the latest windows zip containing telepresence.exe and its dependencies (~50 MB)Invoke-WebRequest https://app.getambassador.io/download/tel2oss/releases/download/v2.20.0/telepresence-windows-amd64.zip -OutFile telepresence.zip# 2. Unzip; then remove the zip fileExpand-Archive -Path telepresence.zip -DestinationPath telepresenceInstaller/telepresenceRemove-Item 'telepresence.zip'cd telepresenceInstaller/telepresence# 3. Run the installer script to install telepresence and its dependencies.# By default it installs to C:\telepresence (customizable via -Path).powershell.exe -ExecutionPolicy bypass -c ". '.\install-telepresence.ps1';"# 4. Cleanup unzipped installer filescd ../..Remove-Item telepresenceInstaller -Recurse -Confirm:$false -Force# 5. Telepresence is now installed and you can use telepresence commands in PowerShell.
Verify Telepresence is available:
telepresence --help
Install the Traffic Manager into your clusterTelepresence requires a cluster-side component called the Traffic Manager. The Telepresence client includes Helm and can install the Traffic Manager for you:Install with default values:
telepresence helm install
Install with custom values:
telepresence helm install --values values.yaml
The Traffic Manager is installed into its own namespace (commonly ambassador). Check the namespace and pods after installation:
kubectl get namespace
kubectl get pods -n ambassador
Connect Telepresence to your clusterTelepresence uses the active kubeconfig context. Connect:
telepresence connect
Example successful connection output:
Connected to context arn:aws:eks:us-east-1:195275640053:cluster/telepresence, namespace default (https://C22C5458C5800FD626C361045762447E.gr7.us-east-1.eks.amazonaws.com)
Check Telepresence status
telepresence status
Trimmed example status:
OSS User Daemon: Running Version : 2.20.0 Executable : /usr/local/bin/telepresence Status : Connected Kubernetes server : https://C22C5458C5800FD626C361045762447E.gr7.us-east-1.eks.amazonaws.com Kubernetes context: arn:aws:eks:us-east-1:195275640053:cluster/telepresence Namespace : default Manager namespace : ambassador Intercepts : 0 totalOSS Root Daemon: Running Version : v2.20.0 Remote IP : 127.0.0.1 Timeout : 8s Subnets : (2 subnets) - 10.100.0.0/16 - 192.168.0.0/18OSS Traffic Manager: Connected Version : v2.20.0 Traffic Agent : ghcr.io/telepresenceio/tel2:2.20.0
What Telepresence configures on your machineWhen connected, Telepresence creates routes for the cluster pod and service CIDRs so local processes can reach cluster IPs and service DNS names directly. Verify these routes with:
ip route
You should see routes pointing cluster subnets to the Telepresence tunnel interface (often tel0 on Linux — interface names vary by OS).List services in the cluster
Access individual pods by pod IPTelepresence also routes pod IPs. First get pod details:
kubectl get pods -o wide
Example:
NAME READY STATUS RESTARTS AGE IP NODEauth-depl-69bf897bb9-t9hgg 1/1 Running 0 13m 192.168.32.69 ip-192-168-43-108.ec2.internalinventory-depl-5f8657c56c-1p5r4 1/1 Running 0 50m 192.168.34.172 ip-192-168-43-108.ec2.internalproducts-depl-547767bccd-8zcz9 1/1 Running 0 5m54s 192.168.6.186 ip-192-168-24-32.ec2.internal
Curl a pod IP directly:
curl http://192.168.32.69:3000
Example response:
{"message":"this is the auth service"}
Disconnect TelepresenceWhen finished, quit Telepresence to stop local daemons and remove routes:
telepresence quittelepresence status
After quitting, telepresence status will show the client is no longer connected.Closing notesTelepresence enables using local development tooling (debuggers, profilers, packet capture, etc.) while interacting with cluster services as if your workstation were inside the cluster network. This simplifies troubleshooting DNS, networking, and service interactions without port-forwarding or building debug images.Links and references