Slide 1

Slide 1 text

AWSのコンテナ環境まとめ 戸井田 理

Slide 2

Slide 2 text

コンテナ仮想化とは? KVMやHyper-V、ESXiなどの仮想マシン環境と異なり、一般的なLinuxディ ストリビューションを利用してカーネルは共有しつつユーザー 名前空間が分離している実行環境を提供するための技術 LXCやDockerコンテナ、Windowsコンテナなど種類があります。 →今回はWindowsコンテナについては省略します。

Slide 3

Slide 3 text

LXCとDockerコンテナの違い LXCとDockerコンテナの違いはわかりますか? →LXC(LinuX Container)はOS丸ごとコンテナ仮想化 →Dockerコンテナはアプリケーション単位のコンテナ仮想化 今回はDockerコンテナに注目します。

Slide 4

Slide 4 text

AWSで動かせるコンテナ環境

Slide 5

Slide 5 text

AWSで動かせるコンテナ環境 代表的なものをいくつか列挙します。 ● Amazon ECS ● Amazon EKS ● Amazon Lightsail ● AWS Elastic Beanstalk

Slide 6

Slide 6 text

サービスそれぞれの違い(Amazon ECS) AWSが独自に用意したコンテナオーケストレーションツールを使用 してコンテナを管理します スケーラビリティや初期段階で必要な機能は全て揃っている印象 AWS以外で動く環境はもちろんないのでノウハウは公式とAWS コミュニティに依存

Slide 7

Slide 7 text

サービスそれぞれの違い(Amazon EKS) Kubernetes(以下k8s)をAWSで最適に動作する環境で管理します コントロールプレーンはマネージドでデータプレーンの面倒だけ見る k8sの豊富なツールやコミュニティから情報を選び利用することが 可能(ただしk8sのディストロはAmazon EKS Distroを使用する) 追加料金(0.10USD/h)とバージョンアップがネック バージョンアップせず延長サポート対象となった場合0.60USD/h

Slide 8

Slide 8 text

サービスそれぞれの違い(Amazon Lightsail) IAMやELB、ログ管理などを全て隠蔽してコンテナを手軽に使いたい人向 け いわゆるVPSでdockerが動かせるようにしてあるイメージでOK 現時点ではECRにあるイメージは使えず直接Lightsailコンテナ サービスにイメージをpushする必要がある

Slide 9

Slide 9 text

サービスそれぞれの違い(AWS Elastic Beanstalk) この中で一番歴史があるサービス 基本的にはLightsailと同じようにELB、モニタリング、アプリケーションデプ ロイなどは隠蔽されて使いやすくEC2にデプロイする サービス Lightsailとの違いはLightsailは月額費用が定額だが、Elastic Beanstalk はあくまでEC2などをすべて肩代わりして作ってくれるラッパーに すぎないのでそれぞれの費用がかかる

Slide 10

Slide 10 text

AWSで動かせるその他のコンテナ環境 内部的にECSを使ってるものは例えばAWS BatchやAWS App Runnerな どがあります。 Red Hat OpenShift Service on AWSというサービスもありますが既存シス テムからの移行以外ではコストが高すぎるかと思います。 またEC2上でセルフにコンテナ環境を構築して自前管理するのも方法の一 つです。 AWS Lambdaもコンテナを実行することは可能ですが、今回は省略 します。実行時間が短めなら選択肢に入るかもしれません。

Slide 11

Slide 11 text

AWSで使えるコンテナ実行環境

Slide 12

Slide 12 text

AWSで動かせるコンテナ環境 コンテナを実行するマシンは以下の選択肢から選べます。 ● Amazon EC2(x86_64 or aarch64(graviton)) ● AWS Fargate(x86_64 or aarch64(graviton)) ● Amazon (ECS | EKS) Anywhere EC2とFargateはそれぞれスポットインスタンスを選択することも 可能です。またリザーブドインスタンスやSavings Plansを使用することでコ スト減を狙うことも可能です。

Slide 13

Slide 13 text

実行環境それぞれの違い(Amazon EC2) Amazon EC2は多彩なインスタンスタイプから必要なリソースを自由に選 択できます。 またGPUを必要とする場合現時点で現実的な唯一の選択肢です。 コンテナイメージをEC2内にキャッシュすることでFargateよりも 高速に起動することが可能です。

Slide 14

Slide 14 text

実行環境それぞれの違い(AWS Fargate) AWS Fargateはサーバーレスなコンテナ実行環境としてEC2で必要なOS やミドルウェア類の管理から解放されます。 必要なvCPUもしくはメモリに連動する料金がかかります。このときvCPUと メモリは対応する選択肢が決まっているので例えば1vCPUの場合選べるメ モリは2GB-8GBの間となります。 もっとメモリが必要な場合vCPUを増やす必要があるのでどちらかのリソー スが過剰になってしまうこともあります。

Slide 15

Slide 15 text

実行環境それぞれの違い((ECS|EKS)Anywhere) (ECS | EKS) Anywhereは条件を満たすオンプレミスのサーバーにたいし てエージェントをインストールすることでAWS上で管理しているホストと同じ ようにマネージドなコントロールプレーンを使用する ことが可能です。ただし追加料金がかかります。 また、RDSやNLBなどのVPC上のリソースを必要とする場合Direct ConnectやSite-to-Site VPNなどを使用する必要がある点に注意が必要で す。

Slide 16

Slide 16 text

実行環境それぞれのコスト比較 条件: cpu: 2vCPU mem:4GiB / x86_64 / 東京リージョン / 30.5日 / オンデマンド / Linux / 1USD=155円 ストレージ、ネットワーク等の費用は計算外とする。 ● EC2(c7i.large): 82.2402USD(12,747円) ● Fargate: 90.2084USD(13,982円)

Slide 17

Slide 17 text

コンテナ環境で使えるIaC

Slide 18

Slide 18 text

インフラ周り AWS CloudFormationやAWS CDK、TerraFormなどを用いて管理すること ができます。 他のAWSのサービスやクラウドベンダーと同様です。

Slide 19

Slide 19 text

アプリケーション周り EKSの場合、一般的にはAnsibleなどを使用してアプリケーションを デプロイすることが可能です。これは一般的なk8sと同様の運用が できることを意味します。 ECSの場合、面白法人カヤックの開発したOSSの「ecspresso」を用いて管 理することが良いかと思います。

Slide 20

Slide 20 text

コンテナ環境で使えるストレージ

Slide 21

Slide 21 text

ストレージ (ECS | EKS)で使用できるストレージは以下の通りです。 ● Amazon Elastic Block Store (EBS) ● Amazon Elastic File System (EFS) ● Amazon FSx ● Amazon S3

Slide 22

Slide 22 text

ストレージそれぞれの違い(Amazon EBS) オンプレで言うところの内蔵ディスク パフォーマンスと容量のバランスは割と良い EC2のみ対応で、容量拡張に手間がかかってしまう アタッチしているEC2がSPoFになってしまうため注意

Slide 23

Slide 23 text

ストレージそれぞれの違い(Amazon EFS) オンプレで言うところのNAS 複数のマシンから同時にアクセスすることが可能 AZ跨ぎでのアクセスやFargateからのマウントもOK 信頼性、可用性がEBSよりも高い、従量課金なので使用した分だけお金を 払えば良い EBS(gp3)とEFS(マルチAZ)で約3.75倍EFSのほうが高い EBS(gp3)とEFS(シングルAZ)で約2倍EFSのほうが高い

Slide 24

Slide 24 text

ストレージそれぞれの違い(Amazon FSx) 4つのファイルシステムから選べるハイパフォーマンスなストレージ ● NetApp ONTAP ● OpenZFS ● Windows File Server ● Lustre 高スループット低レイテンシー、スケーラブルなストレージを選べる EC2のみ対応、コンテナからはバインドマウントする

Slide 25

Slide 25 text

ストレージそれぞれの違い(Amazon S3) 高信頼性でほぼ無限にスケールするオブジェクトストレージ S3標準クラス、~50TB/month で0.023USD/GBで圧倒的に安い 基本的にAPIを用いてアクセスするのでスループットは他と比較して良くな い オブジェクトストレージなのでファイルサーバー的な使い方は辛い

Slide 26

Slide 26 text

AWSで使えるコンテナセキュリティ

Slide 27

Slide 27 text

コンテナセキュリティ コンテナセキュリティを実現するAWSのサービスは以下の2つです。 ● Amazon Inspector ● Amazon GuardDuty これ以外にもAWS WAF、AWS Shield、AWS Network Firewallなど コンテナに限らず使用できるサービスやサードパーティの製品などがありま す。

Slide 28

Slide 28 text

コンテナセキュリティ(Amazon Inspector) Amazon InspectorはECRにpushされたイメージの脆弱性スキャンを行い、 脆弱性を検知した場合EventBridgeと連携してSNSやLambda等を通して 通知することが可能です。 基本スキャンと拡張スキャンの2種類があり、拡張スキャンの方は課金対象 ですがプログラミング言語のパッケージマネージャによってインストールさ れたものも対象となります。 EC2で動いている場合EC2インスタンスもInspectorによってスキャンするこ とができます。

Slide 29

Slide 29 text

コンテナセキュリティ(Amazon GuardDuty) Amazon GuardDutyはEKSやECSのランタイムモニタリングをサイドカーコ ンテナによって実現して不審なアクティビティ(e.g. 権限昇格、マイニング)を 検知します。 EC2で動いている場合EBSを対象としてマルウェアスキャンを行うことがで きる他、S3やRDSに対する不審なアクティビティを検知することも可能です。 検知するのみなのでEventBridge+SNSなどで通知することが重要。 コストを許容できるのであれば絶対に有効にするべきサービスの1つ