Linkerd

Linkerd v2で実現するKubernetesのサービスミラーリングとは?

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Linkerd v2でのサービスミラーリングとは

Kubernetes環境における「サービスミラーリング」は、既存のサービスにトラフィックをコピーして別のターゲットへ送信する機能です。この技術は、A/Bテストやバージョン比較、ロギング・メトリクスの収集などに活用され、リリース前のリスク検証と運用安定性向上を目的としています。Linkerd v2では、サービスミラーリングをポリシー定義で柔軟に制御できる仕組みが提供されており、KubernetesのDeploymentやServiceの拡張機能として導入可能です。


Kubernetes Deploymentへの導入手順

Linkerd v2でのサービスミラーリングは、CRD(Custom Resource Definition)を用いた設定方法が主流です。ここでは、クラスタにLinkerdをインストールし、ミラーリング機能を有効にする手順を解説します。

Linkerdのインストール

Linkerd v2をKubernetes環境に導入するには、公式リポジトリからHelmチャートを使用します。以下のコマンドで初期設定を行います。

  1. Helmリポジトリを追加
    bash
    helm repo add linkerd https://linkerd.io/charts
    helm repo update

  2. Linkerdのインストール(クラスタにNamespace linkerdが存在する前提)
    bash
    helm install linkerd/linkerd --namespace linkerd --set profile=ambient

注意事項:
- linkerd namespaceが存在しない場合は、以下のコマンドで作成してください。
bash
kubectl create namespace linkerd

- インストール時にエラーが出る場合、RBAC設定やクラスタバージョンとの互換性を確認し、--dry-runオプションで事前検証を行ってください。


ミラーリング機能を有効化する準備

Linkerdはデフォルトでサービスミラーリングを無効にしています。以下のコマンドで、ConfigMapServiceMonitorなどのリソースを作成し、ミラーリングの基盤となる設定を構築します。

ConfigMapとServiceMonitorの作成手順

  1. Namespaceスコープの設定ファイル(例: mirroring-config.yaml)を作成して適用。

  1. ServiceMonitorリソースの作成
    yaml
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
    name: linkerd-metrics
    namespace: linkerd
    spec:
    endpoints:

    • port: metrics
      path: /metrics
      selector:
      matchLabels:
      app: linkerd-proxy

MirroringポリシーのYAML定義例

サービスミラーリングの動作は、MirroringPolicyリソースで制御されます。以下に代表的なYAMLテンプレートを示します。

トラフィック分割比率の設定方法

トラフィック分割はmirrorRatioパラメータで定義し、0.0〜1.0の範囲で指定可能です。例えば、50%のトラフィックをミラー先へ送信する場合は以下のようになります。

ターゲットサービスの指定方法

ミラーリング先となるターゲットサービスはtargetRefで指定します。以下は、example-serviceというServiceをミラー先として設定する例です。

注意事項:
- targetRefに指定するServiceは、Kubernetesクラスタ内に存在し、Linkerdがアクセスできる必要があります。外部サービスや別のクラスタのリソースはサポートされていません


トラフィック分割の実証テスト手順

ミラーリングポリシーを適用した後、実際にトラフィックが分離されているか確認します。

テスト用ポッドの準備

テストのために、アプリケーションポッドとログ出力ポッドを作成します。以下は簡単なDeployment例です。

リクエスト分離の検証方法

ポリシーを適用後、以下のようにcurlコマンドやkubectl logsで確認します。

  1. ミラーリング先のログチェック
    bash
    kubectl logs -l app=test-app -n default --tail=50

    ミラーされたリクエストは、対象Serviceが処理するため、ログに反映されます。

  2. トラフィック比率の確認
    ポリシーでmirrorRatio: 0.5を設定すると、50%のリクエストがミラー先へ送信されることをテスト用負荷ツールで検証します。

  3. 負荷テストツール例:

    • ab(Apache Benchmark):
      bash
      ab -n 1000 http://test-app.default.svc.cluster.local/

    • wrk:
      bash
      wrk -t4 -c100 -d10s http://test-app.default.svc.cluster.local/


メトリクス監視のベストプラクティス

サービスミラーリングを運用する際には、パフォーマンスや異常検知に向けたメトリクス監視が不可欠です。

Linkerd Dashboardの活用法

Linkerdは組み込みでDashboardを提供しており、以下のように確認できます。

  • ミラーリング経路の遅延(Latency)や成功率(Success Rate)をリアルタイムで監視
  • 特定のServiceに集約されたリクエスト数をグラフ化

Prometheusとの連携設定

LinkerdはPrometheusと連携し、カスタムメトリクスを収集できます。

ServiceMonitor設定例(最新仕様確認済)

確認事項:
Linkerd v2の公式ドキュメントによると、メトリクスポートは9090が標準です。もし誤って指定された場合、Prometheusからの収集に失敗する可能性があります。


実際にクラスタ環境でサービスミラーリングを試してみましょう

本記事で説明した手順に従い、ローカルKubernetes環境(例: minikubeやKind)でサービスミラーリングを検証してください。以下がキックオフの参考情報です。

手順概要とチェックリスト

項目 内容
準備 Docker Desktop for Mac/Windowsにminikubeをインストールし、Linkerdとテスト用アプリケーションをデプロイ
手順 「MirroringポリシーのYAML定義例」で示した設定ファイルを使用して、ミラーリングを有効化
確認方法 kubectl logsやLinkerd Dashboardでトラフィックが分離されているか検証

サービスミラーリングは、Kubernetesにおける安定したリリース戦略の核です。ぜひ実環境で導入し、運用体制を強化してください。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Linkerd