サービスメッシュ

Linkerd りんかーど

サービスメッシュKubernetesマイクロサービスプロキシmTLS可観測性
Linkerdについて教えて

簡単に言うとこんな感じ!

Linkerd(リンカード)は、たくさんの小さなサービスが連携するシステムで「サービス同士の通信を裏でこっそり管理してくれるインフラ」だよ!セキュリティ・監視・信頼性をアプリのコードをいじらずに後付けできちゃうすごいやつなんだ!


Linkerdとは

Linkerd(リンカード) は、Kubernetes上で動くマイクロサービス(小さなサービスを組み合わせて作るシステム設計)環境向けのオープンソースのサービスメッシュです。サービスメッシュとは、マイクロサービス同士の通信を一元的に管理・監視・セキュリティ保護する仕組みのことを指します。2016年にBuoyant社が開発し、CNCFのGraduatedプロジェクトクラウドネイティブ技術の成熟した標準として認定された最高ランク)として広く使われています。

Linkerdの最大の特徴は「超軽量」であること。Rustで書かれた独自のマイクロプロキシLinkerd2-proxy」を採用しており、同種のツールと比べてCPU・メモリ消費が非常に少ない点が評価されています。アプリケーションのサイドカー(各サービスに横付けされる小さなプロキシコンテナ)として動作するため、アプリ本体のコードをまったく変えずに通信の暗号化・ロードバランシング・メトリクス収集などを実現できます。

システム発注や選定をする立場から見ると、「Linkerdを導入すれば開発チームへの追加実装依頼なしに、サービス間通信の安全性と可視性を確保できる」という点が重要です。特にゼロトラストセキュリティ(すべての通信を信頼しない前提で認証・暗号化する考え方)の実現を低コストで目指す組織に向いています。


Linkerdの仕組みと構成要素

Linkerdは大きく3つのコンポーネントで構成されています。

コンポーネント役割動作場所
コントロールプレーン設定管理・証明書発行・ポリシー制御専用Namespaceで動作
データプレーン(サイドカープロキシ)実際の通信を横取りして処理各サービスPodに注入
Linkerd CLI / ダッシュボード管理・可視化ツール運用者が操作

具体的な機能一覧:

  • mTLS(相互TLS認証)の自動化 — サービス間の通信を証明書で双方向に認証・暗号化。コード変更不要
  • ゴールデンメトリクスの自動収集 — 成功率・レイテンシ・スループットをデフォルトで可視化
  • HTTPロードバランシング(EWMA) — 応答速度に応じてリクエストを賢く振り分ける
  • リトライ・タイムアウト制御 — 失敗した通信を自動的にリトライする設定が可能
  • トラフィックシフト — カナリアデプロイ(新バージョンへの段階的なトラフィック移行)をサポート

覚え方:「リンカード=つなぐカード」

Link(つなぐ)+ -erd(ツール的な語尾)で、「サービス同士をつなぐカード(切り札)」と覚えると◎。カードを差し込むだけで通信が安全に管理される、そんなイメージです。

Linkerd1 と Linkerd2 の違い

項目Linkerd1(旧世代)Linkerd2(現行)
実装言語Scala / JVMRust(プロキシ)+ Go(コントロール)
対応環境汎用(DC/OS等)Kubernetes専用
リソース消費重い軽量
現状非推奨(EOL)現役・活発開発中

歴史と背景

  • 2016年 — Buoyant社がScala/JVMベースのLinkerd1をリリース。TwitterのFinagleを源流とする。CNCFの最初のプロジェクトの1つとして寄贈される
  • 2018年 — Kubernetes専化・超軽量設計を目指したLinkerd2(旧称Conduit) をBuoyantが発表
  • 2019年 — Linkerd2が正式リリース。Rustベースのサイドカープロキシを採用し軽量化を実現
  • 2021年 — CNCFのGraduatedプロジェクトに昇格。Envoyベースの競合(Istio等)との差別化として「シンプルさ・軽量さ」を強調
  • 2022年〜eBPFを活用したサイドカーレス実験(ambient modeのトレンドに対応)を開始
  • 現在 — ライセンス変更(BSL)をめぐるコミュニティ騒動もあったが、OSSとして引き続き開発継続中

マイクロサービスが複雑化するにつれ「サービス間通信の管理が手に負えない」という課題が顕在化。その解決策としてサービスメッシュの概念が生まれ、Linkerdはその先駆けとなりました。


Linkerd vs 主要サービスメッシュ比較

サービスメッシュには複数の選択肢があります。どれを選ぶかは「シンプルさ優先か、機能フルセット優先か」で変わります。

サービスメッシュ比較マップ ← シンプル・軽量 高機能・複雑 → Linkerd 軽量・シンプル ✅ 導入が簡単 ✅ 超軽量プロキシ ✅ mTLS自動化 ✅ Kubernetes専用 ⚠️ 機能はIstioより少 ⚠️ Buoyant主導 Istio 多機能・標準的 ✅ 機能豊富 ✅ 大規模実績多数 ✅ Envoyベース ⚠️ 学習コスト高 ⚠️ リソース消費多 ⚠️ 設定が複雑 Consul Connect マルチプラットフォーム ✅ K8s以外も対応 ✅ HashiCorpエコシス ✅ サービス検出強力 ⚠️ 独自概念が多い ⚠️ 商用版で全機能 ⚠️ 設計思想が特殊 選択のポイント 「まずサービスメッシュを試したい・軽く使いたい」→ Linkerd / 「大規模・多機能が必要」→ Istio / 「K8s以外もある」→ Consul

Linkerdが向いているケース

  • チーム規模が小さく、運用負荷を下げたい
  • Kubernetesに乗り出したばかりでシンプルに始めたい
  • リソース(CPU・メモリ)が限られた環境(エッジ・小規模クラスタ)
  • ゼロトラスト的なサービス間mTLSをすぐに実現したい

関連する規格・RFC

規格・RFC番号内容
RFC 8446TLS 1.3 — Linkerdのmtls基盤となるトランスポート暗号化プロトコル
RFC 7540HTTP/2 — Linkerdのプロキシが内部通信で活用するプロトコル
RFC 7235HTTP認証フレームワーク — サービス間認証の基礎概念

関連用語

  • サービスメッシュ — マイクロサービス間の通信を一元管理するインフラ層の仕組み
  • Istio — Envoyベースの多機能サービスメッシュ。Linkerdの主要な比較対象
  • Kubernetes — Linkerdが動作する前提となるコンテナオーケストレーションプラットフォーム
  • マイクロサービス — Linkerdが管理対象とする小さなサービス群の設計思想
  • mTLS(相互TLS) — Linkerdが自動的に実現するサービス間の双方向認証・暗号化
  • サイドカーパターン — Linkerdがプロキシを各サービスに横付けする設計パターン
  • ゼロトラストセキュリティ — Linkerd導入で実現を目指すセキュリティモデル
  • Envoy — Istioが採用するプロキシ。Linkerdの独自プロキシ(Linkerd2-proxy)と対比される