【りんかーど】

Linkerd(リンカード) とは?

最終更新:
💡 マイクロサービス同士をそっとつないでくれる、軽くて頼れる通信の管理人

Kubernetes向けのサービスメッシュ。サービス間通信の暗号化、信頼性の向上、可観測性を、アプリケーションのコードを変えずに追加できる。

📌 このページのポイント
Linkerd サービスメッシュの構成 コントロールプレーン 設定管理 / 証明書発行 / メトリクス集約 サービスA アプリ linkerd proxy サービスB アプリ linkerd proxy サービスC アプリ linkerd proxy メッシュ内は自動mTLS 負荷分散 メトリクス自動収集 Rust製マイクロプロキシ
Linkerdによるサービスメッシュ構成のイメージ
ひよこ ひよこ
Linkerdって、Istioとどう違うの?どっちもサービスメッシュだよね?
ペンギン先生 ペンギン先生
大きな違いはプロキシだよ。Istioは汎用のEnvoyプロキシを使うけど、LinkerdはRustで書かれたLinkerd専用の軽量な「マイクロプロキシ」を使うんだ。必要な機能や運用のしやすさを比べて選ぶといいよ。
ひよこ ひよこ
入れると通信は全部暗号化されるの?
ペンギン先生 ペンギン先生
メッシュに入ったPod同士のTCP通信は、既定で自動的にmTLSになるよ。ただメッシュに入っていないPodとの通信(例えばKubernetesのヘルスチェック)や、プロキシを通さない設定にしたポートの通信は対象外なんだ。平文の通信を拒否したいなら認可ポリシーで制限しよう。
ひよこ ひよこ
導入するとき、アプリのコードを変えなきゃいけない?
ペンギン先生 ペンギン先生
変えなくていいんだ。Deploymentなどに「linkerd.io/inject: enabled」というアノテーションを付けると、Podの作成時にプロキシが注入されるよ。「linkerd inject」コマンドでこのアノテーションを付けることもできる。ただ、すでに動いているPodは作り直すまで注入されないから、「kubectl rollout restart」などで入れ替えようね。
ひよこ ひよこ
CNCFの卒業プロジェクトってことは、それなりに信頼されてるんだね?
ペンギン先生 ペンギン先生
2021年にCNCFの卒業レベルになったプロジェクトだよ。ひとつ知っておきたいのは、2024年2月からオープンソースのプロジェクト自体は「stable(安定版)」の配布物を出さなくなったこと。オープンソースとしては週1回程度のedgeリリースを公開していて、安定版はBuoyantなどのベンダーが提供しているんだ。ライセンスはApache 2.0のままだよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Linkerd」って出てきたら「Kubernetes用の軽量なサービスメッシュ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Linkerd」 = リンカード
💬 「link」(つなぐ)を含む名前で、サービス同士をつなぐ役割を思わせるよ。ただ名前の由来についての公式な説明は確認できていないんだ

参考資料

← 用語集にもどる