はじめに
Kubernetesの利用が進むと、単一クラスタではなく複数クラスタ(マルチクラスタ)での運用が一般的になります。
- リージョン分散(東京・大阪など)
- 環境分離(prod / staging / dev)
- 組織単位のクラスタ分割
このような環境では、単一クラスタ向けOperatorでは不十分となり、マルチクラスタ対応Operatorが必要になります。
本記事では、マルチクラスタOperatorの設計パターンと実装戦略を解説します。
1. マルチクラスタOperatorとは?
複数のKubernetesクラスタを横断して、リソースを一元管理・制御するOperatorです。
基本構造
管理クラスタ(Control Plane) ↓ Operator ↓ 複数クラスタ(Target Clusters)
1つのOperatorが複数クラスタに対してReconcileを行います。
2. 設計パターン(重要)
① Hub & Spokeモデル(最も一般的)
Hub Cluster
│
┌───────┼────────┐
↓ ↓ ↓
ClusterA ClusterB ClusterC
- 中央クラスタにOperatorを配置
- 各クラスタへAPI経由で操作
特徴
- 管理が一元化される
- ネットワーク設計が重要
② Federationパターン
Kubernetes Federation(KubeFed)を利用してリソースを同期します。
- Deploymentを複数クラスタに展開
- クラスタ間で状態を同期
ただし現在は利用ケースが限定的です。
③ Agent型(Push / Pullモデル)
Push型
- 中央Operatorが各クラスタに直接指示
Pull型(推奨)
- 各クラスタにAgentを配置
- Agentが中央のDesired Stateを取得
Central API ↓ Agent(各クラスタ) ↓ ローカルリソース作成
3. kubeconfig管理(複数クラスタ接続)
Operatorは複数クラスタへ接続するため、複数のkubeconfigを扱います。
configs := []*rest.Config{ configClusterA, configClusterB, }
controller-runtimeではクライアントをクラスタごとに生成します。
clientA, _ := client.New(configA, client.Options{}) clientB, _ := client.New(configB, client.Options{})
4. マルチクラスタReconcile設計
通常のReconcileに加えて、「どのクラスタに適用するか」を管理します。
例:CRD設計
spec: clusters: - name: cluster-a - name: cluster-b replicas: 3
Reconcileイメージ
for each cluster: desired = spec actual = cluster state reconcile
5. 状態管理(Statusの拡張)
マルチクラスタでは状態も分散するため、statusを拡張します。
status: clusters: - name: cluster-a readyReplicas: 3 - name: cluster-b readyReplicas: 2
これにより、クラスタごとの状態を可視化できます。
6. エラーハンドリング戦略
- クラスタ単位で失敗を分離
- 部分成功を許容
- リトライはクラスタ単位で実行
if err != nil { log.Error(err, "cluster failed", clusterName) continue }
7. ネットワークとセキュリティ設計
接続方式
- VPN / VPC Peering
- PrivateLink / Service Mesh
認証
- ServiceAccount + RBAC
- OIDC連携
最小権限を徹底することが重要です。
8. スケーラビリティ設計
- クラスタ数に比例して負荷増加
- 並列Reconcileの制御
MaxConcurrentReconciles: 10
キュー制御とバックオフが重要です。
9. GitOpsとの統合(実務で重要)
マルチクラスタではGitOpsとの併用が非常に有効です。
構成
Git Repository ↓ ArgoCD / Flux ↓ 各クラスタ ↓ Operatorが補完処理
- 宣言的管理はGit
- 動的制御はOperator
10. 実務ベストプラクティス
- Hub & Spoke + Agent型の併用
- クラスタ単位の独立性を維持
- 障害時の影響範囲を限定
- 監視(Prometheus + Grafana)必須
11. ユースケース
- グローバルアプリのデプロイ
- マルチリージョンDB管理
- セキュリティポリシーの一括適用
- マルチテナント環境
まとめ
- マルチクラスタではOperatorの設計が重要
- Hub & Spokeが基本パターン
- Statusとエラー設計が鍵
- GitOpsとの統合で運用が安定
マルチクラスタOperatorは、Kubernetesを分散システム基盤へ進化させる中核技術です。