Linkerd

Linkerdで構築するKubernetesマルチクラスタ環境の設定ガイド

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

Linkerdによるマルチクラスター環境構築の概要

KubernetesとLinkerdは、マイクロサービスアーキテクチャを支える基盤として密接に関係しています。Linkerdはサービスメッシュとして機能し、ネットワーク通信のモニタリングやセキュリティ強化を行うことで、マルチクラスター環境におけるトラフィック制御を簡略化します。一方で、複数クラスター間での通信に伴う課題(例:認証不一致・ポリシーの分散管理)は、Linkerdが提供するグローバルなセキュリティ設定統一されたトラフィック制御機能により解決可能です。本記事では、初心者向けにステップバイステップでマルチクラスター環境を構築する方法を解説します。


準備する前提条件と必要なツール

マルチクラスター構成の実装には、事前の環境整備が不可欠です。以下に必要な前提条件と選定すべきツールを整理しました。

Kubernetesクラスターの事前確認

  • 2つ以上のKubernetesクラスター(例:AWS EKS、GCP GKE)を用意する
  • 各クラスター間でネットワークポリシーが通じる状態を確認する(CIDR重複の回避など)

Linkerdのバージョン選定

バージョン 特徴 推奨用途
Linkerd 2.15以上 mTLSサポート強化、グローバルなシークレット管理機能搭載 新規導入推奨
Linkerd 2.14以下 クラスター外へのメッシュ拡張が限定的 継続運用時の保守

注意: Linkerdのバージョンはクラスター構成や利用するKubernetesバージョンに合わせて選定し、公式ドキュメントで互換性を確認してください。


TLSとRBACの認証設定

セキュアな通信環境を構築するには、TLSによる暗号化とRBAC(ロールベースアクセス制御)の適切な設定が不可欠です。以下に手順を示します。

証明書の発行手順

  1. 証明機関(CA)の準備: 自社CAまたはLet's Encryptを使用し、クラスタ間通信用の証明書を発行します。
  2. Let's Encryptの場合、以下のようにcertbotコマンドで証明書を取得可能です:
    bash
    certbot certonly --standalone -d example.com

  3. 秘密鍵と証明書の配置: 各クラスターに/etc/linkerd/tls.crt/etc/linkerd/tls.keyとして保存し、読み取り専用でセキュリティグループを制限します。

  4. 注意: 証明書ファイルのパーミッションはchmod 600 /etc/linkerd/*.crt && chmod 600 /etc/linkerd/*.keyで設定してください。

ロールベースアクセス制御(RBAC)の定義

  • Linkerdサービスアカウントに適切な権限を付与:
    yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: linkerd-cluster-role
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: edit
    subjects:
  • kind: ServiceAccount
    name: linkerd
    namespace: linkerd

ポイント: cluster-adminは過剰な権限を付与するため、セキュリティリスクがあります。editviewなどの限定的なロールを使用してください。


mTLSの有効化とセキュリティ設定

mTLS(Mutual TLS)は、通信の両側で証明書を交換する技術であり、マルチクラスター環境では必須です。以下に導入手順を示します。

mTLSの概要と導入意義

  • 従来のTLSとの違い: クライアント側にも証明書が求められ、通信相手の信頼性検証が可能になります。
  • セキュリティ恩恵: 中間者攻撃や不正なサービス間通信を防ぎます。

リンクードドメイン間通信の暗号化

  1. mTLS設定ファイルの作成:
    yaml
    apiVersion: linkerd.io/v1alpha2
    kind: Identity
    metadata:
    name: default
    namespace: linkerd
    spec:
    issuerRef:
    name: cluster-issuer
    kind: ClusterIssuer

  2. 証明書の検証プロセス:

  3. 各クラスターにlinkerd-identityリソースを配置し、mTLS証明書交換フローが自動化されるようにします。
  4. ログで"tls: handshake failure"というエラーが出る場合は、証明書の有効期限やIssuerの設定を確認してください。

proxy.defaultInboundPolicyの設定方法

Linkerdのproxy.defaultInboundPolicyは、デフォルトで受信通信を制御するネットワークポリシーです。以下に具体的な設定手順と例を示します。

デフォルトインバウンドポリシーの概要

  • クラスター内で任意のサービスが他クラスターへのアクセスを許可できる状態(allow-all)には、悪意のあるアクセスが侵入するリスクがあります。
  • deny-by-defaultに設定することで、明示的なポリシーがない限り通信を制限できます。

ネットワークポリシーの適用例

補足: この設定は、クラスター全体に適用されます。一部サービスだけを除外する場合はNetworkPolicyリソースで個別に定義してください。


LinkerdとAmbassador/Rancherの連携

Linkerdは他のKubernetes管理ツール(例:Ambassador、Rancher)とも連携可能です。以下に手順を比較します。

Ambassadorでの統合手順

  1. Ambassadorのデプロイ: ambassador namespaceでambassador/ambassadorイメージを使用し、Linkerdと通信するためのServiceMeshアダプターを有効化します。
  2. 注意: 画像名は最新バージョンに更新される可能性があるため、公式ドキュメントで確認してください。
  3. 設定ファイルの差分比較:
項目 Ambassador標準 Linkerd追加設定
meshConfig なし enableProxy: true を定義

Rancher管理クラスターとの接続方法

  1. RancherのKubernetesバージョン確認: v2.6以上が推奨です。
  2. Linkerdリソースの自動デプロイ: Rancherのカタログ・アプリケーションからLinkerdをインストールすると、セキュリティポリシーが自動で設定されます。

実践例: Rancher + Linkerdでは、Rancherのcluster-adminロールにlinkerdサービスアカウントを追加することで、一括管理が可能になります。ただし、権限過剰を避けるため、最小限の権限で運用してください


よくある問題とトラブルシューティング

マルチクラスター環境構築時に発生する一般的な問題とその解決策を解説します。

認証失敗時のログ解析

  • エラーメッセージ例: "authentication required" or "tls: no valid certificate found"
  • 対処方法:
  • 各クラスターの/etc/linkerd/tls.crtファイルを確認し、証明書が正しく配置されているか
  • kubectl logs <pod-name> -n linkerdでLinkerdコンテナログから詳細なエラー情報を取得。

ポリシー適用時のエラーメッセージ対処

  • : "NetworkPolicy denied connection"
  • 対応策:
    bash
    kubectl get networkpolicy -A | grep <service-name>

    対象サービスにNetworkPolicyが設定されている場合、linkerd.io/inbound-policy: allowを明示的に記述してください。

まとめ

  • TLSとRBACの厳密な管理はセキュリティの基盤となる
  • mTLS有効化でマルチクラスター通信の信頼性が向上
  • proxy.defaultInboundPolicyを適切に設定してネットワークリスクを抑える
  • AmbassadorやRancherとの連携により、管理負荷を低減可能

実務での導入においては、検証環境で設定を試したうえで本番クラスターへ展開することをおすすめします。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Linkerd