AWSのコンテナサービス
コンテナのオートストレーションサービス(EKSも同様のサービス)。
実行環境はFargate,EC2があり、イメージレジストリはECR。
コンテナが実行されるまでの流れ
①ユーザーがオーケストレーターに指示
②仮想マシンにインストールされているエージェントからコンテナのランタイムを呼び出す
③イメージレジストリからコンテナイメージを取り出してコンテナを実行する
↓
手作業によるミスオペや効率ダウンをなくす
ECSの要素
タスク定義
・コンテナの仕様書。
・コンテナの定義(イメージの場所)、割り当てるIAMロールなどの情報が入っている。
・JSON形式。
・タスク定義は変更できない(イミュータブル)なので、更新したコンテナイメージ(古いイメージはバージョニングされているので別物)をタスク定義する(Familyパラメータ)。その後サービスを、古いものから新しいものに変え、見るサービスを変更する。
・コンテナ定義内でログの設定ができる。
クラスター
実行環境の境界。タスク定義に基づいて実際に実行されるもの。複数のコンテナを1つのタスク上、ホスト上で実行される。
サービス
タスクを決められた数コピーして、維持する。
ELB、オートスケーリングと連携できる。
ECSの実行環境
EC2
・ECSコンテナエージェントを実行(コンテナ内で実行されている)
・ECSコンテナインスタンスIAMロールを設定
・ECS-optimize AMIはスターターキットのようなものなので手軽に実行できる
・運用の手間がある
・スケーリングは自分でやる
Fargate
・マネージドサービス
・コンテナネイティブなので起動時間や使用リソースに応じた料金設定(従量課金)
・AWSリソースとの連携(オートスケーリング、VPC)が自動でされる
機密情報の取り扱い
Secret Manager シークレット
EC2起動タイプではJSONキーやバージョンを指定する
Systems Manager パラメーターストア
同じリージョンの場合は名前で指定可能だが、別リージョンはARNを指定
コンテナの実行方法
タスク
タスク定義で指定されたコンテナを起動し、メインのコンテナが終了するとタスクも停止する、バッチ処理などのワークロード向け。
サービス
指定した数のタスクを維持する。失敗した場合は、新しいタスク起動してを置き換える。
ELBやオートスケーリングなど。長時間使用するときに向いている。
その他
クラスターキャパシティープロバイダー
タスク配置を柔軟にコントロール
オンデマンド、スポットを割合で組み合わせられる。
ターゲット追跡スケーリングポリシー
指定したメトリクスがターゲットの値に近づくように自動的に調整
ステップスケーリングポリシー
アラームをトリガーに調整値に基づいて増減。ターゲット追跡スケーリングポリシーと組み合わせできる。