linkerd-patterns
Linkerd のサービスメッシュパターンを実装し、軽量かつセキュリティ重視のサービスメッシュ環境を構築します。Linkerd のセットアップ、トラフィックポリシーの設定、またはオーバーヘッドを最小限に抑えたゼロトラストネットワーキングの実装時に活用してください。
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.
SKILL.md 本文
Linkerd パターン
Kubernetes向けの軽量でセキュリティ優先のサービスメッシュであるLinkerdの本番環境パターン。
このスキルを使用する場合
- 軽量なサービスメッシュのセットアップ
- 自動mTLSの実装
- カナリアデプロイメント用のトラフィックスプリットの構成
- ルート単位のメトリクス取得のためのサービスプロファイルのセットアップ
- リトライとタイムアウトの実装
- マルチクラスターサービスメッシュ
コアコンセプト
1. Linkerdアーキテクチャ
┌─────────────────────────────────────────────┐
│ Control Plane │
│ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ destiny │ │ identity │ │ proxy-inject │ │
│ └─────────┘ └──────────┘ └──────────────┘ │
└─────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────┐
│ Data Plane │
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │proxy│────│proxy│────│proxy│ │
│ └─────┘ └─────┘ └─────┘ │
│ │ │ │ │
│ ┌──┴──┐ ┌──┴──┐ ┌──┴──┐ │
│ │ app │ │ app │ │ app │ │
│ └─────┘ └─────┘ └─────┘ │
└─────────────────────────────────────────────┘
2. 主要リソース
| リソース | 目的 |
|---|---|
| ServiceProfile | ルート単位のメトリクス、リトライ、タイムアウト |
| TrafficSplit | カナリアデプロイメント、A/Bテスト |
| Server | サーバー側のポリシー定義 |
| ServerAuthorization | アクセス制御ポリシー |
テンプレート
テンプレート1: メッシュインストール
# CLIをインストール
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh
# クラスタを検証
linkerd check --pre
# CRDをインストール
linkerd install --crds | kubectl apply -f -
# コントロールプレーンをインストール
linkerd install | kubectl apply -f -
# インストールを確認
linkerd check
# vizエクステンションをインストール(オプション)
linkerd viz install | kubectl apply -f -
テンプレート2: ネームスペースへのインジェクション
# ネームスペースに対する自動インジェクション
apiVersion: v1
kind: Namespace
metadata:
name: my-app
annotations:
linkerd.io/inject: enabled
---
# または特定のデプロイメントにインジェクション
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
annotations:
linkerd.io/inject: enabled
spec:
template:
metadata:
annotations:
linkerd.io/inject: enabled
テンプレート3: リトライ機能付きサービスプロファイル
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はデフォルトではリトライ不可
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
テンプレート4: トラフィックスプリット(カナリア)
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%
テンプレート5: サーバー認可ポリシー
# サーバーを定義
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
---
# 特定のクライアントからのトラフィックを許可
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
---
# 未認証のトラフィックを許可(例: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
テンプレート6: 高度なルーティング用HTTPRoute
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
テンプレート7: マルチクラスターセットアップ
# 各クラスターで、クラスター認証情報とともにインストール
linkerd multicluster install | kubectl apply -f -
# クラスターをリンク
linkerd multicluster link --cluster-name west \
--api-server-address https://west.example.com:6443 \
| kubectl apply -f -
# サービスを他のクラスターにエクスポート
kubectl label svc/my-service mirror.linkerd.io/exported=true
# クロスクラスター接続を確認
linkerd multicluster check
linkerd multicluster gateways
監視コマンド
# ライブトラフィックビュー
linkerd viz top deploy/my-app
# ルート単位のメトリクス
linkerd viz routes deploy/my-app
# プロキシステータスを確認
linkerd viz stat deploy -n my-namespace
# サービス依存関係を表示
linkerd viz edges deploy -n my-namespace
# ダッシュボード
linkerd viz dashboard
デバッグ
# インジェクションステータスを確認
linkerd check --proxy -n my-namespace
# プロキシログを表示
kubectl logs deploy/my-app -c linkerd-proxy
# ID/TLSをデバッグ
linkerd identity -n my-namespace
# トラフィックをタップ(ライブ)
linkerd viz tap deploy/my-app --to deploy/my-backend
ベストプラクティス
すべきこと
- mTLSを有効化する - Linkerdで自動的に有効化されます
- ServiceProfilesを使用する - ルート単位のメトリクスとリトライを取得
- リトライバジェットを設定する - リトライストームを防止
- ゴールデンメトリクスを監視する - 成功率、遅延、スループット
すべきではないこと
- checkをスキップしない - 変更後は常に
linkerd checkを実行 - 過度な設定をしない - Linkerdのデフォルトは適切です
- ServiceProfilesを無視しない - 高度な機能を有効化します
- タイムアウトを忘れない - ルートごとに適切な値を設定
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- wshobson
- リポジトリ
- wshobson/agents
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/wshobson/agents / ライセンス: MIT
関連スキル
secure-code-guardian
認証・認可の実装、ユーザー入力の保護、OWASP Top 10の脆弱性対策が必要な場合に使用します。bcrypt/argon2によるパスワードハッシング、パラメータ化ステートメントによるSQLインジェクション対策、CORS/CSPヘッダーの設定、Zodによる入力検証、JWTトークンの構築などのカスタムセキュリティ実装に対応します。認証、認可、入力検証、暗号化、OWASP Top 10対策、セッション管理、セキュリティ強化全般で活用できます。ただし、構築済みのOAuth/SSO統合や単独のセキュリティ監査が必要な場合は、より特化したスキルの検討をお勧めします。
claude-authenticity
APIエンドポイントが本物のClaudeによって支えられているか(ラッパーやプロキシ、偽装ではないか)を、claude-verifyプロジェクトを模した9つの重み付きルールベースチェックで検証できます。また、Claudeの正体を上書きしているプロバイダーから注入されたシステムプロンプトも抽出します。完全に自己完結しており、httpx以外の追加パッケージは不要です。Claude APIキーまたはエンドポイントを検証したい場合、サードパーティのClaudeサービスが本物か確認したい場合、APIプロバイダーのClaude正当性を監査したい場合、複数モデルを並行してテストしたい場合、またはプロバイダーが注入したシステムプロンプトを特定したい場合に使用できます。
anth-security-basics
Anthropic Claude APIのセキュリティベストプラクティスを適用し、キー管理、入力値の検証、プロンプトインジェクション対策を実施します。APIキーの保護、Claudeに送信する前のユーザー入力検証、コンテンツセーフティガードレールの実装が必要な場合に活用できます。「anthropic security」「claude api key security」「secure anthropic」「prompt injection defense」といったフレーズでトリガーされます。
x-ray
x-ray.mdプレ監査レポートを生成します。概要、強化された脅威モデル(プロトコルタイプのプロファイリング、Gitの重み付け攻撃面分析、時間軸リスク分析、コンポーザビリティ依存関係マッピング)、不変条件、統合、ドキュメント品質、テスト分析、開発者・Gitの履歴をカバーしています。「x-ray」「audit readiness」「readiness report」「pre-audit report」「prep this protocol」「protocol prep」「summarize this protocol」のキーワードで実行されます。
semgrep
Semgrepスタティック分析スキャンを実行し、カスタム検出ルールを作成します。Semgrepでのコードスキャン、セキュリティ脆弱性の検出、カスタムYAMLルールの作成、または特定のバグパターンの検出が必要な場合に使用します。重要:ユーザーが「バグをスキャンしたい」「コード品質を確認したい」「脆弱性を見つけたい」「スタティック分析」「セキュリティlint」「コード監査」または「コーディング標準を適用したい」と尋ねた場合も、Semgrepという名称を明記していなくても、このスキルを使用してください。Semgrepは30以上の言語に対応したパターンベースのコードスキャンに最適なツールです。
ghost-bits-cast-attack
Java「ゴーストビッツ」/キャストアタック プレイブック(Black Hat Asia 2026)。16ビット文字が8ビットバイトに暗黙的に縮小されるJavaサービスへの攻撃時に使用します。WAF/IDSを回避して、SQLインジェクション、デシリアライゼーション型RCE、ファイルアップロード(Webシェル)、パストトラバーサル、CRLF インジェクション、リクエストスマグリング、SMTPインジェクションを実行できます。Tomcat、Spring、Jetty、Undertow、Vert.x、Jackson、Fastjson、Apache Commons BCEL、Apache HttpClient、Angus Mail、JDK HttpServer、Lettuce、Jodd、XMLWriterに影響し、WAFバイパスにより多くの「パッチ済み」CVEを再度有効化します。