Linkerd

LinkerdでKubernetesマルチクラスター通信を構築する方法

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

Linkerd CLIのインストール手順(v3系)

Linkerd v3系のCLIツールは、公式リポジトリから直接ダウンロードまたはHomebrewで導入できます。macOSやLinux環境に応じた手順を解説します。マルチクラスター環境構築には、Kubernetesクラスタバージョンの上限(例: v1.25以上がサポート終了)を明記することで信頼性が向上します。

Homebrewでの導入方法

Macユーザー向けには以下のように実行してください。

インストール後、linkerd versionでバージョン確認が可能です。v3.1.0以上が推奨です。

注意: Kubernetesクラスタのバージョンはv1.25以上がサポート終了しています。信頼性を確保するため、v1.26以降を使用することを強く推奨します。


サービスミラーリング(SERVICE_MIRROR)構成方法

サービスミラーリングは、複数クラスタ間での通信を円滑に実現するためのLinkerd特有の機能です。ConfigMapを介して設定することで、クラスタごとにサービス情報をミラー化できます。

ConfigMapベースの設定ファイル作成

以下のようにYAMLファイルを作成し、service-mirrorという名前のConfigMapを作成してください。

注意: 設定例に記載されたIPアドレス(10.244.0.x)は、Kubernetesクラスタ内部ネットワーク専用です。外部環境への適用ではDNS名または外部IPアドレスを使用してください。


グローバルセキュリティポリシー設定とmtls認証フロー

マルチクラスター環境では、認証の不一致やセキュリティホールが発生しやすいため、グローバルなセキュリティポリシーの導入が重要です。特に、mtls(相互TLS)による通信暗号化は必須となります。

mtls有効化手順

LinkerdのIdentityコンポーネントをカスタム設定し、クラスタ間で共有する証明書を生成します。以下のようにConfigMapを作成してください。

作成後、linkerd checkコマンドで設定が正しく反映されているか確認してください。mtlsの有効化により、通信時の不正アクセスを防ぐことができます。

証明書生成手順:

  1. OpenSSLを使用してCA証明書と秘密鍵を生成する(例: openssl genrsa -out ca.key 2048)。
  2. CA証明書から証明書署名要求(CSR)を作成し、秘密鍵を用いて署名する(例: openssl req -new -key ca.key -out ca.csr)。

Linkerdによるトラフィック制御の実装とネットワークポリシー設定

トラフィック制御は、Linkerdのproxyコンテナが担当します。NetworkPolicyを使用することで、各クラスタ間での通信ルールを明確化できます。

proxyコンテナのデプロイ設定

proxyコンテナを追加する際には、以下のようにYAMLファイルを作成してください。

この設定により、各Podにproxyコンテナが自動で追加されます。

クラスタ間通信のネットワークポリシー:

  • クラスタAからクラスタBへの通信を許可するには、NetworkPolicyのingressegressに適切なCIDRやNS選択器を設定してください。
  • 詳細な設定例については、Kubernetes NetworkPolicy公式ドキュメントを参照してください。

Linkerd v3系におけるクラスター対応仕様

Linkerd v3系は、マルチクラスタ環境での運用に特化した仕様を提供しています。特にmulticluster namespaceのサポートが重要です。

multicluster namespaceの活用方法

以下のようにYAMLファイルを作成し、Namespaceにlinkerd.io/multicluster: "true"というアノテーションを追加してください。

この設定により、複数クラスタ間でNamespaceの共有が可能になります。

サポートされている機能一覧:

項目 説明
multicluster namespace 複数クラスタでのNamespace共有を実現
サービス発見 クラスタ間でサービス名を自動解決
トラフィックルーティング ロードバランシングやファイングレインな制御

本番環境でのマルチクラスター通信テスト手順

導入後の動作確認は必須です。テスト用Podをデプロイし、跨クラスタ通信が正しく機能しているか検証してください。

テスト用Podのデプロイ手順

以下のようにYAMLファイルを作成し、PodをクラスタAにデプロイします。

次に、クラスタBからこのPodにアクセスして通信が可能か確認してください。curl http://test-pod-aのようなコマンドで検証できます。


まとめ

  • Kubernetesクラスタバージョンはv1.26以上を推奨(v1.25以上はサポート終了)
  • Linkerd CLIのインストール手順(v3系): Homebrewまたは公式リポジトリからダウンロード
  • サービスミラーリング(SERVICE_MIRROR): ConfigMapを使用してクラスタ情報を設定
  • mtls認証: グローバルセキュリティポリシーにより通信を保護
  • ネットワークポリシー: Linkerdのproxyコンテナでトラフィック制御を実現

上記手順に従うことで、信頼性のあるマルチクラスター環境を構築できます。導入後は本番環境での通信テストを忘れずに実施してください。


スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Linkerd