メニュー

Azure の Kubernetes:仕組みと 7 つのサービス オプション

目次

このページを共有

blank avatar
Jeff Whitaker

Azure上でのKubernetes 実行方法

マネージドサービスで複雑さを軽減し、効率的に運用

Kubernetes は、コンテナ化されたアプリケーションやストレージ、ネットワークコンポーネントを管理する急成長中のプラットフォームです。これにより、開発者や管理者はインフラの詳細ではなく、アプリケーションワークロードに集中できます。Kubernetes は宣言的な方法で大量のコンテナをデプロイでき、管理タスク向けの強力な API も備えています。

しかし、特に本番環境やエンタープライズ規模での運用では、Kubernetes のインストールやメンテナンスが複雑になりがちです。スケーラビリティやアップデートなどの主要な管理・デプロイ作業を簡素化するために、Azure Kubernetes Service (AKS)Azure Container Instances (ACI) といったマネージド Azure サービスを利用できます。

例えば AKS では、Azure が AKS のコントロールプレーンを管理し、ユーザーはアプリケーションが稼働する AKS ノード分のみ料金を支払う仕組みになっています。

本記事は、Kubernetes に関する包括的なガイドシリーズの一部です。

Azure で Kubernetes を実行する利点

統合性・拡張性・セキュリティに優れた運用環境

Azure 上で Kubernetes を実行すると、コンテナ化アプリケーションの展開・管理に多くのメリットがあります。主な利点は以下の通りです。

  • シームレスな統合: Azure は Kubernetes とシームレスに統合され、コンテナ化アプリケーションを容易にデプロイ・管理可能です。
  • スケーラビリティ: Azure 上の Kubernetes は、アプリケーションの需要に応じて簡単にスケールアップ・スケールダウンできます。
  • 可用性: Azure は高可用性と災害復旧機能を備えており、Kubernetes クラスターが常に利用可能で、障害から迅速に復旧できるようにします。
  • セキュリティ: Azure はネットワークセキュリティ、ID・アクセス管理、暗号化などの堅牢なセキュリティ機能を提供し、Kubernetes クラスターとその上で稼働するアプリケーションを保護します。
  • 自動化: Azure はデプロイ、スケーリング、Kubernetes クラスターやアプリケーションの管理を自動化できる機能を提供し、インフラ管理に必要な時間と労力を削減します。
  • ハイブリッドクラウド対応: Azure はハイブリッドクラウド機能を提供し、Kubernetes クラスターをオンプレミスとクラウドの両方で実行し、アプリケーションを両環境間で容易に移動できます。

Azure Kubernetes: リファレンスアーキテクチャ

AKS を中心とした標準的な実装モデル

Kubernetes が Azure 上でどのように実装されるかを示すために、Microsoft は Azure Kubernetes Service (AKS) 上に構築されたアプリケーションのリファレンスアーキテクチャを提供しています。このアーキテクチャは、多くの実装の出発点として活用できます。

ソース: Azure

リファレンスアーキテクチャは以下のコンポーネントで構成されています。

  • Azure Kubernetes Service (AKS) — アーキテクチャの中心となるサービス。
  • Kubernetes クラスター — AKS 上でワークロードを稼働させるクラスター。ユーザーはエージェントノードのみを管理し、Kubernetes コントロールプレーンは AKS が管理。
  • 仮想ネットワーク —エージェントノードをデプロイする仮想ネットワーク。高度なシナリオではサブネットやローカル接続、IP アドレスを制御可能。
  • Ingress — クラスタサービスへアクセスする HTTP/HTTPS 経路を提供します。通常、その背後に API Gateway を配置し、認証と認可を管理。
  • Azure Load Balancer — NGINX ingress コントローラーが実装されると作成され、受信トラフィックを Ingress にルーティング。
  • 外部データストレージ — マイクロサービスは通常ステートレスであり、Azure SQL Database のようなリレーショナルデータベースや Cosmos DB のような NoSQL ストアにデータを保存。
  • Azure Active Directory (AD) — AKS は独自の Azure AD ID を持ち、Kubernetes デプロイ用に Azure リソースを生成・管理します。加えて、Microsoft はクライアントアプリケーションのユーザー認証に Azure AD を利用することを推奨。
  • Azure Container Registry (ACR) — 組織の Docker イメージを保存し、クラスターへのデプロイに利用します。ACR は Azure AD による認証も利用可能です。代替として DockerHub などのサードパーティレジストリを利用することもできます。
  • Azure Pipelines — Azure DevOps サービスの一部で、ビルド/テスト/デプロイサイクルを自動化できます。代替として Jenkins などのサードパーティ CI/CD ソリューションも利用可能。
  • Helm — Kubernetes のパッケージマネージャーで、複数の Kubernetes オブジェクトを 1 つのパッケージにまとめ、配布やバージョン管理を容易に。
  • Azure Monitor — AKS コントローラー、ノード、コンテナなどからログを収集・保存。アプリケーション監視、アラート設定、エラー分析をサポート。

Azure 上の Kubernetes: 7 つのサービスオプション

1. Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) は、Azure 上でマネージド Kubernetes クラスターを展開するためのサービスです。AKS は、ヘルスモニタリングやメンテナンスなどの重要タスクを開発者や管理者から切り離して管理します。

AKS では、管理が必要なのは エージェントノード のみで、課金対象もエージェントノードに限られます。Kubernetes マスターノード は自動的に構成・展開され、追加料金は発生しません。さらに Azure AD 連携、高度なネットワーキング、モニタリングなどの機能も設定可能です。

AKS クラスターは Azure CLIAzure ポータル で作成できるほか、Azure Resource Manager テンプレート や Terraform などの IaC ソリューションを利用して構築することもできます。

2. Azure Container Instances

コンテナは、クラウドアプリケーションのパッケージ化、デプロイ、管理における主要な手段となりつつあります。Azure Container Instances (ACI) は、仮想マシンを管理することなく Azure 上でコンテナを実行できる便利なサービスです。VM よりもオーバーヘッドが小さいため、コンテナインスタンスは数秒で起動可能です。

Linux または Windows コンテナのイメージは、DockerHub、Azure Container Registry、その他の Docker レジストリからインポートできます。さらに、ACI には一般的な OS ベースイメージがキャッシュされており、カスタムイメージの迅速なデプロイが可能です。

3. Azure Service Fabric

Azure Service Fabric は、マイクロサービスアプリケーションをパッケージ化・デプロイできる分散型プラットフォームで、クラウドネイティブ開発の多くの課題に対応します。

Service Fabric は、ステートフルサービス の構築に重点を置いています。フレームワークのプログラミングモデルを利用することも、任意の言語やコードでステートフル要件を持つコンテナ化サービスを実行することも可能です。さらに、Linux マシン、Windows Server、その他のクラウドプラットフォーム上に Service Fabric クラスターを構築できます。

また、Service FabricMicrosoft Power BI、Azure SQL Database、Cosmos DB、Dynamics 365、Skype など、多くの主要な Microsoft サービスを支えています。

4. Azure Container Registry (ACR)

Azure Container Registry (ACR) は、オープンソースの Docker Registry 2.0 をベースにした、Azure によるプライベート Docker レジストリサービスです。組織のプライベート Docker イメージを保存・管理できます。

さらに、ACR Tasks を利用すると、イメージからオンデマンドでコンテナをビルドしたり、ソースコードリポジトリへのコミットやベースイメージの更新などのイベントに応じてビルドを自動化したりできます。

5. Azure Container Instances (ACI)

Azure Container Instances (ACI) は、Microsoft Azure が提供するサーバーレスコンテナサービスです。基盤となるインフラを管理することなくコンテナを実行できます。

ACI は軽量で短命、ステートレスなワークロードに最適です。高速な起動時間、カスタムサイズ設定、秒単位課金を特徴とし、コスト効率と柔軟性に優れています。

6. Azure Container Apps

Azure Container Apps は、Azure 上でコンテナ化アプリケーションを構築・デプロイ・スケーリングできるフルマネージドプラットフォームです。自動スケーリング、ローリングアップデート、Azure サービスとの統合といった機能を備えており、コンテナ管理を簡素化します。

カスタムドメインや TLS 証明書をサポートし、複数の環境でアプリケーションを実行可能です。イベント駆動型アーキテクチャにより、需要に応じて効率的にスケールする、モダンでレジリエントなアプリケーションを構築できます。

7. Azure Dev Spaces

Azure Dev Spaces は、AKS を利用するチーム向けに、迅速で反復的な Kubernetes 開発環境を提供します。開発用マシンや依存関係をセットアップすることなく、AKS 上でアプリケーションコンポーネントをテスト・トラブルシュートできます。

また、プロジェクトの Docker および Kubernetes アーティファクトを自動生成できるため、新規および既存の Kubernetes アプリケーションを簡単に開発プロジェクトに追加できます。

Drift chat loading