Skip to content

Linkerd — Commands & Recipes

Installation

# Install CLI
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh

# Pre-check
linkerd check --pre

# Install CRDs + control plane
linkerd install --crds | kubectl apply -f -
linkerd install | kubectl apply -f -

# Verify
linkerd check

Mesh a Namespace

# Inject sidecars into existing deployments
kubectl get deploy -n myapp -o yaml | linkerd inject - | kubectl apply -f -

# Or annotate namespace for auto-injection
kubectl annotate namespace myapp linkerd.io/inject=enabled

Traffic Splitting (Canary)

apiVersion: policy.linkerd.io/v1beta3
kind: HTTPRoute
metadata:
  name: myapp-canary
  namespace: myapp
spec:
  parentRefs:
    - name: myapp
      kind: Service
      group: core
      port: 8080
  rules:
    - backendRefs:
        - name: myapp-v1
          port: 8080
          weight: 90
        - name: myapp-v2
          port: 8080
          weight: 10

Observability

# Golden metrics dashboard
linkerd viz install | kubectl apply -f -
linkerd viz dashboard &

# Per-deployment stats
linkerd viz stat deploy -n myapp

# Live traffic tap
linkerd viz tap deploy/myapp -n myapp

# Top routes
linkerd viz routes deploy/myapp -n myapp

Multi-Cluster

# Link two clusters
linkerd multicluster install | kubectl apply -f -
linkerd multicluster link --cluster-name west | kubectl --context=east apply -f -

# Export a service
kubectl label svc/myapp mirror.linkerd.io/exported=true

Sources