ASD

Linkerd Patterns

Implementa patrones de Linkerd para desplegar un service mesh ligero centrado en seguridad. Útil al configurar Linkerd, políticas de tráfico o redes zero-trust con mínimo overhead.

Estrellas
38.8k

en todo el repo

Actividad
34

0–100, la ruta de este skill

Actualizado
hace 5 meses

último commit aquí

Commits
0

últimos 90 días

Contexto
2k tok

55 tok en reposo

Paquete
1 archivo

8 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add wshobson/agents --skill linkerd-patterns --agent claude-code

Se instala solo en este repositorio.

Este skill makes network requests.

Qué hace

  • Instala y configura Linkerd como service mesh ligero con mTLS automático
  • Proporciona plantillas para ServiceProfile, TrafficSplit, Server/ServerAuthorization y HTTPRoute
  • Configura reintentos, timeouts y retry budgets por ruta
  • Establece comandos de monitoreo (viz top, routes, stat, edges) y debugging de proxies
  • Configura setup multi-cluster con linkerd multicluster link/gateways

Úsalo cuando

  • Al configurar un service mesh ligero
  • Al implementar mTLS automático
  • Al configurar traffic splits para despliegues canary
  • Al configurar service profiles para métricas por ruta o mesh multi-cluster

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Configura Linkerd con mTLS automático en mi clúster
    • Crea un TrafficSplit para un despliegue canary
    • Necesito ServiceProfile con reintentos y timeouts por ruta
    • Configura Linkerd multi-cluster entre dos clústeres

    SKILL.md

    En inglés

    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

    # Install CLI
    curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh
    
    # Validate cluster
    linkerd check --pre
    
    # Install CRDs
    linkerd install --crds | kubectl apply -f -
    
    # Install control plane
    linkerd install | kubectl apply -f -
    
    # Verify installation
    linkerd check
    
    # Install viz extension (optional)
    linkerd viz install | kubectl apply -f -
    

    Template 2: Inject Namespace

    # Automatic injection for namespace
    apiVersion: v1
    kind: Namespace
    metadata:
      name: my-app
      annotations:
        linkerd.io/inject: enabled
    ---
    # Or inject specific deployment
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
      annotations:
        linkerd.io/inject: enabled
    spec:
      template:
        metadata:
          annotations:
            linkerd.io/inject: enabled
    

    Template 3: Service Profile with Retries

    apiVersion: linkerd.io/v1alpha2
    kind: ServiceProfile
    metadata:
      name: my-service.my-namespace.svc.cluster.local
      namespace: my-namespace
    spec:
      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)

    apiVersion: split.smi-spec.io/v1alpha1
    kind: TrafficSplit
    metadata:
      name: my-service-canary
      namespace: my-namespace
    spec:
      service: my-service
      backends:
        - service: my-service-stable
          weight: 900m # 90%
        - service: my-service-canary
          weight: 100m # 10%
    

    Template 5: Server Authorization Policy

    # Define the server
    apiVersion: policy.linkerd.io/v1beta1
    kind: Server
    metadata:
      name: my-service-http
      namespace: my-namespace
    spec:
      podSelector:
        matchLabels:
          app: my-service
      port: http
      proxyProtocol: HTTP/1
    ---
    # Allow traffic from specific clients
    apiVersion: policy.linkerd.io/v1beta1
    kind: ServerAuthorization
    metadata:
      name: allow-frontend
      namespace: my-namespace
    spec:
      server:
        name: my-service-http
      client:
        meshTLS:
          serviceAccounts:
            - name: frontend
              namespace: my-namespace
    ---
    # Allow unauthenticated traffic (e.g., from ingress)
    apiVersion: policy.linkerd.io/v1beta1
    kind: ServerAuthorization
    metadata:
      name: allow-ingress
      namespace: my-namespace
    spec:
      server:
        name: my-service-http
      client:
        unauthenticated: true
        networks:
          - cidr: 10.0.0.0/8
    

    Template 6: HTTPRoute for Advanced Routing

    apiVersion: policy.linkerd.io/v1beta2
    kind: HTTPRoute
    metadata:
      name: my-route
      namespace: my-namespace
    spec:
      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

    # On each cluster, install with cluster credentials
    linkerd multicluster install | kubectl apply -f -
    
    # Link clusters
    linkerd multicluster link --cluster-name west \
      --api-server-address https://west.example.com:6443 \
      | kubectl apply -f -
    
    # Export a service to other clusters
    kubectl label svc/my-service mirror.linkerd.io/exported=true
    
    # Verify cross-cluster connectivity
    linkerd multicluster check
    linkerd multicluster gateways
    

    Monitoring Commands

    # Live traffic view
    linkerd viz top deploy/my-app
    
    # Per-route metrics
    linkerd viz routes deploy/my-app
    
    # Check proxy status
    linkerd viz stat deploy -n my-namespace
    
    # View service dependencies
    linkerd viz edges deploy -n my-namespace
    
    # Dashboard
    linkerd viz dashboard
    

    Debugging

    # Check injection status
    linkerd check --proxy -n my-namespace
    
    # View proxy logs
    kubectl logs deploy/my-app -c linkerd-proxy
    
    # Debug identity/TLS
    linkerd 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 route

    Reproducido de wshobson/agents bajo licencia MIT. Leer esta página en markdown.

    Archivos

    1 archivo en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere un clúster Kubernetes y el CLI de Linkerd instalado.

    Necesita en el PATH:curlkubectl

    Detalles

    Creador
    wshobson
    Licencia
    MIT
    Recursos incluidos
    Solo SKILL.md
    Repositorio
    wshobson/agents
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de wshobson/agents

    Este repo incluye 180 skills. Si instalas uno, normalmente ya tienes los demás.

    Úsalo al seleccionar y colocar iconos, imágenes, SVGs, diagramas o infografías de apoyo aprobados en un PPTX editable.

    Costo de contexto al activarse
    344 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo cuando pidan optimizar un prompt, mejorar su rendimiento, diseñar una plantilla, aplicar chain-of-thought, few-shot prompting o técnicas avanzadas de prompt engineering para producción.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    10 archivos
    Última actualización
    el mes pasado
    herramientas desarrollo

    Úsalo al redactar o reparar una especificación JSON con coordenadas explícitas para un PPTX editable.

    Costo de contexto al activarse
    489 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo para validar o reparar un PPTX editable en cuanto a geometría, accesibilidad, editabilidad nativa, linaje de fuente e integridad del paquete OOXML.

    Costo de contexto al activarse
    409 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo para analizar un PPTX de referencia en modo solo lectura: estructura, tema, tipografía, ritmo de layout, diagnósticos, catálogos de plantillas derivados o inspección segura del paquete OOXML.

    Costo de contexto al activarse
    689 tok
    Tamaño del paquete
    8 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo al preparar la narrativa, las fuentes y el contexto de diseño para un nuevo deck PPTX editable.

    Costo de contexto al activarse
    415 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Skills relacionados

    Configura Turborepo para builds de monorepo eficientes con caché local y remota. Útil al configurar Turborepo, optimizar pipelines de build o implementar caching distribuido.

    Costo de contexto al activarse
    2k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 5 meses
    devops infraestructura

    Implementa observabilidad integral para service meshes, incluyendo tracing distribuido, métricas y visualización. Útil para monitoreo de mesh, depuración de latencia y SLOs.

    Costo de contexto al activarse
    708 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    devops infraestructura

    Define e implementa Indicadores (SLI) y Objetivos (SLO) de nivel de servicio con error budgets y alertas, para establecer metas de fiabilidad y prácticas SRE.

    Costo de contexto al activarse
    1.8k tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    devops infraestructura