「マルチテナント用に Kubernetes を構成する方法」という質問に答えるとき、アーキテクトはまず、使用可能な概念の境界と分離モデルを理解する必要があります。 AKS のマルチテナントは、共有 Kubernetes クラスターで、異なるチーム、アプリケーション、または顧客に属する複数の分離されたワークロードを実行する方法です。 この記事では、Azure Kubernetes Service (AKS)でのマルチテナントの主要な概念とアーキテクチャ モデルについて詳しく説明します。
Tip
AKS の 3 つのマルチテナント モデルは何ですか? AKS マルチテナントは、名前空間の分離、ノード プールの分離、テナントごとのクラスターという 3 つの一般的なモデルを備えた分離スペクトルを使用します。 名前空間の分離は、信頼された内部チームと最大のコスト効率に最適です。ノード プールの分離により、中程度のオーバーヘッドでワークロードの分離が強化され、テナントごとのクラスターは、信頼されていないシナリオまたは高度に規制されたシナリオに対して最も強力な分離を提供します。
ステップ バイ ステップの実装手順と YAML マニフェストについては、コンパニオン ガイドの 「AKS でのマルチテナントのベスト プラクティス」を参照してください。
AKS でのマルチテナントの理由
マルチテナントを使用すると、複数のチーム、アプリケーション、または顧客が 1 つの Kubernetes クラスターを共有できます。 AKS でのマルチテナントの主な根拠は、 コスト効率 と 運用スケールです。
すべてのアプリケーションまたはチームに対して専用クラスターを実行すると、リソースの断片化、アイドル状態のコンピューティング容量、およびコントロール プレーンのオーバーヘッドが増加します。 ワークロードをマルチテナント クラスターに統合することで、組織はリソース使用率を最大化し、クラウド支出を削減します。 運用上、マルチテナントによってフリートのサイズが小さくなり、プラットフォーム チームのパッチ、アップグレード、監視、セキュリティ保護を行うクラスターが少なくなり、ライフサイクル管理が合理化されます。
ソフトテナントとハードマルチテナントの違いは何ですか?
Kubernetes は本質的にマルチテナント システムではありません。 マルチテナントを実現するには、テナント間の信頼レベルに基づいて"ソフト" または "ハード" 分離モデルを設計する必要があります。
Kubernetes のソフト マルチテナントとハード マルチテナントの違いは、主に信頼モデルとその結果の分離要件です。 ソフト マルチテナントは、信頼された内部テナントを想定し、名前空間、RBAC、クォータなどの論理制御による偶発的な干渉を防ぐことに重点を置いています。 ハード マルチテナントでは、テナント間の信頼が低いかゼロであると想定され、悪意のあるアクセス、横移動、データ公開のリスクを軽減するために、より強力な分離制御が必要です。
| Model | 信頼レベル | ゴール | 利用シーン | シナリオの例 |
|---|---|---|---|---|
| ソフトマルチテナンシー | 内部テナント間の高信頼 | 偶発的な干渉、リソース不足、構成の競合を防ぐ | チームがインフラストラクチャを共有する内部プラットフォーム環境 | 開発/テストおよび内部サービス用の AKS クラスターを共有する 1 つの組織内の複数の製品チーム |
| ハードマルチテナンシー | テナント間の低信頼またはゼロ信頼 | 悪意のある攻撃、横移動、データ流出を防ぐ | 外部の顧客ホスティングと規制されたワークロード | テナントの分離がセキュリティとコンプライアンスの要件である顧客固有のワークロードをホストする SaaS プロバイダー |
分離スペクトル
AKS のマルチテナントはバイナリの選択肢ではありません。それはスペクトル上に存在します。 さまざまな範囲を移動すると、分離が増加しますが、運用の複雑さとコストも増加します。 このスペクトルは、マルチテナント クラスター設計のための整理スパインを形成します。
- 名前空間の分離 (論理): テナントは同じノード プールとコントロール プレーンを共有しますが、Kubernetes 名前空間によって論理的に分離されます。 これがソフト マルチテナントの基礎です。
- ノード プールの分離 (物理コンピューティング):テナントはコントロール プレーンを共有しますが、専用ワーカー ノードが割り当てられます。 これにより、ワークロードの分離とノイズの多い近隣の軽減策が向上しますが、コントロール プレーンとクラスター レベルのコンポーネントは引き続き共有されるため、テナントの分離は完全ではありません。
- テナントごとのクラスター (完全な物理): テナントは、独自の AKS コントロール プレーンとデータ プレーンで完全に分離されます。 これは、ハード マルチテナントの究極の形式であり、kubernetes レベルの共有を効果的にバイパスして、Azureレベルの分離を優先します。
マルチテナンシー向けの AKS のプリミティブ
AKS には、分離スペクトルを適用するためのネイティブおよびAzure統合プリミティブのスイートが用意されています。
- Microsoft Entra ID: ユーザーと自動システムを Kubernetes API に認証するための一元化された ID とアクセス管理を提供します。
- Azure RBAC: Microsoft Entra ID ID を Kubernetes のアクセス許可にマップし、テナントが承認されたリソースにのみアクセスできるようにします。
- マネージド名前空間: クラスター内の論理境界を提供して、テナント リソースをグループ化し、クォータを適用し、アクセスをスコープします。
- Azure Policy/ゲートキーパー: テナントが安全でない構成または未承認の構成をデプロイできないように、クラスター全体で一元的なコンプライアンスとガバナンス規則を適用します。
- Azure CNI: AKS ネットワークのネイティブ仮想ネットワーク統合を提供し、ネットワーク ポリシー制御によるテナント トラフィックのセグメント化をサポートします。 ポッドの IP 動作は、選択した CNI モード ( オーバーレイ や ポッド サブネットなど) によって異なります。
- Azure Container Networking Services (ACNS) Cilium L7: テナント ネットワーク トラフィックを厳密に分離するために、高パフォーマンスの eBPF ベースのネットワーク ポリシーとレイヤー 7 トラフィック フィルタリングを提供します。
- ワークロード ID: 個々のポッドがフェデレーション ID を使用して外部Azure サービスに対して安全に認証できるようになり、テナント間の共有シークレットが排除されます。
平面間での分離レイヤーのマッピング
セキュリティで保護されたマルチテナント アーキテクチャを構築するには、クラスター環境の 3 つの異なるプレーンに AKS プリミティブを適用する必要があります。
| 平面 | Description | 適用された AKS プリミティブ |
|---|---|---|
| コントロール プレーン | Kubernetes API サーバーと論理境界へのアクセスをセキュリティで保護する。 | Microsoft Entra ID、Azure RBAC、マネージド名前空間 |
| データ プレーン | ネットワーク トラフィック、コンピューティング実行、ノード レベルの境界をセキュリティで保護する。 | Azure CNI、ACNS Cilium L7、ノード プール |
| リソース層 | コンピューティング消費量、外部アクセス、および構成コンプライアンスの管理。 | Azure Policy、ワークロード ID |
どの分離モデルを選択する必要がありますか?
次のマトリックスを使用して、組織の要件に最も適した分離スペクトル上のポイントを判断します。
| 分離モデル | セキュリティ レベル | コスト効率 | 操作の複雑さ | に最適 |
|---|---|---|---|---|
| テナントごとの名前空間 | 低~中(論理) | 高 (最大共有) | 低(管理対象は単一クラスター) | 内部チーム、開発・テスト環境、ソフトマルチテナンシー。 |
| テナントごとのノードプール | High (分離されたコンピューティング) | 中 (共有コントロールプレーン) | 中 (テイント/容認の管理) | コントロールプレーンを共有しながら、より強力なコンピュート分離を必要とする内部および外部のワークロード向け。敵対的なゼロトラストのテナンシーには適していません。 |
| テナントごとのクラスター | 最高 (物理) | 低 (オーバーヘッドが高い) | 高(車両管理が必要) | 敵対的なマルチテナント、外部企業のお客様、ゼロトラスト。 |
各モデルを使用する場合
- テナントが内部または信頼されていて、コスト効率が優先され、論理的な分離制御で十分な場合は、テナントごとの名前空間を使用します。
- 1 つの AKS コントロール プレーンを共有しながら、より強力なコンピューティング分離とノイズネイバーへの影響を軽減する必要がある場合は、テナントごとのノード プールを使用します。
- テナントが信頼されていない場合、規制の境界が厳しい場合、またはリスク モデルで最小限の共有インフラストラクチャが必要な場合は、テナントごとのクラスターを使用します。
次のステップ
マルチテナントの概念モデルとプリミティブを理解したら、実装ガイドに進み、これらの概念をクラスターに適用します。
結論
- Azure Kubernetes Service (AKS)のマルチテナントは、共有 Kubernetes インフラストラクチャで複数の分離されたテナント ワークロードを実行してコストを削減し、運用を簡素化する方法です。
- テナントごとの名前空間は、論理境界を適用しながらインフラストラクチャの共有を最大化するため、信頼された内部ワークロードにとって最もコスト効率の高いモデルです。
- テナントごとのノード プールでは、コンピューティングの分離とノイズの多い近隣の制御が向上しますが、AKS コントロール プレーンとその他のクラスター レベルのコンポーネントは引き続き共有されます。
- テナントごとのクラスターは、ゼロトラストと高度に規制されたシナリオに対して最も強力なテナント分離を提供しますが、コストの増加と運用オーバーヘッドの増加が必要です。