この記事では、Azure Kubernetes Service (AKS) でのステートフル ワークロードの実行の概要について説明します。
ステートフル ワークロードとは
"ステートフル ワークロード" は、永続的なデータ ストレージを使って複数のインスタンス間で状態を保持し、シームレスでカスタマイズされたユーザー エクスペリエンスを実現するアプリケーションです。 この設計は、データの一貫性、セッション履歴、信頼性が重要なオンライン バンキング、オンライン ショッピング、メールなどのサービスに不可欠です。 ステートフル ワークロードは、フェールオーバーや復旧などの高度な機能を利用してビジネス継続性を実現する、ハイ パフォーマンスでほぼリアルタイムの処理のシナリオでも効果を発揮します。
ステートフル ワークロードには多くの利点がありますが、固有の課題もあります。 たとえば、ステートフル ワークロードでは、複雑な処理パターンが伴うことが多く、オーバーヘッドとパフォーマンス コストの増加につながる可能性があります。 アプリケーションのニーズを明確に理解して検討し、ステートフル性とステートレス性の間の適切なバランスを判断することが重要です。
ステートフル ワークロードには重要な役割があるので、Azure にはそれらを効果的に実行するためのいくつかのアプローチが用意されています。 このセクションでは、Azure Kubernetes Service (AKS) へのステートフル ワークロードのデプロイに関するベスト プラクティスについて説明し、開発者や組織がニーズに最適なオプションを選択できるようにします。
Kubernetes ステートフル フレームワークの基盤スタック
Kubernetes ステートフル フレームワークは、共通の基盤スタックから始まります。 この場合は、多くのインフラストラクチャ プロジェクトで使われている一般的な標準化されたスタックである KATE スタックを使います。 KATE スタックでは、次のオープンソース ツールが使われます。
ArgoCD または Terraform は、Day 1 オペレーション用に設計されているため、AKS のガイドでは実装されません。 ただし、ガイドでは KATE スタックの一部が使われているため、デプロイが拡大して要件が進化したら、ArgoCD と Terraform の統合がいっそう簡単になるはずです。
Azure 用の Kubernetes ステートフル フレームワーク
基盤スタックが確立されたら、次に、Azure でのステートフル ワークロードをサポートするようにフレームワークを拡張する必要があります。具体的には、Azure Kubernetes Service (AKS) でデータ インフラストラクチャを実行するために不可欠なリソースを統合します。
データベースやメッセージ キューのような複雑なステートフル ワークロードをサポートするには、エフェメラル オプションより高度なストレージ機能が必要です。 具体的には、アプリケーションの障害や異なるホストへのワークロードの再割り当てなど、さまざまなイベントに対処するため、回復性と可用性が強化されたシステムが必要です。 これは、相互接続された 3 つの Kubernetes リソース PersistentVolumes、PersistentVolumeClaims、StorageClasses で構成される "PersistentVolume サブシステム" を使って実現できます。 このサブシステムでは、ユーザーと管理者に対し、ストレージの使用方法からストレージの提供方法の詳細を抽象化するための API が提供されます。
ほとんどのステートフル ワークロードでは、接続文字列、ユーザー名、パスワード、証明書などのシークレットからのデータが必要です。 Azure Key Vault は、必要なステートフル フレームワーク シークレットを保持するために使用する、シークレット用のセキュリティで保護されたストアを提供します。
また、シークレット ストアのシークレットを Kubernetes シークレットとして同期するには、Secrets Store CSI Driver や External Secrets Operator のような Kubernetes コントローラーまたは Kubernetes オペレーターも必要です。
ステートフル ワークロードを設計して Azure にデプロイする
以降のセクションでは、Azure でのステートフル ワークロードのシナリオに関する設計とデプロイの情報へのリンクを示します。
MongoDB
- MongoDB でのステートフル ワークロードの設計の概要
- Azure Kubernetes Service (AKS) で MongoDB クラスターを実行するためのインフラストラクチャを作成する
- Azure Kubernetes Service (AKS) 上で MongoDB クラスターを構成してデプロイする
- Azure Kubernetes Service (AKS) 上の MongoDB クラスターに接続するクライアント アプリケーションをデプロイする
- Azure Kubernetes Service (AKS) 上の MongoDB クラスターの回復性を検証する
- Azure Kubernetes Service (AKS) ノード プールのアップグレード中に MongoDB の回復性を検証する
- Azure Kubernetes Service (AKS) 上で MongoDB クラスターを監視する
PostgreSQL
- PostgreSQL でのステートフル ワークロードの設計の概要
- Azure Kubernetes Service (AKS) で高可用性 PostgreSQL データベースを実行するためのインフラストラクチャを作成する
- Azure Kubernetes Service (AKS) に高可用性 PostgreSQL データベースをデプロイする
Valkey
- Valkey でのステートフル ワークロードの設計の概要
- Azure Kubernetes Service (AKS) で Valkey クラスターを実行するためのインフラストラクチャを作成する
- Azure Kubernetes Service (AKS) 上に Valkey クラスターを構成して展開する
- Azure Kubernetes Service (AKS) 上の Valkey クラスターの回復性を検証する
- Azure Kubernetes Service (AKS) ノード プールのアップグレード中に Valkey の回復性を検証する
Apache Airflow
- Apache Airflow のステートフル ワークロード設計の概要
- Azure Kubernetes Service (AKS) で Apache Airflow を実行するためのインフラストラクチャを作成する
- Azure Kubernetes Service (AKS) 上で Airflow を構成してデプロイする
共同作成者
Microsoft では、この記事を保持しています。 当初の寄稿者は次のとおりです。
- Don High | プリンシパル カスタマー エンジニア
- Colin Mixon | プロダクト マネージャー
- Erin Schaffer |コンテンツ開発者 2
Azure Kubernetes Service