[AWS]コンテナ管理サービスを理解する
DockerコンテナをAmazon ECSで立ち上げたくて調べだしたら
あまりに知らない言葉が多すぎて訳が分からなくなったので
実践のまえに用語の理解に時間を割くことにした
AWSのコンテナ関係のサービス
AWSにはDockerコンテナをコントロールするサービスとして
ECS(Elastic Container Service)
EKS(Elastic Kubernetes Service)
の2つの選択肢がある
EKSはそのままKubernetesだが、ECSはアマゾンオリジナルだがDocker Swarmに似たもの
どちらも高度なマイクロサービスのための複雑なコンテナの管理を実現するために生まれたアプリケーションで、コンテナオーケストレーションツールなどとも呼ばれるもの
また、AWSにはDockerコンテナを稼働させるインフラサービスとして
EC2
Fragate
という2つの選択肢がある
EC2は仮想サーバー、Fargateはサーバレスサービス
どのような組み合わせも選択できるがFargate + ECSはセットアップもメンテナンスも簡単で料金も安くすむとのことで、初心者のスモールプロジェクトには最適な選択肢だ
ECSとは
AWSでコンテナを専門にあつかうサービスだ
調べるとよくこんな感じの図を見かけるのだが、ECS自体がこのような入れ子構造をしているのではなく、ECSを利用するためには4種類の定義情報を必要とし、それぞれの扱う概念的な広さが
クラスター>サービス>タスク>コンテナ と広くなってゆく
という意味らしい
コンテナ
Dockerコンテナの事
タスク
コンテナの実行の仕方をいろいろ定義するもの
以下のような内容を指定できるとのことだ
タスクの各コンテナで使用する Docker イメージ
各タスクで、またはタスク内の各コンテナで使用する CPU とメモリの量
使用する起動タイプ(EC2かFargateか)
タスクのコンテナで使用する Docker ネットワーキングモード
タスクで使用するログ記録設定
コンテナが終了または失敗した場合にタスクを実行し続けるかどうか
コンテナの開始時に実行するコマンド
タスク内でコンテナが使用するデータボリューム
タスクで使用される IAMロール
サービス
コンテナの管理を自動化するための定義
ロードバランサーを使った負荷分散や、スケーリング、コンテナがクラッシュしたときの再起動、モニタリングの方法といったことをスケジューリングするもの
クラスター
タスクやサービスをひとまとめにしたもので
どのリージョンで起動するか?
どの仮想ネットワークを利用するか?
といったもっとも広い範囲の設定情報を扱うもの
ECRとは
Amazon Elastic Container Registryの略で、コンテナイメージを登録しておくDockerHubのようなもの