このリファレンス アーキテクチャでは、Cloud Service Mesh と Envoy ゲートウェイを使用して、Google Kubernetes Engine(GKE)で実行される Windows アプリケーションのネットワーク トラフィックを管理する、高可用性でスケーラブルなソリューションを提供します。このページでは、Pod とオープンソースの xDS 準拠プロキシにトラフィックを転送できるサービスを使用して、そのネットワーク トラフィックを管理する方法について説明します。このようなアーキテクチャを使用すると、コストを削減し、ネットワーク管理を改善できます。
このドキュメントは、GKE で実行される Windows アプリケーションの設計と管理を担当するクラウド アーキテクト、ネットワーク管理者、IT 担当者を対象としています。
アーキテクチャ
次の図は、Cloud Service Mesh と Envoy ゲートウェイを使用して GKE で実行されている Windows アプリケーションのネットワーキングを管理するアーキテクチャを示しています。
このアーキテクチャは、次のコンポーネントで構成されます。
- Windows ノードプールと Linux ノードプールの両方があるリージョン GKE クラスタ。
- 2 つの GKE Pod で実行されている 2 つの Windows アプリケーション。
- 各アプリケーションは、
ClusterIP
タイプの Kubernetes Service とネットワーク エンドポイント グループ(NEG)によって公開されます。
- 各アプリケーションは、
- Cloud Service Mesh は、各 GKE Pod の NEG へのトラフィック ルートを作成して管理します。各ルートは特定の
scope
にマッピングされます。このscope
は、Cloud Service Mesh Ingress ゲートウェイを一意に識別します。 - Cloud Service Mesh のバックエンド サービスにマッピングされる HTTP ルート。
- GKE クラスタへの Envoy ゲートウェイとして機能する Envoy コンテナ Pod。
- Linux ノードで実行される Envoy ゲートウェイ。ゲートウェイは、それらのアプリケーションに対応するサービスを通じて Windows アプリケーションにトラフィックを転送するように構成されています。Envoy は、
scope
パラメータを使用して関連する Cloud Service Mesh サービスの構成の詳細を読み込むように構成されています。 - SSL トラフィックを終端し、すべての外部受信トラフィックを Envoy ゲートウェイに転送する内部アプリケーション ロードバランサ。
使用するプロダクト
このリファレンス アーキテクチャでは、次の Google Cloud プロダクトとサードパーティ製品を使用します。
Google Cloud プロダクト
- Cloud Load Balancing: 高パフォーマンスでスケーラブルなグローバル ロードバランサとリージョン ロードバランサのポートフォリオ。
- Google Kubernetes Engine(GKE): Google のインフラストラクチャを使用して、コンテナ化されたアプリケーションを大規模にデプロイして運用するために使用できる Kubernetes サービス。
- Cloud Service Mesh: オンプレミスまたは Google Cloud で信頼性の高いサービス メッシュをモニタリングし、管理するのに便利な一連のツールです。
サードパーティ製品
- Envoy ゲートウェイ: Envoy プロキシをスタンドアロンまたは Kubernetes ベースのアプリケーション ゲートウェイとして管理します。
- Gateway API: Kubernetes の L4 と L7 のルーティングに焦点を当てた公式の Kubernetes プロジェクト。
ユースケース
このリファレンス アーキテクチャの主なユースケースは、GKE で実行される Windows アプリケーションのネットワーク トラフィックの管理です。このアーキテクチャには次のような利点があります。
ネットワーク管理の簡素化: Cloud Service Mesh と Envoy ゲートウェイは、アプリケーションへのネットワーク トラフィックを管理する一元化されたコントロール プレーンにより、ネットワーク管理を簡素化します。これらのアプリケーションは、GKE または Compute Engine で実行される Linux または Windows アプリケーションです。この簡素化されたネットワーク管理方法により、手動構成の必要性が軽減されます。
スケーラビリティと可用性の向上: 変化する需要に対応するため、Cloud Service Mesh と Envoy ゲートウェイを使用して Linux アプリケーションと Windows アプリケーションをスケーリングします。Envoy ゲートウェイを使用して、複数の Pod 間でトラフィックをロードバランスすることで、アプリケーションの高可用性を実現することもできます。
セキュリティの強化: Envoy ゲートウェイにより、SSL 終端、認証、レート制限などのセキュリティ機能を Linux アプリケーションと Windows アプリケーションに追加します。
コスト削減: Cloud Service Mesh と Envoy ゲートウェイの両方を使用すると、Linux アプリケーションと Windows アプリケーションのネットワーク トラフィックの管理にかかる費用を削減できます。
設計上の考慮事項
このセクションでは、セキュリティ、信頼性、費用、効率に関する特定の要件を満たすアーキテクチャを開発する際に役立つガイダンスを提供します。
セキュリティ
- セキュアなネットワーキング: このアーキテクチャでは、内部アプリケーション ロードバランサを使用して、Windows コンテナへの着信トラフィックを暗号化します。転送中の暗号化は、データ漏洩の防止に役立ちます。
- Windows コンテナ: Windows コンテナは、コンテナ化されたアプリケーションに安全で分離された環境を提供します。
信頼性
- ロード バランシング: このアーキテクチャでは、Cloud Load Balancing の複数のレイヤを使用して、Envoy ゲートウェイと Windows コンテナにトラフィックを分散します。
- フォールト トレランス: このアーキテクチャはフォールト トレラントで、単一障害点がありません。この設計により、1 つ以上のコンポーネントに障害が発生しても、常に利用可能な状態を維持できます。
- 自動スケーリング: このアーキテクチャでは、自動スケーリングを使用し、負荷に応じて Envoy ゲートウェイと Windows コンテナの数を自動的にスケーリングします。自動スケーリングにより、ゲートウェイとアプリケーションはパフォーマンスを低下させることなく、トラフィックの急増に対応できます。
- モニタリング: このアーキテクチャでは、Google Cloud Managed Service for Prometheus と Cloud Operations を使用して、Envoy ゲートウェイと Windows コンテナの健全性をモニタリングします。モニタリングを行うことで、問題を早期に特定し、アプリケーションの中断を防ぐことができます。
費用の最適化
- ワークロードに適したインスタンス タイプを選択する: インスタンス タイプを選択する際は、次の要素を考慮してください。
- アプリケーションに必要な vCPU とメモリの数
- アプリケーションで予想されるトラフィック負荷
- ユーザーが高可用性アプリケーションを必要としているかどうか
自動スケーリングを使用する: 自動スケーリングを使用すると、Windows ワークロードを垂直方向と水平方向に自動的にスケーリングし、費用を節約できます。
垂直スケーリングでは、お客様の使用状況に応じてコンテナ リクエストと上限を調整します。
- 垂直 Pod 自動スケーリングで垂直スケーリングを自動化します。
水平スケーリングでは、需要に応じて Kubernetes Pod を追加または削除します。
- 水平 Pod 自動スケーリングで水平スケーリングを自動化します。
Cloud Service Mesh と Envoy ゲートウェイを使用する: Cloud Service Mesh と Envoy ゲートウェイを使用すると、Windows アプリケーションにトラフィックを効率的に転送することで、費用を節約できます。より効率的なルーティングを使用すると、購入する帯域幅の量を減らすことができます。また、これらのアプリのパフォーマンスを改善することもできます。
共有 Virtual Private Cloud(VPC)ネットワークを使用する: 共有 Virtual Private Cloud ネットワークを使用すると、複数のプロジェクト間で単一の VPC を共有できます。共有により、作成して管理する必要がある VPC の数を減らし、コストを削減できます。
運用効率
- 単一の内部ロードバランサを使用する複数のドメイン: このアーキテクチャでは、内部アプリケーション ロードバランサを使用して SSL トラフィックをオフロードします。各 HTTPS ターゲット プロキシは、複数の SSL 証明書(サポートされている最大数まで)をサポートし、異なるドメインで複数のアプリケーションを管理できます。
- Infrastructure as Code(IaC): インフラストラクチャの管理に、IaC を使用してアーキテクチャをデプロイできます。IaC により、インフラストラクチャの一貫性と再現性を保証できます。
デプロイ
このアーキテクチャをデプロイするには、マネージド Kubernetes で実行されている Windows アプリケーションをデプロイするをご覧ください。
次のステップ
- この設計ガイドで使用する Google Cloud プロダクトの詳細を確認する。
- Cloud アーキテクチャ センターで、リファレンス アーキテクチャ、図、ベスト プラクティスを確認する。
寄稿者
作成者: Eitan Eibschutz | スタッフ テクニカル ソリューション コンサルタント
その他の寄稿者:
- John Laham | ソリューション アーキテクト
- Kaslin Fields | デベロッパー アドボケイト
- Maridi (Raju) Makaraju | サポート性に関するテクニカル リーダー
- Valavan Rajakumar | キー エンタープライズ アーキテクト
- Victor Moreno | プロダクト マネージャー、クラウド ネットワーキング