Linkerd

Linkerdによるマイクロサービスの観測とデプロイガイド

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

Linkerdによるマイクロサービス可観測性の概要

LinkerdはKubernetes向けサービスメッシュとして、メトリクス・トレース・ログの統合的な観測機能を提供します。この機能により、複雑化したマイクロサービス環境での障害特定やパフォーマンスモニタリングが劇的に改善されます。特に、Linkerd v2.15以降では、メトリクスの集約やトレースの自動収集をさらに強化し、運用負荷の軽減に貢献しています。以下で具体的な設定手順と導入上のポイントについて説明します。


Linkerdのデプロイメント設定手順

Kubernetes環境でのLinkerd導入には、公式推奨されるHelm chartが用いられます。以下の手順に従って導入を進めることで、安定した観測機能を構築可能です。

Helm chartによるインストール手順

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

  2. パッケージのダウンロードと初期設定
    bash
    helm pull linkerd/linkerd2 --version 2.15.0
    tar -xzf linkerd2-2.15.0.tgz

  3. カスタム設定ファイルの作成(values.yaml)
    yaml
    identity:
    issuer: https://oidc.linkerd.cluster.local
    prometheus:
    metricsPort: 9418


クラスターコンフィギュレーションの基本設定

Linkerdのデプロイには、ConfigMapやRBACなどクラスター全体の設定が不可欠です。以下の表に代表的なパラメータとその目的を示します。

設定項目 内容 必須か
--namespace デプロイ対象のKubernetes名前空間(例: linkerd)
--set controlPlane.replicaCount=3 コントロールプレーンのレプリカ数設定
--set metrics.enabled=true メトリクスアグリゲーションを有効化

注意: 上記の設定値はあくまで一例であり、実際にはクラスタースケールや要求応答時間に応じて調整が必要です。


TLS mutual authenticationの有効化方法

サービス間通信におけるセキュリティ強化には、mTLS(mutual TLS)の導入が不可欠です。Linkerdではこの方式を採用することで、信頼性の高い通信環境を構築できます。

mTLSの仕組みとセキュリティ上の利点

  • mTLSはクライアントとサーバーの両方が証明書で認証し合う方式です。
  • 攻撃者が偽装してサービスにアクセスするリスクを低減します。
  • サービスメッシュ内での通信を暗号化することで、データ漏洩を防ぎます。

LinkerdでのmTLS設定手順

  1. Identity Issuerの設定
    yaml
    kind: IdentityIssuer
    apiVersion: linkerd.io/v1alpha2
    metadata:
    name: default
    spec:
    issuer: https://oidc.linkerd.cluster.local

  2. TLSプロファイルのカスタマイズ
    bash
    linkerd profile apply --name=secure --mtls=true

  3. サービスにmTLSを適用するポリシー設定
    yaml
    kind: Policy
    apiVersion: linkerd.io/v1alpha2
    metadata:
    name: mTLS-enforced
    spec:
    profiles:

    • name: secure

OpenTelemetry連携による分散トレーシング実装

LinkerdはOpenTelemetry Collectorと連携することで、分散トレースを効率的に構築可能です。この統合により、サービス間通信の遅延やエラー経路を可視化するためのデータ収集が可能になります。

OpenTelemetry Collectorとの統合設定

  1. CollectorにLinkerd特有のメトリクス出力設定
    yaml
    receivers:
    otlp:
    protocols:
    grpc:
    endpoint: 0.0.0.0:4317
    processors:
    batch:
    exporters:
    otlphttp:
    endpoint: http://otel-collector:4318/otlp/v1/traces
    service:
    pipelines:
    traces:
    receivers: [otlp]
    processors: [batch]
    exporters: [otlphttp]

  2. Linkerdプロキシにトレースヘッダーの通過を有効化
    bash
    linkerd viz install --set proxy.trace=true


トレースデータの可視化例

Grafana TempoやJaegerなどへ出力することで、サービス間通信の遅延やエラー経路が直感的に把握可能です。以下はTempoへの接続設定の一例です:

導入手順: Tempoを導入するには、Kubernetes Helm chartを使用してデプロイします(公式ドキュメント)。


メトリクスアグリゲーションの最適化手法

Linkerdから収集されるメトリクスは、Prometheusとの連携でリアルタイム分析が可能です。この統合により、サービスのパフォーマンスや運用状況を効率的にモニタリングできます。

Prometheusとの統合設計

  1. Linkerdのメトリクスエンドポイントと接続
    yaml
    scrape_configs:

    • job_name: 'linkerd'
      static_configs:

      • targets: ['linkerd-prometheus:9418']
  2. レート制限による収集効率化

設定 概要
scrape_interval クラスターサイズに応じて10秒〜30秒に設定
max_samples メトリクスのフィルタリングで集約数を制限

高頻度メトリクスのフィルタリング戦略

  • ラベルによるフィルタリング:不要なラベルは削除し、収集対象を絞る。
    yaml
    relabel_configs:

    • source_labels: [name]
      regex: '^(linkerd_proxy_request|linkerd_ksr)'
      action: keep
  • タイムシリーズのアグリゲートsum()avg()を活用し、レコード量を削減。


Grafanaでの可視化構築と実践ケース

Prometheusから収集したLinkerd特有のメトリクスをGrafanaで利用することで、サービス全体の状態が一目で確認できます。

メトリクスダッシュボードの作成手順

  1. GrafanaにPrometheusデータソースを追加
  2. URL: http://prometheus-server:9090(公式ドキュメント)

  3. Linkerdメトリクスから重要な指標を選択

  4. linkerd_proxy_request_duration_millis{service="user-service"}(サービス遅延)
  5. linkerd_proxy_response_code_count{code="5xx", service="payment-service"}(エラーレート)

トレースデータの可視化設定例

  • Tempoでのリクエスト経路表示:特定のトレーサーIDを入力すると、サービス間通信の流れが可視化されます。
  • ダッシュボードに統合する:Grafanaで「Linkerd Metrics」や「OpenTelemetry Traces」のテンプレートをインポートし、複数ソースを結合。

参考: Tempo導入については公式ドキュメントをご覧ください。


公式ドキュメントと設定確認チェックリスト

導入後の運用では、mTLS設定・トレース出力先・メトリクスフィルタリングの3点を週次でレビューすることが推奨されます。詳細な手順や注意事項については、以下をご参照ください。


スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Linkerd