npx skills add https://github.com/wshobson/agents --skill linkerd-patternsHow Linkerd Patterns fits into a Paperclip company.
Linkerd Patterns drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.
Pre-configured AI company — 18 agents, 18 skills, one-time purchase.
SKILL.md305 linesExpandCollapse
---name: linkerd-patternsdescription: Implement Linkerd service mesh patterns for lightweight, security-focused service mesh deployments. Use when setting up Linkerd, configuring traffic policies, or implementing zero-trust networking with minimal overhead.--- # Linkerd Patterns Production patterns for Linkerd service mesh - the lightweight, security-first service mesh for Kubernetes. ## When to Use This Skill - Setting up a lightweight service mesh- Implementing automatic mTLS- Configuring traffic splits for canary deployments- Setting up service profiles for per-route metrics- Implementing retries and timeouts- Multi-cluster service mesh ## Core Concepts ### 1. Linkerd Architecture ```┌─────────────────────────────────────────────┐│ Control Plane ││ ┌─────────┐ ┌──────────┐ ┌──────────────┐ ││ │ destiny │ │ identity │ │ proxy-inject │ ││ └─────────┘ └──────────┘ └──────────────┘ │└─────────────────────────────────────────────┘ │┌─────────────────────────────────────────────┐│ Data Plane ││ ┌─────┐ ┌─────┐ ┌─────┐ ││ │proxy│────│proxy│────│proxy│ ││ └─────┘ └─────┘ └─────┘ ││ │ │ │ ││ ┌──┴──┐ ┌──┴──┐ ┌──┴──┐ ││ │ app │ │ app │ │ app │ ││ └─────┘ └─────┘ └─────┘ │└─────────────────────────────────────────────┘``` ### 2. Key Resources | Resource | Purpose || ----------------------- | ------------------------------------ || **ServiceProfile** | Per-route metrics, retries, timeouts || **TrafficSplit** | Canary deployments, A/B testing || **Server** | Define server-side policies || **ServerAuthorization** | Access control policies | ## Templates ### Template 1: Mesh Installation ```bash# Install CLIcurl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh # Validate clusterlinkerd check --pre # Install CRDslinkerd install --crds | kubectl apply -f - # Install control planelinkerd install | kubectl apply -f - # Verify installationlinkerd check # Install viz extension (optional)linkerd viz install | kubectl apply -f -``` ### Template 2: Inject Namespace ```yaml# Automatic injection for namespaceapiVersion: v1kind: Namespacemetadata: name: my-app annotations: linkerd.io/inject: enabled---# Or inject specific deploymentapiVersion: apps/v1kind: Deploymentmetadata: name: my-app annotations: linkerd.io/inject: enabledspec: template: metadata: annotations: linkerd.io/inject: enabled``` ### Template 3: Service Profile with Retries ```yamlapiVersion: linkerd.io/v1alpha2kind: ServiceProfilemetadata: name: my-service.my-namespace.svc.cluster.local namespace: my-namespacespec: routes: - name: GET /api/users condition: method: GET pathRegex: /api/users responseClasses: - condition: status: min: 500 max: 599 isFailure: true isRetryable: true - name: POST /api/users condition: method: POST pathRegex: /api/users # POST not retryable by default isRetryable: false - name: GET /api/users/{id} condition: method: GET pathRegex: /api/users/[^/]+ timeout: 5s isRetryable: true retryBudget: retryRatio: 0.2 minRetriesPerSecond: 10 ttl: 10s``` ### Template 4: Traffic Split (Canary) ```yamlapiVersion: split.smi-spec.io/v1alpha1kind: TrafficSplitmetadata: name: my-service-canary namespace: my-namespacespec: service: my-service backends: - service: my-service-stable weight: 900m # 90% - service: my-service-canary weight: 100m # 10%``` ### Template 5: Server Authorization Policy ```yaml# Define the serverapiVersion: policy.linkerd.io/v1beta1kind: Servermetadata: name: my-service-http namespace: my-namespacespec: podSelector: matchLabels: app: my-service port: http proxyProtocol: HTTP/1---# Allow traffic from specific clientsapiVersion: policy.linkerd.io/v1beta1kind: ServerAuthorizationmetadata: name: allow-frontend namespace: my-namespacespec: server: name: my-service-http client: meshTLS: serviceAccounts: - name: frontend namespace: my-namespace---# Allow unauthenticated traffic (e.g., from ingress)apiVersion: policy.linkerd.io/v1beta1kind: ServerAuthorizationmetadata: name: allow-ingress namespace: my-namespacespec: server: name: my-service-http client: unauthenticated: true networks: - cidr: 10.0.0.0/8``` ### Template 6: HTTPRoute for Advanced Routing ```yamlapiVersion: policy.linkerd.io/v1beta2kind: HTTPRoutemetadata: name: my-route namespace: my-namespacespec: parentRefs: - name: my-service kind: Service group: core port: 8080 rules: - matches: - path: type: PathPrefix value: /api/v2 - headers: - name: x-api-version value: v2 backendRefs: - name: my-service-v2 port: 8080 - matches: - path: type: PathPrefix value: /api backendRefs: - name: my-service-v1 port: 8080``` ### Template 7: Multi-cluster Setup ```bash# On each cluster, install with cluster credentialslinkerd multicluster install | kubectl apply -f - # Link clusterslinkerd multicluster link --cluster-name west \ --api-server-address https://west.example.com:6443 \ | kubectl apply -f - # Export a service to other clusterskubectl label svc/my-service mirror.linkerd.io/exported=true # Verify cross-cluster connectivitylinkerd multicluster checklinkerd multicluster gateways``` ## Monitoring Commands ```bash# Live traffic viewlinkerd viz top deploy/my-app # Per-route metricslinkerd viz routes deploy/my-app # Check proxy statuslinkerd viz stat deploy -n my-namespace # View service dependencieslinkerd viz edges deploy -n my-namespace # Dashboardlinkerd viz dashboard``` ## Debugging ```bash# Check injection statuslinkerd check --proxy -n my-namespace # View proxy logskubectl logs deploy/my-app -c linkerd-proxy # Debug identity/TLSlinkerd identity -n my-namespace # Tap traffic (live)linkerd viz tap deploy/my-app --to deploy/my-backend``` ## Best Practices ### Do's - **Enable mTLS everywhere** - It's automatic with Linkerd- **Use ServiceProfiles** - Get per-route metrics and retries- **Set retry budgets** - Prevent retry storms- **Monitor golden metrics** - Success rate, latency, throughput ### Don'ts - **Don't skip check** - Always run `linkerd check` after changes- **Don't over-configure** - Linkerd defaults are sensible- **Don't ignore ServiceProfiles** - They unlock advanced features- **Don't forget timeouts** - Set appropriate values per routeAccessibility Compliance
This walks you through implementing proper WCAG 2.2 compliance with real code patterns for screen readers, keyboard navigation, and mobile accessibility. It cov
Airflow Dag Patterns
If you're building data pipelines with Airflow, this skill gives you production-ready DAG patterns that actually work in the real world. It covers TaskFlow API
Angular Migration
Migrating from AngularJS to Angular is notoriously painful, and this skill tackles the practical stuff that makes or breaks these projects. It covers hybrid app