次のプロジェクト現場では、AWSのコンテナ技術がメインで使われているとのことで、
しばらくコンテナ関連のAWSのサービス、特にECSについて勉強したいと思います。
なお、本記事はコンテナ技術とは何かを知っている前提で記述しています。
もくじ
2.ECSの構成要素
3.構成イメージ
1.AWSのコンテナ関連のサービス
AWSのコンテナ関連の代表的な各サービスは、以下の3種類に分類される。
・コンテナを管理するためのサービス
・コンテナを実際に稼働させるためのリソース環境(データプレーン)
・コンテナイメージを保管するためのリポジトリサービス
順に概要を説明する。
◎コンテナ管理サービス
AWSにおいて、コンテナを管理するためのサービスは、以下の2種類ある。
サービス | 概要 |
---|---|
Amazon ECS | AWSが提供する、フルマネージドなオーケストレーションサービス。 Dockerコンテナをスケーラブルかつ簡単に実行・停止・管理できる。 |
Amazon EKS | OSSのオーケストレーションサービスであるKubernetesを、 AWS上で実行できるサービス。 |
これらはいずれも、コンテナを「管理する」ためのサービスであって、
コンテナが実際に稼働するリソース環境(サーバ等)を提供するわけではない。
リソース環境を提供するサービスは、「データプレーン」が担う。
◎データプレーン
データプレーンとは、コンテナが実際に稼働するリソース環境(インフラストラクチャ)のことである。
例えば、データプレーンサービスとして「Fargate」、コンテナ管理サービスとして「ECS」を利用する場合、
ECSによるコンテナ作成指示のもと、Fargate上にコンテナが作られるといった構成になる。
AWSにおいて、データプレーンは以下の3種類ある。
データプレーン | 説明 |
---|---|
EC2 | Amazon EC2のクラスターをホスト環境として、コンテナを実行できる。 ホストがEC2なのでカスタマイズしやすい一方、準備や管理に手間がかかるデメリットもある。 |
Fargate | ホストマシンを意識することなく(=サーバレスで)コンテナを実行できる技術。 EC2クラスターの準備・設定、スケーリング等が不要となり、コンテナの実行・管理に注力できる。 |
Anywhere | オンプレミス上のリソースをホスト環境として、コンテナを実行できる。2021年から提供が開始された、比較的新しいサービス。 |
◎レジストリ
AWSにおいて、コンテナイメージを保存・管理するサービスとして、Amazon ECRがある。
Amazon ECRは、フルマネージドなDockerコンテナのレジストリである。
2.ECSの構成要素
続いて、Amazon ECS(Amazon Elastic Container Service)の構成要素を説明する。
構成要素 | 説明 |
---|---|
コンテナ | コンテナ技術(アプリの動作環境を仮想的に構築する技術)を利用し、 アプリ動作に必要なものを1つにまとめたパッケージ。 |
タスク | コンテナが動作するコンポーネント。 タスク定義ファイル(jsonで記述)により、コンテナイメージや割り当てリソース量、割り当てIAMロールなどを指定する。 |
サービス | タスク定義に基づき、タスクや、関連のELB(ロードバランサ)を管理する機能。 |
クラスター | ECSサービスとタスクを実行する論理グループ。 |
↓各構成要素の関係を図にまとめるとこんな感じ。
3.構成イメージ
ECS on Fargateで、ECRも利用する場合の構成例は以下のようになる。
図の通り、タスク1つに対してFargateが1つ起動する。
また、ECRはVPC外に作られるため、コンテナイメージを取り込むには、VPCエンドポイントの設置が必要となる。コンテナ毎にENI(Elastic Network Interface)が起動・割り当てられ、IPアドレスが付与される(図にENIを書ききれなくてゴメンナサイ)。
今回は以上!