Azure Container Instances ソリューションの設計

完了

仮想マシンは、物理ハードウェアに必要な投資に対するコストを削減するための優れた方法です。 ただし、各仮想マシンは依然として 1 つのオペレーティング システムに制限されます。 単一のホスト マシンでアプリケーションの複数のインスタンスを実行したい場合は、コンテナーが優れた選択肢です。

Azure Container Instances は、Azure でコンテナーを実行する高速で簡単な方法です。 Azure Container Instance のシナリオには、シンプルなアプリケーション、タスクの自動化、ビルド ジョブが含まれます。

Azure Container Instances について知っておくべきこと

Azure Container Instances には、高速起動、秒単位の課金、永続ストレージなど、多くのベネフィットがあります。 このようなベネフィットにより、Azure Container Instances は、新しいワークロードをサポートするのにも、リフト アンド シフト パターンを使用ししてデータを移行するのにも最適なコンピューティング ソリューションになります。

Flowchart that shows the decision tree for selecting Azure Container Instances to build new workloads and to support lift and shift migrations.

  • Azure Container Instances を使用すると、高速起動が可能になります。 コンテナーを数秒で起動して、アプリケーションにすぐにアクセスすることができます。

  • Azure Container Instances では、秒単位の課金を実装します。 コストが発生するのは、ご利用のコンテナーが実行されている間だけです。

  • Azure Container Instances では、ご利用のコンテナーのカスタム サイズがサポートされます。 CPU コアとメモリに関する正確な値を指定し、未使用のリソースにかかるコストを回避できます。

  • Container Instances では、永続的なストレージが用意されています。 Azure Files 共有をコンテナーに直接マウントすることで、状態を取得および保持することができます。

  • Container Instances は、Linux と Windows で使用できます。 同じ API を使用して、Windows と Linux の両方のコンテナーでスケジュールを設定します。

コンテナー グループ

Azure Container Instances の最上位のリソースは、コンテナー グループです。 コンテナー グループは、同じホスト コンピューター上にスケジュール設定されるコンテナーのコレクションです。 コンテナー グループ内のコンテナーでは、ライフサイクル、リソース、ローカル ネットワーク、ストレージ ボリュームを共有します。

Diagram that shows container groups with access from DNS on port 80 and Azure files on port 1433.

複数コンテナー グループは、1 つの機能タスクを複数のコンテナー イメージに分割する場合に便利です。 これらのイメージは複数のチームによって配布可能であり、異なるリソース要件を持っています。 たとえば、次のようなシナリオが考えられます。

  • Web アプリケーションにサービスを提供するコンテナーとソース管理から最新のコンテンツをプルするコンテナー。
  • アプリケーション コンテナーとログ記録コンテナー。 ログ記録コンテナーは、メイン アプリケーションによって出力されるログとメトリックを収集し、長期保存される記憶域に書き込みます。
  • アプリケーション コンテナーと監視コンテナー。 監視コンテナーでは、要求を定期的にアプリケーションに送信することで、アプリケーションが実行中であり、正常に応答していることを保証します。必要に応じてアラートを生成します。
  • フロントエンド コンテナーとバックエンド コンテナー。 バックエンドでデータを取得するためのサービスが実行されている状態で、フロントエンドで Web アプリケーションが提供される場合があります。

Azure Container Instances を使用する場合に考慮すべき事項

Azure Container Instances を使用する場合は、いくつかのセキュリティ プラクティスが推奨されています。

  • プライベート レジストリを使用します。 コンテナーのイメージは、1 つ以上のリポジトリに格納されています。 これらのリポジトリは、パブリック レジストリまたはプライベート レジストリに属することができます。 プライベート レジストリには Docker Trusted Registry があります。これは、オンプレミスまたは仮想プライベート クラウドにインストールできます。 もう 1 つの例として、コンテナー イメージと成果物をビルド、保存、管理する場合に使用できる Azure Container Registry が挙げられます。

  • ライフサイクルを通じてイメージの整合性を確保します。 コンテナーのライフサイクルを通じたセキュリティ管理の一環として、コンテナー イメージの整合性を確保します。 ささいなものでも脆弱性があるイメージは、運用環境での実行を許可しないでください。 運用環境のイメージの数は、効果的な管理を確実に行えるように少なく抑えます。

  • コンテナー リソースのアクティビティを監視します。 コンテナーがアクセスするファイル、ネットワーク、他のリソースなどのリソースのアクティビティを監視します。 リソースのアクティビティと消費量を監視することは、パフォーマンスを監視するためにも、セキュリティ対策としても役立ちます。

Azure Container Instances と Azure Virtual Machines を比較する

次の表は、Azure Container Instances と Azure Virtual Machines でサポートされる重要な機能を比較したものです。 次の機能を確認する際に、Tailwind Traders インフラストラクチャ コンピューティング ソリューションにはどのような機能およびサポートが必要であるかを検討してください。

比較 Azure Container Instances Azure Virtual Machines
分離 Container Instances では、通常、ホストおよび他のコンテナーからの軽度の分離は提供しますが、仮想マシンほど強力なセキュリティ境界は提供しません。 仮想マシンを使用すると、ホスト オペレーティング システムや他の仮想マシンから完全に分離されます。 分離は、同じサーバーまたはクラスター上の競合企業からのアプリのホスティングなど、強力なセキュリティ境界が重要な場合に便利です。
オペレーティング システム Container Instances では、オペレーティング システムのユーザー モードの部分が実行されていて、アプリに必要なサービスだけを含むように調整することができます。 この構成により、使用されるシステム リソースが少なくなります。 各仮想マシンでは、完全なオペレーティング システムを実行します。 Azure Virtual Machines では、通常、Container Instances よりも多くのシステム リソース (CPU、メモリ、ストレージなど) が必要です。
デプロイ Container Instances では、Docker を使用し、そのコマンド ラインを介して個々のコンテナーをデプロイします。 Azure Kubernetes Service などのオーケストレーターを使用して、複数のコンテナーをデプロイできます。 Windows Admin Center または Hyper-V マネージャーを使用して、個々の仮想マシンをデプロイできます。 PowerShell または System Center Virtual Machine Manager を使用して、複数の仮想マシンをデプロイできます。
永続的ストレージ Container Instances では、単一のノードのローカル ストレージには Azure ディスクを使用し、複数のノードまたはサーバーで共有するストレージには Azure Files (SMB 共有) を使用します。 Azure Virtual Machines を使用すれば、単一の仮想マシンのローカル ストレージ用には仮想ハード ディスク (VHD) を使用し、複数のサーバーによって共有されるストレージ用には SMB ファイル共有を使用できます。
フォールト トレランス Azure Container Instances 内のクラスター ノードで障害が発生した場合、そのノード上で実行されているコンテナーはすべて、オーケストレーターによって別のクラスター ノード上で迅速に再作成されます。 仮想マシンはクラスター内の別のサーバーにフェールオーバーでき、仮想マシンのオペレーティング システムは新しいサーバーで再起動されます。