Contents
Linkerd CLIのインストール手順(v3系)
Linkerd v3系のCLIツールは、公式リポジトリから直接ダウンロードまたはHomebrewで導入できます。macOSやLinux環境に応じた手順を解説します。マルチクラスター環境構築には、Kubernetesクラスタバージョンの上限(例: v1.25以上がサポート終了)を明記することで信頼性が向上します。
Homebrewでの導入方法
Macユーザー向けには以下のように実行してください。
|
1 2 |
brew install linkerd/linkerd/linkerd |
インストール後、linkerd versionでバージョン確認が可能です。v3.1.0以上が推奨です。
注意: Kubernetesクラスタのバージョンはv1.25以上がサポート終了しています。信頼性を確保するため、v1.26以降を使用することを強く推奨します。
サービスミラーリング(SERVICE_MIRROR)構成方法
サービスミラーリングは、複数クラスタ間での通信を円滑に実現するためのLinkerd特有の機能です。ConfigMapを介して設定することで、クラスタごとにサービス情報をミラー化できます。
ConfigMapベースの設定ファイル作成
以下のようにYAMLファイルを作成し、service-mirrorという名前のConfigMapを作成してください。
|
1 2 3 4 5 6 7 8 9 10 11 |
apiVersion: v1 kind: ConfigMap metadata: name: service-mirror data: clusters: | - name: cluster-a address: example-cluster-a.example.com # 外部環境への適用時はDNS名またはIPアドレスを使用 - name: cluster-b address: example-cluster-b.example.com |
注意: 設定例に記載されたIPアドレス(10.244.0.x)は、Kubernetesクラスタ内部ネットワーク専用です。外部環境への適用ではDNS名または外部IPアドレスを使用してください。
グローバルセキュリティポリシー設定とmtls認証フロー
マルチクラスター環境では、認証の不一致やセキュリティホールが発生しやすいため、グローバルなセキュリティポリシーの導入が重要です。特に、mtls(相互TLS)による通信暗号化は必須となります。
mtls有効化手順
LinkerdのIdentityコンポーネントをカスタム設定し、クラスタ間で共有する証明書を生成します。以下のようにConfigMapを作成してください。
|
1 2 3 4 5 6 7 8 9 |
apiVersion: v1 kind: ConfigMap metadata: name: linkerd-identity data: mtls: | - ca: /etc/linkerd/identity/ca.crt key: /etc/linkerd/identity/ca.key |
作成後、linkerd checkコマンドで設定が正しく反映されているか確認してください。mtlsの有効化により、通信時の不正アクセスを防ぐことができます。
証明書生成手順:
- OpenSSLを使用してCA証明書と秘密鍵を生成する(例:
openssl genrsa -out ca.key 2048)。 - CA証明書から証明書署名要求(CSR)を作成し、秘密鍵を用いて署名する(例:
openssl req -new -key ca.key -out ca.csr)。
Linkerdによるトラフィック制御の実装とネットワークポリシー設定
トラフィック制御は、Linkerdのproxyコンテナが担当します。NetworkPolicyを使用することで、各クラスタ間での通信ルールを明確化できます。
proxyコンテナのデプロイ設定
proxyコンテナを追加する際には、以下のようにYAMLファイルを作成してください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
apiVersion: apps/v1 kind: DaemonSet metadata: name: linkerd-proxy spec: selector: matchLabels: app: linkerd-proxy template: metadata: labels: app: linkerd-proxy spec: containers: - name: proxy image: linkerd/proxy:latest |
この設定により、各Podにproxyコンテナが自動で追加されます。
クラスタ間通信のネットワークポリシー:
- クラスタAからクラスタBへの通信を許可するには、NetworkPolicyの
ingressとegressに適切なCIDRやNS選択器を設定してください。 - 詳細な設定例については、Kubernetes NetworkPolicy公式ドキュメントを参照してください。
Linkerd v3系におけるクラスター対応仕様
Linkerd v3系は、マルチクラスタ環境での運用に特化した仕様を提供しています。特にmulticluster namespaceのサポートが重要です。
multicluster namespaceの活用方法
以下のようにYAMLファイルを作成し、Namespaceにlinkerd.io/multicluster: "true"というアノテーションを追加してください。
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Namespace metadata: name: shared-namespace annotations: linkerd.io/multicluster: "true" |
この設定により、複数クラスタ間でNamespaceの共有が可能になります。
サポートされている機能一覧:
| 項目 | 説明 |
|---|---|
| multicluster namespace | 複数クラスタでのNamespace共有を実現 |
| サービス発見 | クラスタ間でサービス名を自動解決 |
| トラフィックルーティング | ロードバランシングやファイングレインな制御 |
本番環境でのマルチクラスター通信テスト手順
導入後の動作確認は必須です。テスト用Podをデプロイし、跨クラスタ通信が正しく機能しているか検証してください。
テスト用Podのデプロイ手順
以下のようにYAMLファイルを作成し、PodをクラスタAにデプロイします。
|
1 2 3 4 5 6 7 8 9 |
apiVersion: v1 kind: Pod metadata: name: test-pod-a spec: containers: - name: test-container image: nginx |
次に、クラスタBからこのPodにアクセスして通信が可能か確認してください。curl http://test-pod-aのようなコマンドで検証できます。
まとめ
- Kubernetesクラスタバージョンはv1.26以上を推奨(v1.25以上はサポート終了)
- Linkerd CLIのインストール手順(v3系): Homebrewまたは公式リポジトリからダウンロード
- サービスミラーリング(SERVICE_MIRROR): ConfigMapを使用してクラスタ情報を設定
- mtls認証: グローバルセキュリティポリシーにより通信を保護
- ネットワークポリシー: Linkerdのproxyコンテナでトラフィック制御を実現
上記手順に従うことで、信頼性のあるマルチクラスター環境を構築できます。導入後は本番環境での通信テストを忘れずに実施してください。