Important
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。
Azure Kubernetes Application Network アーキテクチャは、 管理プレーン、 コントロール プレーン、 データ プレーンの 3 つのレイヤーに編成されています。 各レイヤーには、Azure Kubernetes Service (AKS) 用にフル マネージドのアンビエント ベースのサービス ネットワーク ソリューションを提供する個別の責任があります。 このアーキテクチャにより、サイドカーやアプリケーションの変更を必要とせずに、サービス間のセキュリティで保護されたポリシー駆動型通信が可能になります。
この記事では、Azure Kubernetes Application Network のアーキテクチャ レイヤー、それらの対話方法、およびスケーラブルなクロスクラスター通信を可能にするマルチクラスター サービス検出モデルの概要について説明します。 Azure Kubernetes Application Network の詳細については、「 AKS 用 Azure Kubernetes Application Network の概要」を参照してください。
アプリケーション ネットワーク アーキテクチャ レイヤーの概要
アーキテクチャ レイヤーは、次の役割を管理します。
- 管理プレーン: Application Network リソースの作成、更新、削除、クラスター メンバーシップの管理などの Azure リソース操作を処理します。
- コントロール プレーン: 各メンバー クラスターのメッシュ構成、証明書のライフサイクル、およびサービス検出を管理します。
- データ プレーン: アンビエント モードを使用してメンバー クラスター内のサービス間トラフィックを直接セキュリティで保護します。これは、サイドカーやアプリケーションへの変更を必要としません。
マルチクラスターデプロイの場合、Application Network はメンバー クラスター間でサービス検出情報を同期し、サービスがクラスター境界を越えて透過的に通信できるようにします。
次の図は、Azure Kubernetes Application Network のアーキテクチャ レイヤーと、それらが互いにやり取りする方法と、AKS クラスターと対話する方法を示しています。
管理プレーン
管理プレーンは、すべての Application Network リソース操作を処理する Azure リソース プロバイダーです。 Application Network リソースを作成するか、メンバー クラスターに参加すると、管理プレーンによって要求が検証され、証明書ストレージ用の Azure Key Vault などの Azure リソースをサポートするプロビジョニングが行われ、メンバーのリージョン コントロール プレーンの作成が調整されます。
管理プレーンは、Azure CLI (az appnet) または ARM API を使用して操作します。 管理プレーンは、すべてのダウンストリーム プロビジョニングを調整して、コントロール プレーンとデータ プレーン コンポーネントを手動で介入せずにデプロイできるようにします。
コントロール プレーン
コントロール プレーンは、AKS クラスターの外部で実行されるフル マネージド インフラストラクチャです。 メンバー クラスターが Application Network に参加すると、専用のコントロール プレーンがメンバー クラスターと同じ Azure リージョンにプロビジョニングされ、制御コンポーネントとデータ プレーン コンポーネント間の待機時間が短くなります。
注
異なる Azure リージョンのメンバーには、それぞれのリージョンにデプロイされたコントロール プレーンがあります。
コントロール プレーンには、次のコンポーネントが含まれています。
- Istiod: メンバー クラスターの Kubernetes API サーバーに接続してサービスを検出し、構成の変更を監視します。 データ プレーン内の ztunnel プロキシとウェイポイント プロキシに xDS 構成をプッシュします。 複数クラスターデプロイでは、Istiod は他のメンバー クラスターの Kubernetes API サーバーにも接続してサービス検出情報を取得し、クラスター間のサービス検出を有効にします。
- 証明書の管理: Azure Key Vault によってサポートされる CA 証明書をプロビジョニングしてローテーションします。 ルート CA は、すべてのメンバー クラスター間で共有信頼境界を確立し、各メンバーは、有効期間の短いワークロード証明書を発行する中間 CA を受け取ります。 詳細については、「 Azure Kubernetes Application Network セキュリティの概要」を参照してください。
- ライフサイクル管理: ztunnel、Istio CNI、ウェイポイント プロキシ、カスタム リソース定義 (CRD) など、メンバー クラスター内のすべてのデータ プレーン コンポーネントをデプロイおよびアップグレードします。 詳細については、「 Azure Kubernetes Application Network メンバーのアップグレードを構成する」を参照してください。
データ プレーン
データ プレーンは、メンバー クラスターの applink-system 名前空間にデプロイされたコンポーネントで構成されます。 Application Network では Istio アンビエント モードが使用されるため、ワークロードにサイドカーが挿入されません。
データ プレーンには、次のコンポーネントが含まれています。
- Ztunnel: DaemonSet としてデプロイされたノード レベルの L4 プロキシ。 Ztunnel は、ノード上のサービス間トラフィックをインターセプトし、mTLS 接続を透過的に確立し、L4 承認ポリシーを適用します。
- ウェイポイント プロキシ: HTTP ルーティング、トラフィック シフト、フォールト インジェクション、および L7 承認を提供する、名前空間ごとの省略可能な L7 プロキシ。 ウェイポイント プロキシは、L7 ポリシーが名前空間用に構成されている場合にのみデプロイされます。
- 東西ゲートウェイ: マルチクラスター デプロイでクラスター間トラフィックを処理します。 各メンバー クラスター内の東西ゲートウェイ間のネットワーク接続を提供する責任があります。 詳細については、「 マルチクラスター サービスの検出」を参照してください。
- Istio CNI: アンビエント メッシュ トラフィックインターセプト用にポッド ネットワークを構成する DaemonSet。
- CRD: トラフィック管理とセキュリティ ポリシーを構成するための Kubernetes カスタム リソース定義。
サービス間で要求が行われると、ztunnel はトラフィックをインターセプトし、宛先の ztunnel との mTLS 接続を確立し、その要求を宛先ワークロードに配信します。 L7 ポリシーが構成されている場合、トラフィックは宛先に到達する前にウェイポイント プロキシを経由してルーティングされます。 クラスター間トラフィックの場合、ztunnel は、リモート メンバー クラスターのワークロードに到達するために、東西ゲートウェイを経由します。
マルチクラスター サービスの検出
Application Network では、複数の AKS クラスターを統合サービス メッシュに接続できます。 1 つのメンバー クラスター内のサービスは、他のメンバー クラスター内のサービスと通信できます。mTLS は、クラスターの境界を越えてエンドツーエンドで適用されます。
オープン ソースの Istio マルチクラスターデプロイでは、コントロール プレーンは通常、他のクラスターの Kubernetes API サーバーに接続して、サービスと構成の変更を検出します。 Application Network は、同様のサービス検出モデルに従います。コントロール プレーンは、サービスをクラスターの境界を越えて検出できるように、メンバー クラスターからサービス情報を取得します。 このアプローチにより、1 つのメンバー クラスター内のワークロードは、アプリケーションの変更を必要とせずに、他のクラスターで実行されているサービスを解決して通信できます。 新しいメンバー クラスターを追加すると、メッシュ メンバーシップが拡張され、新しいクラスター内のサービスが他のメンバーによって検出できるようになります。
クラスター間トラフィックは、各メンバー クラスターにデプロイされた東西ゲートウェイを通過します。 VNet ピアリング、VPN、その他の接続ソリューションなど、メンバー クラスターの東西ゲートウェイ間のネットワーク到達可能性を提供する責任があります。 クラスター間のすべてのトラフィックは、mTLS で暗号化されます。
コンポーネントの相互作用
コントロール プレーンは、メンバー クラスターの Kubernetes API サーバーに接続し、サービスと構成の変更を監視し、xDS の更新を ztunnel プロキシとウェイポイント プロキシにプッシュします。 複数のメンバーが存在する場合、各コントロール プレーンはマネージド メッセージングを通じてサービス情報を交換し、すべてのメンバーがメッシュ全体のすべてのサービスの一貫したビューを持ちます。
証明書管理は、Application Network リソースが作成されるときにルート CA をプロビジョニングし、各メンバー クラスターの中間 CA を発行します。 ワークロード証明書は、24 時間の有効期間で発行され、12 時間ごとに自動的にローテーションされます。 ルート CA から中間証明書およびワークロード証明書までの証明書ライフサイクル全体は、手動による介入なしで管理されます。
完全な証明書階層とローテーション スケジュールについては、「 Azure Kubernetes Application Network セキュリティの概要」を参照してください。
関連するコンテンツ
Azure Kubernetes Application Network の詳細については、次の記事を参照してください。