Azure Container Instances について調べる
Azure Container Instances (ACI) は、シンプルなアプリケーション、タスク自動化、ジョブ作成など、分離されたコンテナーで操作できるあらゆるシナリオ向けの、優れたソリューションです。 次のような利点があります。
- 高速起動: ACI は、仮想マシン (VM) を作成および管理する必要なく、数秒で Azure でコンテナーを開始できます
- コンテナー アクセス: ACI を使用すると、IP アドレスと完全修飾ドメイン名 (FQDN) を使用して、コンテナー グループをインターネットに直接公開できます。
- ハイパーバイザー レベルのセキュリティ: アプリケーションを VM と同じように完全に分離する
- 顧客データ: ACI サービスには、コンテナー グループが想定どおりに実行されるようにするために必要な最小限の顧客データが格納されます
- カスタム サイズ: ACI は、CPU コアとメモリの正確な仕様を可能にすることで最適な使用率を提供します
- 永続ストレージ: 状態を取得して保持するために Azure Files 共有をコンテナーに直接マウントする
- Linux と Windows: 同じ API を使用して Windows コンテナーと Linux コンテナーの両方をスケジュールします。
複数のコンテナー間のサービス検出、自動スケーリング、調整されたアプリケーション アップグレードなど、完全なコンテナー オーケストレーションが必要なシナリオでは、 Azure Kubernetes Service (AKS) をお勧めします。
コンテナー グループ
Azure Container Instances の最上位リソースは コンテナー グループです。 コンテナー グループは、同じホスト コンピューター上にスケジュール設定されるコンテナーのコレクションです。 コンテナー グループ内のコンテナーは、ライフサイクル、リソース、ローカル ネットワーク、ストレージ ボリュームを共有します。 これは、概念的に Kubernetes の "ポッド" に似ています。
次の図は、複数のコンテナーを含むコンテナー グループの例を示しています。
この例のコンテナー グループは:
- 単一のホスト コンピューター上にスケジュール設定されます。
- DNS 名ラベルが割り当てられます。
- 単一のパブリック IP アドレスを公開し、1 つの公開ポートを持ちます。
- 次の 2 つのコンテナーから構成されます。 片方のコンテナーはポート 80 でリッスンし、他方のポートはポート 5000 でリッスンします。
- ボリューム マウントとして 2 つの Azure ファイル共有が含まれています。各コンテナーは共有のいずれかをローカルにマウントします。
注
現在、複数コンテナー グループでサポートされているのは、Linux コンテナーのみです。 Windows コンテナーの場合、Azure Container Instances では、1 つのインスタンスのデプロイのみをサポートします。
展開
マルチコンテナー グループのデプロイ方法は 2 つあります。Resource Manager テンプレートを使うか、YAML ファイルを使う方法です。 コンテナー インスタンスをデプロイするときに、より多くの Azure サービス リソースをデプロイする必要がある場合は、Resource Manager テンプレートをお勧めします。 YAML フォーマットは簡潔であるため、デプロイにコンテナー インスタンスのみが含まれている場合は、YAML ファイルをお勧めします。
リソース割り当て
Azure Container Instances では、グループにインスタンスのリソース要求を追加することで、CPU、メモリ、必要に応じて GPU (プレビュー) などのリソースをコンテナー グループに割り当てます。 2 つのインスタンスを持つコンテナー グループを作成し、それぞれが 1 つの CPU を要求する場合、コンテナー グループには 2 つの CPU が割り当てられます。
ネットワーク
コンテナー グループは、IP アドレスと、その IP アドレス上のポートの名前空間を共有します。 外部クライアントがグループ内のコンテナーにアクセスできるようにするには、IP アドレスのポートをコンテナーから公開する必要があります。 グループ内のコンテナーがポートの名前空間を共有するため、ポートのマッピングはサポートされません。 グループ内のコンテナーは、ポートの localhost 経由で相互にアクセスできます。これは、これらのポートがグループの IP アドレスで外部に公開されていない場合でも同じです。
ストレージ
コンテナー グループにマウントする外部ボリュームを指定できます。 これらのボリュームは、グループの個別のコンテナーの特定のパスにマップできます。 サポートされるボリュームは次のとおりです。
- Azure ファイル共有
- 秘密
- 空のディレクトリ
- 複製した git リポジトリ
一般的なシナリオ
複数コンテナー グループは、1 つの機能タスクを複数のコンテナー イメージに分割する場合に便利です。 イメージは、異なるチームによって配信され、個別のリソース要件を持つ場合があります。
次のような使用例が考えられます。
- Web アプリケーションにサービスを提供するコンテナーとソース管理から最新のコンテンツをプルするコンテナー。
- アプリケーション コンテナーとログ記録コンテナー。 ログ記録コンテナーは、メイン アプリケーションによって出力されるログとメトリックを収集し、長期保存される記憶域に書き込みます。
- アプリケーション コンテナーと監視コンテナー。 監視コンテナーは、要求を定期的にアプリケーションに送信して、アプリケーションが実行中であり、正常に応答していることを確認します。そうでない場合はアラートを発生させます。
- フロントエンド コンテナーとバックエンド コンテナー。 フロントエンドは、データを取得するためにサービスを実行しているバックエンドと共に、Web アプリケーションを提供する可能性があります。