Kubernetes は、コンテナ化されたアプリケーションやストレージ、ネットワークコンポーネントを管理する急成長中のプラットフォームです。これにより、開発者や管理者はインフラの詳細ではなく、アプリケーションワークロードに集中できます。Kubernetes は宣言的な方法で大量のコンテナをデプロイでき、管理タスク向けの強力な API も備えています。
しかし、特に本番環境やエンタープライズ規模での運用では、Kubernetes のインストールやメンテナンスが複雑になりがちです。スケーラビリティやアップデートなどの主要な管理・デプロイ作業を簡素化するために、Azure Kubernetes Service (AKS) や Azure Container Instances (ACI) といったマネージド Azure サービスを利用できます。
例えば AKS では、Azure が AKS のコントロールプレーンを管理し、ユーザーはアプリケーションが稼働する AKS ノード分のみ料金を支払う仕組みになっています。
本記事は、Kubernetes に関する包括的なガイドシリーズの一部です。
Azure 上で Kubernetes を実行すると、コンテナ化アプリケーションの展開・管理に多くのメリットがあります。主な利点は以下の通りです。
Kubernetes が Azure 上でどのように実装されるかを示すために、Microsoft は Azure Kubernetes Service (AKS) 上に構築されたアプリケーションのリファレンスアーキテクチャを提供しています。このアーキテクチャは、多くの実装の出発点として活用できます。
Source: Azure
リファレンスアーキテクチャは以下のコンポーネントで構成されています。
Azure Kubernetes Service (AKS) は、Azure 上でマネージド Kubernetes クラスターを展開するためのサービスです。AKS は、ヘルスモニタリングやメンテナンスなどの重要タスクを開発者や管理者から切り離して管理します。
AKS では、管理が必要なのは エージェントノード のみで、課金対象もエージェントノードに限られます。Kubernetes マスターノード は自動的に構成・展開され、追加料金は発生しません。さらに Azure AD 連携、高度なネットワーキング、モニタリングなどの機能も設定可能です。
AKS クラスターは Azure CLI や Azure ポータル で作成できるほか、Azure Resource Manager テンプレート や Terraform などの IaC ソリューションを利用して構築することもできます。
コンテナは、クラウドアプリケーションのパッケージ化、デプロイ、管理における主要な手段となりつつあります。Azure Container Instances (ACI) は、仮想マシンを管理することなく Azure 上でコンテナを実行できる便利なサービスです。VM よりもオーバーヘッドが小さいため、コンテナインスタンスは数秒で起動可能です。
Linux または Windows コンテナのイメージは、DockerHub、Azure Container Registry、その他の Docker レジストリからインポートできます。さらに、ACI には一般的な OS ベースイメージがキャッシュされており、カスタムイメージの迅速なデプロイが可能です。
Azure Service Fabric は、マイクロサービスアプリケーションをパッケージ化・デプロイできる分散型プラットフォームで、クラウドネイティブ開発の多くの課題に対応します。
Service Fabric は、ステートフルサービス の構築に重点を置いています。フレームワークのプログラミングモデルを利用することも、任意の言語やコードでステートフル要件を持つコンテナ化サービスを実行することも可能です。さらに、Linux マシン、Windows Server、その他のクラウドプラットフォーム上に Service Fabric クラスターを構築できます。
また、Service Fabric は Microsoft Power BI、Azure SQL Database、Cosmos DB、Dynamics 365、Skype など、多くの主要な Microsoft サービスを支えています。
Azure Container Registry (ACR) は、オープンソースの Docker Registry 2.0 をベースにした、Azure によるプライベート Docker レジストリサービスです。組織のプライベート Docker イメージを保存・管理できます。
さらに、ACR Tasks を利用すると、イメージからオンデマンドでコンテナをビルドしたり、ソースコードリポジトリへのコミットやベースイメージの更新などのイベントに応じてビルドを自動化したりできます。
Azure Container Instances (ACI) は、Microsoft Azure が提供するサーバーレスコンテナサービスです。基盤となるインフラを管理することなくコンテナを実行できます。
ACI は軽量で短命、ステートレスなワークロードに最適です。高速な起動時間、カスタムサイズ設定、秒単位課金を特徴とし、コスト効率と柔軟性に優れています。
Azure Container Apps は、Azure 上でコンテナ化アプリケーションを構築・デプロイ・スケーリングできるフルマネージドプラットフォームです。自動スケーリング、ローリングアップデート、Azure サービスとの統合といった機能を備えており、コンテナ管理を簡素化します。
カスタムドメインや TLS 証明書をサポートし、複数の環境でアプリケーションを実行可能です。イベント駆動型アーキテクチャにより、需要に応じて効率的にスケールする、モダンでレジリエントなアプリケーションを構築できます。
Azure Dev Spaces は、AKS を利用するチーム向けに、迅速で反復的な Kubernetes 開発環境を提供します。開発用マシンや依存関係をセットアップすることなく、AKS 上でアプリケーションコンポーネントをテスト・トラブルシュートできます。
また、プロジェクトの Docker および Kubernetes アーティファクトを自動生成できるため、新規および既存の Kubernetes アプリケーションを簡単に開発プロジェクトに追加できます。