linkerd-patterns — скилл для Claude Code: настройка Linkerd
Помогает настроить Linkerd в Kubernetes: от mTLS и политик трафика до canary-развёртываний и связи между кластерами. Пригодится, когда вы внедряете service mesh или разбираетесь с его конфигурацией.
/plugin marketplace add wshobson/agents
/plugin install cloud-infrastructure@claude-code-workflowsЧто делает linkerd-patterns
Скилл предлагает шаблоны установки Linkerd, подключения прокси к namespace или deployment, настройки ServiceProfile, TrafficSplit, ServerAuthorization и HTTPRoute. С ними можно задавать повторы и таймауты для маршрутов, распределять трафик между стабильной и canary-версией и ограничивать доступ к сервису. Для многокластерной конфигурации есть команды установки, связи кластеров и экспорта сервиса.
Внутри также собраны команды для просмотра метрик и зависимостей сервисов, проверки прокси и диагностики TLS. Примеры рассчитаны на Kubernetes; установочный пример использует Homebrew, а версию CLI нужно выбирать с учётом целевого кластера. Ставьте скилл, если настраиваете Linkerd или поддерживаете его политики; для проектов без Kubernetes он не пригодится.
Какие задачи решает
- установить Linkerd и проверить его состояние в кластере
- включить автоматическую инъекцию прокси в namespace
- настроить повторы и таймауты для HTTP-маршрутов
- распределить запросы между стабильным сервисом и canary
- ограничить доступ к сервису через ServerAuthorization
Примеры запросов агенту
- Настрой Linkerd в Kubernetes и проверь установку командами из скилла.
- Создай ServiceProfile для GET /api/users с повторами и таймаутом для маршрута с id.
- Настрой TrafficSplit для my-service: 90% на my-service-stable и 10% на my-service-canary.
Как установить linkerd-patterns
1Через маркетплейс плагинов
/plugin marketplace add wshobson/agents/plugin install cloud-infrastructure@claude-code-workflowsКоманда ставит плагин cloud-infrastructure целиком, со всеми его скиллами
2Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill linkerd-patterns -a claude-code3Вручную: положить файлы
~/.claude/skills/linkerd-patterns/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/linkerd-patterns/
1Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill linkerd-patterns -a codex2Вручную: положить файлы
.agents/skills/linkerd-patterns/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill linkerd-patterns -a cursor2Вручную: положить файлы
.cursor/skills/linkerd-patterns/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install wshobson/agents linkerd-patterns2Вручную: положить файлы
.github/skills/linkerd-patterns/SKILL.mdКомандой платформы
gemini skills install https://github.com/wshobson/agents --path plugins/cloud-infrastructure/skills/linkerd-patternsВручную: положить файлы
.devin/skills/linkerd-patterns/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора213
Весь набор →Похожие
Вопросы о linkerd-patterns
Как установить linkerd-patterns в Claude Code?
Выполните npx skills add wshobson/agents --skill linkerd-patterns -a claude-code. Вариант установки через marketplace: /plugin marketplace add wshobson/agents, затем /plugin install cloud-infrastructure@claude-code-workflows.
Что делает linkerd-patterns?
Скилл даёт шаблоны и команды для настройки Linkerd в Kubernetes: политики доступа, маршрутизацию, повторы, таймауты и многокластерное соединение.
Что нужно для установки Linkerd по примерам скилла?
Нужен Kubernetes-кластер и CLI Linkerd версии, совместимой с целевым кластером. Пример установки CLI использует Homebrew.
Исходный текст
SKILL.md · MIT
---
name: linkerd-patterns
description: 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
Use a CLI version compatible with the target cluster. The example uses Homebrew;
for other systems, follow the [official installation guide](https://linkerd.io/docs/getting-started/).
```bash
# Install the CLI with Homebrew
brew install linkerd
linkerd version
# 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
```yaml
# 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
```yaml
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)
```yaml
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
```yaml
# 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
```yaml
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
```bash
# 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
```bash
# 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
```bash
# 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
© Seth Hobson · MIT · wshobson/agents