Linkerd

Linkerd導入ガイド:Kubernetesサービスメッシュ構築ステップバイステップ

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

Linkerd 日本語導入ガイド 初心者ステップバイステップ:Kubernetes環境でサービスメッシュを構築する

Linkerdは、安全性と信頼性に特化したサービスメッシュとして注目を集めています。Linkerd 日本語導入ガイド 初心者ステップバイステップでは、KubernetesクラスターへのCLI/Helmによる導入フローを中心に、実践的な手順を解説します。本記事で得られる知識は、DevOpsエンジニアが現環境でサービスメッシュの基本機能を体験するための基盤となるでしょう。


Kubernetes基礎知識:初心者向けに必要な前提概念

Kubernetes環境でのLinkerd導入には、いくつかの前提知識が不可欠です。特にノード・名前空間・Helmといったキーワードの理解が重要です。以下で簡潔に解説します。

ノード(Node)とは

  • Kubernetesクラスターに物理/仮想マシンとして参加する計算リソース
  • kubectl get nodesで状態(Ready/NotReady)やバージョンを確認できる

名前空間(Namespace)とは

  • 複数のユーザー・プロジェクトが共存する際の境界線
  • リソース管理に役立ち、--namespaceフラグで指定可能

Helmとは

  • Kubernetesリソースをテンプレート化して一括デプロイ可能なパッケージマネージャ
  • カスタマイズ可能なパラメータを持つチャート(Chart)を用いる

mTLSとサービスメッシュの関係性:初心者向けにわかりやすく解説

mTLSとは何か?

mTLS(Mutual Transport Layer Security)は、クライアントとサーバー間で双方向認証を行う暗号通信プロトコルです。通常のTLSではサーバーのみが証明書を保持しますが、mTLSでは両者が証明書を交換し、お互いの信頼性を確認することで安全性を高めます。

なぜサービスメッシュで重要なのか?

  • クラスタ内通信(Pod間)の暗号化と認証を自動化
  • 実装コストゼロでセキュリティ強化が可能
  • 外部接続時の証明書管理の負担軽減

重要ポイント
mTLSはサービスメッシュの核となる機能です。Linkerdではデフォルトで有効化されており、自動ローテーションによってセキュリティリスクを最小限に抑えています。


Linkerd導入前の準備: Kubernetes環境の確認

LinkerdのインストールにはまずKubernetesクラスター環境が必須です。このセクションでは、手順を開始する前に確認すべき点と前提条件を整理します。

kubectlのインストール確認

Kubernetes操作に不可欠なkubectlコマンドが正しく動作しているかを事前に確認してください。以下のコマンドでバージョン確認が可能です。

出力されるクライアントとサーバーのバージョンが一致しない場合、クラスター接続に問題が生じる可能性があります。最新版のインストールについてはkubectl公式ドキュメントを参照してください。


Kubernetesクラスター構築の前提条件

LinkerdはKubernetes v1.20以降で動作します。クラスターが既存の場合、kubectl get nodesでノード情報が表示されることを確認してください。以下が正常な出力例です。

クラスターが新規構築の場合、minikubekubeadmといったツールを活用してください。導入環境に応じた手順は別途確認が必要です。


CLI vs Helm: インストール方法比較

LinkerdのインストールにはCLIとHelmチャートの2つの方法があります。それぞれの特徴を比較し、適切な選択肢を選ぶポイントを解説します。

なぜCLIかHelmか?初心者向けの判断基準

  • CLIは手順がシンプルで導入初期に最適
  • Helmはカスタマイズ性が高く、複数環境管理やチーム開発に適す

CLIによる手動インストール手順

CLIでの導入はシンプルなコマンドで完了しますが、手動設定が必要です。以下の手順に従ってください。

  1. Linkerdのリポジトリを追加
    bash
    curl --proto '=https' --tlsv1.2 -sSf https://linkerd.io/install.sh | sh

    このコマンドでlinkerd CLIがインストールされます。

  2. クラスターへの初期化
    bash
    linkerd install > linkerd-config.yaml
    kubectl apply -f linkerd-config.yaml

    管理用リソース(ConfigMapやDeployment)が自動生成されます。

  3. インストール完了確認
    bash
    linkerd check

    すべての項目に「✅」印が出れば正常です。

利点: 手順がシンプルで、導入初期においては理解しやすい
注意点: スケーリングや拡張性を考慮する場合はHelmが推奨


Helmチャートを使用した自動インストール

Helmチャートでは、テンプレートとパラメーターを活用して一括でデプロイできます。以下が手順です。

  1. Helmのインストール
    bash
    curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

  2. Linkerd Helmチャートの追加
    bash
    helm repo add linkerd https://helm.linkerd.io/stable
    helm repo update

  3. インストール実行
    bash
    helm install linkerd2 linkerd/linkerd2 --namespace linkerd --create-namespace

  4. 完了確認
    bash
    kubectl -n linkerd get pods

    linkerd-controllerlinkerd-prometheusのPodが起動していることを確認してください。

利点: スケーリング時やリソース管理に最適
注意点: パラメータ設定を誤ると、ネットワーク通信に影響が出る可能性


CLIとHelmの比較表

項目 CLI Helmチャート
導入手順 手動コマンド テンプレート使用
リソース管理 簡易的 柔軟性あり
パラメータ調整 制限あり 多様なカスタマイズ
運用性 個人向けに適する チームでの運用に適

サービスメッシュプロキシの挿入確認

Linkerdはサービス通信を制御するために「プロキシ」をPod内に自動注入します。ここでは、linkerd injectコマンドで動作が確認できます。

linkerd inject コマンドの実行手順

  1. テスト用アプリケーションの作成
    bash
    kubectl apply -f https://raw.githubusercontent.com/linkerd/linkerd2/main/manifests/examples/helloworld.yaml

  2. プロキシ注入処理を適用
    bash
    kubectl get pods helloworld-86754c49df-2j9gk -o yaml | linkerd inject - | kubectl apply -f -

    これにより、linkerd-proxyがPodに追加されます。

  3. 注入後の状態確認
    bash
    kubectl describe pod helloworld-86754c9df-2j9gk

    出力結果にlinkerd-proxyというコンテナ名が表示されれば成功です。


Podにプロキシが正常に組み込まれた検証方法

  1. Podの詳細確認
    bash
    kubectl get pods helloworld-86754c9df-2j9gk -o jsonpath='{.spec.containers[*].name}'

    出力例: helloworld linkerd-proxy

  2. ログ確認(オプション)
    bash
    kubectl logs helloworld-86754c9df-2j9gk -c linkerd-proxy


可視化ダッシュボード(viz)の導入

Linkerdのviz拡張によって、サービス通信の可視化が可能です。以下にインストール手順とアクセス方法を解説します。

vizチャートのインストール

  1. vizチャートの追加
    bash
    helm repo add linkerd-viz https://helm.linkerd.io/stable
    helm repo update

  2. インストール実行
    bash
    helm install linkerd-viz linkerd-viz/linkerd-viz --namespace linkerd --create-namespace

  3. Dashboardアクセス
    インストール後、kubectl get svc -n linkerdでサービス情報が確認できます。linkerd-viz-dashboardというサービスが作成されます。

  4. ブラウザでのアクセス
    bash
    kubectl port-forward svc/linkerd-viz-dashboard -n linkerd 9091:9091

    http://localhost:9091にアクセスし、サービスの依存関係やネットワーク遅延を確認してください。


メトリクス視認性の検証方法

  • メトリクスダッシュボード:
  • サービスごとのリクエスト数、成功率、遅延などのデータが表示されます。
  • メトリクス取得コマンド例:
    bash
    kubectl get metrics --namespace default

mTLS自動ローテーションの初期設定

LinkerdはデフォルトでmTLSを有効にしています。このセクションでは、信頼されたカットオフポリシーと自動証明書更新メカニズムについて解説します。

信頼されたカットオフポリシーの設定

  • 自動更新:
  • linkerd install時に--set global.tls.autoGenerate=trueを指定すると、証明書が1年間有効になります。
  • 手動更新(例):
    bash
    kubectl delete secret linkerd-webhook-server-tls -n linkerd

    linkerd installで再生成するか、カスタム証明書を指定可能です。

注意点
Linkerdの最新バージョンでは自動更新周期が変更されている可能性があります。公式ドキュメントで確認してください。


セキュリティ証明書の自動更新メカニズム

  1. 自動更新の仕組み:
  2. 証明書は1年ごとにローテーションされます。
  3. 手動介入要否:
  4. 通常の運用では介入は不要ですが、証明書発行機関(CA)が変更になった場合などは管理が必要です。

導入後確認事項とトラブルシューティング

Linkerd導入後のチェックポイントとよくあるエラー例を整理します。ここでの手順に従うことで、初期の問題を迅速に対応できます。

基本的なサービス動作テスト

  • アプリケーションの動作確認:
    bash
    curl -v http://helloworld.default.svc.cluster.local:8080

    レスポンスがHello world!と表示されるかを確認してください。

  • 通信経路の確認:
    bash
    kubectl get pod helloworld-86754c9df-2j9gk -o jsonpath='{.status.podIP}'


よくあるエラー例と対処法

エラータイプ 対応手順
Linkerdコントローラーが起動しない kubectl describe pod -n linkerdでログを確認し、リソース配分やポリシーの設定を再検証
プロキシ注入失敗 テンプレートファイルに誤りがないか再確認
Dashboardアクセス不可 kubectl port-forwardが正しく実行されているか確認

まとめ

  • Linkerd導入の準備は、Kubernetes環境とCLI/Helmツールの確認から始める
  • CLIは手軽さを重視し、Helmはチームでの運用に適す
  • linkerd injectでPodにプロキシが正しく挿入されているかを検証する
  • vizチャートによりサービスの可視化が可能
  • mTLSによる自動ローテーション設定でセキュリティ強化が図れる
  • インストール後のテストとエラー対応は、導入成功の鍵となる

本ガイドに従ってLinkerdを導入し、サービスメッシュの基本機能を実際に体験してみてください。操作性と信頼性が得られることで、DevOpsエンジニアとしてのスキルアップにもつながるでしょう。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Linkerd