Azure Container Instances について調べる
Azure Container Instances (ACI) は、シンプルなアプリケーション、タスク自動化、ジョブ作成など、分離されたコンテナーで操作できるあらゆるシナリオ向けの、優れたソリューションです。 次のような利点があります。
- 高速起動: ACI では、Azure でコンテナーを数秒で起動でき、仮想マシン (VM) のプロビジョニングや管理は必要ありません
- コンテナー アクセス: 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 ファイル共有が含まれています。各コンテナーは共有のいずれかをローカルにマウントします。
Note
現在、複数コンテナー グループでサポートされているのは、Linux コンテナーのみです。 Windows コンテナーの場合、Azure Container Instances では、1 つのインスタンスのデプロイのみをサポートします。
展開
マルチコンテナー グループのデプロイ方法は 2 つあります。Resource Manager テンプレートを使うか、YAML ファイルを使う方法です。 コンテナー インスタンスをデプロイするときに、追加の Azure サービス リソース (Azure Files の共有など) をデプロイする必要がある場合は、Resource Manager テンプレートをお勧めします。 YAML フォーマットは簡潔であるため、デプロイにコンテナー インスタンスのみが含まれている場合は、YAML ファイルをお勧めします。
リソース割り当て
Azure Container Instances では、グループにインスタンスのリソース要求を追加することで、CPU、メモリ、必要に応じて GPU (プレビュー) などのリソースをコンテナー グループに割り当てます。 例として CPU リソースを使うと、それぞれが 1 つの CPU を要求する 2 つのインスタンスを含むコンテナー グループを作成した場合、コンテナー グループに 2 つの CPU が割り当てられます。
ネットワーク
コンテナー グループは、IP アドレスと、その IP アドレス上のポートの名前空間を共有します。 外部クライアントがグループ内のコンテナーにアクセスできるようにするには、IP アドレスのポートをコンテナーから公開する必要があります。 グループ内のコンテナーがポートの名前空間を共有するため、ポートのマッピングはサポートされません。 グループ内のコンテナーは、ポートの localhost 経由で相互にアクセスできます。これは、これらのポートがグループの IP アドレスで外部に公開されていない場合でも同じです。
ストレージ
コンテナー グループにマウントする外部ボリュームを指定できます。 これらのボリュームは、グループの個別のコンテナーの特定のパスにマップできます。 サポートされるボリュームは次のとおりです。
- Azure ファイル共有
- Secret
- 空のディレクトリ
- 複製した git リポジトリ
一般的なシナリオ
複数コンテナー グループは、1 つの機能タスクを複数のコンテナー イメージに分割する場合に便利です。 これらのイメージは、異なるチームによって配信され、個別のリソース要件がある場合があります。
次のような使用例が考えられます。
- Web アプリケーションにサービスを提供するコンテナーとソース管理から最新のコンテンツをプルするコンテナー。
- アプリケーション コンテナーとログ記録コンテナー。 ログ記録コンテナーは、メイン アプリケーションによって出力されるログとメトリックを収集し、長期保存される記憶域に書き込みます。
- アプリケーション コンテナーと監視コンテナー。 監視コンテナーは、要求を定期的にアプリケーションに送信して、アプリケーションが実行中であり、正常に応答していることを確認します。そうでない場合はアラートを発生させます。
- フロントエンド コンテナーとバックエンド コンテナー。 フロントエンドは、データを取得するためにサービスを実行しているバックエンドと共に、Web アプリケーションを提供する可能性があります。