目次


AWSで使えるコンテナサービスの比較(ECS, EKS, Fargate)



AWSでコンテナを利用する場合、複数のサービスがありますので、各サービスの特徴を整理し、比較したいと思います。


AWSで使えるコンテナサービスの一覧

AWSで使えるコンテナサービスの一覧をまずは簡単な説明で一覧にしたいと思います。

Amazon ECR Amazon Elastic Container Registry
コンテナイメージの圧縮保存・管理・デプロイする
Amazon ECS Amazon Elastic Container Service
完全マネージド型のコンテナオーケストレーションサービス
Amazon EKS Amazon Elastic Kubernetes Service
完全マネージド型のKubernetesサービス
AWS Fargate Amazon ECSとAmazon EKSで動作する、コンテナ向けサーバーレスコンピューティング


AWSのコンテナサービスの役割

レジストリ(ECR)

各サーバーで実行するコンテナイメージを蓄積し、管理します。


コントロールプレーン(ECSかEKS)

コントロールプレーンは、デプロイ・スケジューリング・スケーリングのオーケストレーション・アプリケーション管理を行います。
AWSでは、以下を選べます。

コントロールプレーン ECS EKS
コスト 無料 必要
0.20USD/時間。1ヶ月で144USD。
更新 無し k8sバージョンアップへの追従が必要
3カ月に1度
サポートされるのは1年間のみ
コンテナ環境の定義 ECS独自仕様
Webコンソール
k8sのマニフェスト
セキュリティグループ サービスに付与 EC2に付与
CI ビルドは、CodeBuildか、GitHub Actionsか、CircleCI
レジストリは、ECR
CD CodePipeline
CodeDeployを使ったB/Gデプロイ
kubectl applyの手動実行
SpinnakerやArgoCD、flux
監視 CloudWatch Container Insights

ECS

EKS

Kubernetesクラスターのバージョンアップを行う際には同等の別環境を構築してバージョンアップの検証を行い、実際に本番環境のバージョンアップを行う際にはアップデートの失敗を考慮してブルーグリーンデプロイメントと呼ばれるような、「現在の本番環境を維持したまま新しい本番環境を構築して、DNSの切り替えによって環境移行を行う」ようなオペレーションが必要になります。

AWSでコンテナを支えるサービスについて ECS、EKS、Fargateの違いは? 第2回(最終回) | SunnyCloud



Docker向けのAmazon ECSとKubernetes向けAmazon EKSがあります。
小規模なコンテナではAmazon ECSを利用するのがいいです。
大規模システムでは、Amazon EKSも考えられます。


データプレーン(FargateかEC2)

データプレーンは、コンテナの実行環境、実行サーバーを指します。

AWSでは、以下が選べます。

データプレーン Fargate EC2
コスト EC2の1.2~1.3倍 EC2と同じ
コンテナホスト管理 不要 必要
コンテナのデバッグ 困難
・ホストにsshできない。
・docer ps, docker execできない
容易
スケジューリング
(バッチ処理)
用意 別途必要
その他 立ち上がりに時間がかかる

小規模ならサーバを意識しないサーバーレスであるAWS Fargateが楽ですが、
コンテナを長く動かす場合、Amazon EC2も候補になります。


コンテナの監視(CloudWatch Container Insights)

ECSでもEKSでも、CloudWatch Container Insightsで行えます。


コンテナのログ運用の方法

EKS では CloudWatch Container Insights を入れると、CloudWatch Logs に各コンテナの標準出力と標準エラー出力が転送されるようになります。

ログコレクター

awslogsログドライバ

AWS CloudWatch Logsへ転送


Splunkログドライバ

Splunk RUL, Splank トークンパラメータを指定してログ情報を送信


FireLens機能

従来に比べて非常に簡単にログを取り扱うことを可能にした
Fluentdに送る


Fluentd

Logstash

Beats


ログの保存場所

Amazon S3

Amazon CloudWatch Logs

Amazon Elasticsearch Service


コンテナ利用の静的コンテンツ配置場所

S3に保存しCloudFrontを利用

元々EC2でローカルにおいていた場合、S3にデータを置き、CloudFront経由にするのがよくあるやり方です。


参考