Slide 1

Slide 1 text

Amazon ECS と Amazon ECR 超概要 +時間があったら Demo 2016.04.23 第9回 コンテナ型仮想化の情報交換会@福岡 かっぱ(@inokara)

Slide 2

Slide 2 text

提供

Slide 3

Slide 3 text

AWSを活⽤しながらビジネスに集中できる コンシェルジュサービス これは cloudpack の CM です

Slide 4

Slide 4 text

24時間365⽇ 定額課⾦/ 請求書払い PCI DSS、ISMS、Pマーク取得済みの運⽤体制 監視運⽤保守 企業 AWS これは cloudpack の CM です

Slide 5

Slide 5 text

(1,500⽇間) ※ 2010年5⽉cloudpackサービススタート 36,000時間 連続稼働 (※) これは cloudpack の CM です

Slide 6

Slide 6 text

4 社 社超 プロジェク ト超 500 600 5年間 5年間AWSのみで運⽤保守 これは cloudpack の CM です

Slide 7

Slide 7 text

アジア地域4社 世界28社 最上位パートナー プレミアコンサルティングパートナー これは cloudpack の CM です

Slide 8

Slide 8 text

企業規模別 cloudpack利⽤⽐率 36% 27 37 % % 中⼩企業 中堅企業 ⼤企業 これは cloudpack の CM です

Slide 9

Slide 9 text

Web系 91 % うち33%が ソーシャルゲームや メディアサイト cloudpackの主な利⽤状況 これは cloudpack の CM です

Slide 10

Slide 10 text

これは cloudpack の CM です

Slide 11

Slide 11 text

これは cloudpack の CM です

Slide 12

Slide 12 text

これは cloudpack の CM です

Slide 13

Slide 13 text

これは cloudpack の CM です

Slide 14

Slide 14 text

アジェンダ ☁ 注意 ☁ ⾃⼰紹介 ☁ Amazon ECS & ECR ⼊⾨ ☁ ecs-cli を利⽤したデモ ☁ 終わり

Slide 15

Slide 15 text

注意 ☁ 私が Amazon EC2 Container Service と Amazon EC2 Container Registry について調べたメモを紹介させて頂きます ☁ AWS Blackbelt 2015シリーズの資料を多数引⽤させて頂いて おります ☁ 本資料に記載された内容の全ては作成時点の内容となります ☁ 本資料内で Amazon EC2 Container Service を Amazon ECS と Amazon EC2 Registry を Amazon ECR と省略して記載し ている部分があります

Slide 16

Slide 16 text

⾃⼰紹介 ☁ 川原洋平(@inokara) ☁ 「かっぱ」とお気軽にお声がけ下さい ☁ 初⽼丸(40 歳) ☁ アイレット株式会社 cloudpack 事業部所属 ☁ ⾹椎からリモート勤務(もうすぐ 2 年⽬) ☁ 好きな⾔葉:中年⽼い易く作業成り難し ☁ 最近気になること:加齢臭

Slide 17

Slide 17 text

Amazon EC2 Container Service EC2 Container Registry ⼊⾨

Slide 18

Slide 18 text

ということで… まずは…

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

ですが… Docker ⾃体のお話は割愛します

Slide 21

Slide 21 text

そして アンケート

Slide 22

Slide 22 text

Amazon ECS や ECR についてアンケート ☁ ご存知の⽅ ☁ 触ったことがある⽅ ☁ 既に⾃社、お客様限らずサービス等に投⼊してバ リバリ利⽤されている⽅

Slide 23

Slide 23 text

有難うございました

Slide 24

Slide 24 text

有難うございました 出典:http://mentai-park.com/about/

Slide 25

Slide 25 text

三⾏で表す Amazon ECS と ECR ☁ Amazon ECS とは…EC2 上で Docker コンテナのクラスタ を運⽤管理出来るサービスで AWS の他のサービスとの連携 も可能 ☁ Amazon ECR とは…S3 を使って Docker Hub のようなコ ンテナイメージリポジトリを提供しているサービス ☁ ざっくり⾔うと…AWS が提供する Docker Machine / Docker Swarm / Docker Compose そして Docker Hub(だ と思う)

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Amazon EC2 Container Service

Slide 28

Slide 28 text

Amazon ECS が提供する機能 ☁ Docker サポート ☁ コンテナのスケジューリング ☁ コンテナ構成の管理やグルーピング ☁ クラスタ管理 ☁ AWS フルマネージド ☁ AWS の各種サービスとの連携

Slide 29

Slide 29 text

Amazon ECS の構成要素 ☁ ECS Cluster ☁ Container Instance ☁ ECS Agent ☁ Task Definition ☁ Task ☁ Container ☁ Run Task ☁ Service http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs

Slide 30

Slide 30 text

http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs クラスタ管理 グルーピング スケジューラ クラスタの状態管理 コンテナ群の管理 コンテナの配置、状態管理、デプロイ

Slide 31

Slide 31 text

http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs クラスタ管理

Slide 32

Slide 32 text

Amazon ECS の構成要素 ☁ ECS Cluster(クラスタ管理) ☁ クラスタ内の Container instance のリソースを管理する ☁ 特定の AWS リージョンの Services と Container instance の論理 的なグルーピングしたもの

Slide 33

Slide 33 text

Amazon ECS の構成要素 ☁ ECS Agent(クラスタ管理) ☁ Amazon ECS Endpoint と通信を⾏うエージェント ☁ こやつも Docker コンテナ ☁ Docker Hub にて提供されている(https://hub.docker.com/r/ amazon/amazon-ecs-agent/) ☁ Go で実装(https://github.com/aws/amazon-ecs-agent)

Slide 34

Slide 34 text

Amazon ECS の構成要素 ☁ Container Instance(クラスタ管理) ☁ ECS Agent が動作しているEC2インスタンスで、Container Instance 上で Task が動作する ☁ オフィシャルでは Amazon ECS-optimized AMI が提供されている ☁ しかし…VPC 内で起動して、ECS Agent が動きさえすれば Container Instance になれるのでディストリビューションはある程 度選ぶことは出来る(サポートを受けられない可能性があるので要確 認)

Slide 35

Slide 35 text

http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs グルーピング

Slide 36

Slide 36 text

Amazon ECS の構成要素 ☁ Task Definition(グルーピング) ☁ ECS クラスタ上で稼働させるコンテナのコンテナイメージや CPU や メモリ、ネットワークポートやボリュームを定義する ☁ コンテナの集合を定義するイメージ…例えば、WordPress を起動し たい場合に Web コンテナと DB コンテナを 1 つの Task Definition に定義する ☁ JSON にて定義する

Slide 37

Slide 37 text

Amazon ECS の構成要素 ☁ Task Definition(グルーピング) ☁ ECS クラスタ上で稼働させるコンテナのコンテナイメージや CPU や メモリ、ネットワークポートやボリュームを定義する ☁ コンテナの集合を定義するイメージ…例えば、WordPress を起動し たい場合に Web コンテナと DB コンテナを 1 つの Task Definition に定義する ☁ JSON にて定義する { "containerDefinitions": [ { "name": "wordpress", "links": [ "mysql" ], "image": "wordpress", "essential": true, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ], "memory": 500, "cpu": 10 }, { "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "password" } ], "name": "mysql", "image": "mysql", "cpu": 10, "memory": 500, "essential": true } ], "family": "hello_world" }

Slide 38

Slide 38 text

Amazon ECS の構成要素 ☁ Task(グルーピング) ☁ Task Definition が Container Instance に展開された状態 ☁ リソースに余裕がある Container Instance で起動される ☁ リソースに余裕が無い場合には起動しない、リソースに余裕が無くな るとコンテナはガツンと停⽌する

Slide 39

Slide 39 text

Amazon ECS の構成要素 ☁ Container(グルーピング) ☁ Docker コンテナ ☁ Task の実体 ☁ Task には複数のコンテナが含まれることもある ☁ Container Instance 上で実⾏される

Slide 40

Slide 40 text

Amazon ECS の構成要素 ☁ Container(グルーピング) ☁ Task の実体 ☁ Task には複数のコンテナが含まれることもある ☁ Container Instance 上で実⾏される

Slide 41

Slide 41 text

http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs スケジューラ

Slide 42

Slide 42 text

Amazon ECS の構成要素 ☁ Run Task(スケジューラ) ☁ Task Definition から指定した数の Task を実⾏する ☁ Container Instance は⾃動的に選択される ☁ ユースケース:バッチ処理

Slide 43

Slide 43 text

Amazon ECS の構成要素 ☁ Service(スケジューラ) ☁ Task を必要数保持するスケジューラ ☁ Desired tasks で必要な数を指定→この数を維持しようとする ☁ 新しい Task Definition をデプロイしつつ切替も可能 ☁ Elastic Load Balancing との連携も可能 ☁ ユースケース:Web サービス ☁ 後ほどデモをお⾒せ出来れば…

Slide 44

Slide 44 text

http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs クラスタ管理 グルーピング スケジューラ

Slide 45

Slide 45 text

Amazon ECS ってなんぼ? ☁ ECS ⾃体の利⽤は無料 ☁ Container Instance として利⽤する EC2 の料 ⾦(Instance と EBS の料⾦) ☁ ELB を利⽤する場合には ELB の料⾦

Slide 46

Slide 46 text

Amazon ECS を操作する⽅法 ☁ マネジメントコンソール ☁ AWS CLI ☁ ECS CLI ☁ AWS SDK

Slide 47

Slide 47 text

ECS CLI についてちょっとだけ ☁ ECS を操作出来るコマンドラインツール ☁ AWS より Mac OS X 版と Linux 版が提供されている ☁ https://github.com/aws/amazon-ecs-cli ☁ コンテナインスタンスのスケールイン、スケールアウトも出来 る(ecs-cli scale N) ☁ Docker Compose の YAML 定義をほぼそのまま利⽤可能(ecs- cli compose) ☁ ほぼマネジメントコンソール不要

Slide 48

Slide 48 text

Amazon ECS のモニタリング ☁ CloudWatch で提供される ☁ クラスタ単位で CPU 使⽤率、メモリ使⽤量 ☁ Service 単位で CPU 使⽤率、メモリ使⽤量 ☁ CloudWath のアラームを定義してアクションを 起こすことが可能

Slide 49

Slide 49 text

Amazon ECS のモニタリング ☁ CloudWatch で提供される ☁ クラスタ単位で CPU 使⽤率、メモリ使⽤量 ☁ Service 単位で CPU 使⽤率、メモリ使⽤量 ☁ CloudWath のアラームを定義してアクションを 起こすことが可能

Slide 50

Slide 50 text

コンテナリソースの制御 ☁ CPU は 1024 unit = CPU 1 core ☁ 指定した unit 数分のリソースは保証される ☁ 指定した以上に利⽤することも可能(リソースに余剰があれば) ☁ Memory は MiB で指定する ☁ 指定容量以上使おうとするとコンテナは kill される ☁ リソースが不⾜している場合にはコンテナは起動 しない

Slide 51

Slide 51 text

Amazon ECS を操作する⽅法 ☁ マネジメントコンソール ☁ AWS CLI ☁ ECS CLI(後ほど Demo します) ☁ AWS SDK

Slide 52

Slide 52 text

Amazon EC2 Container Registry

Slide 53

Slide 53 text

Amazon ECR が提供する機能 ☁ Docker Registry HTTP API V2 をサポート ☁ コンテナイメージは Amazon S3 に保存されるの で⾼い可⽤性と耐久性が提供される ☁ コンテナイメージは HTTPS で暗号化されて送信 され、さらに S3 側で暗号化される ☁ IAM によるイメージへのアクセスコントロール

Slide 54

Slide 54 text

Amazon ECR の構成要素 ☁ Registry ☁ Authorization token ☁ Repository Policy ☁ Image

Slide 55

Slide 55 text

Amazon ECR の構成要素 ☁ Registry ☁ https://${aws_account_id}.dkr.ecr.${region}.amazonaws.com という Registry URL が与えられる ☁ 現時点ではバージニア(us-east-1)とオレゴン(us-west-2)、アイル ランド(eu-west-1)リージョンのみ提供 ☁ Docker Registry HTTP API V2 がサポートされている ☁ Docker コマンド(push / pull / list / tag 等)が利⽤可能

Slide 56

Slide 56 text

Amazon ECR の構成要素 ☁ Authorization token ☁ aws-cli の get-logon コマンドでログイントークンを取得してログイ ンすることで操作が可能となる # aws-cli ͰϩάΠϯτʔΫϯΛऔಘ aws --region us-east-1 ecr get-login # ҎԼͷΑ͏ʹग़ྗ͞ΕΔͷͰɺίϐϖͰ࣮ߦ͢Δ docker login -u AWS -p xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx -e none https://xxxxxxxxxxxxxxx.dkr.ecr.us- east-1.amazonaws.com

Slide 57

Slide 57 text

Amazon ECR の構成要素 ☁ Repository Policy ☁ IAM によってコンテナイメージへのアクセス制限を設けることが出 来る…例えば、pull のみを許可、push と pull のみを許可等を定義す ることが出来る ☁ AWS アカウントを越えてコンテナイメージを共有することが出来る

Slide 58

Slide 58 text

Amazon ECR の構成要素 ☁ Image ☁ ECR に登録されたコンテナイメージは ECS の Task Definition から 指定することが出来る(出来なきゃ困る) ☁ 他の Docker Engine からも利⽤することが出来る…例えば、Elastic Beanstalk アプリケーションや⼿元の Docker Engine からも利⽤す ることが出来る!

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

Amazon ECR ってなんぼ? ☁ ストレージ使⽤料 0.10 USD/GB/Month ☁ 受信:Amazon EC2 Container Registry への転送 (docker push)は $0.000 /GB ☁ 送信:Amazon EC2 Container Registry からの転送 (docker pull)は $0.000 /GB 〜 ☁ 同⼀リージョン間は無料 ☁ リージョンを跨ぐ場合には受送信ともに費⽤が発⽣する

Slide 61

Slide 61 text

Amazon ECR のモニタリング ☁ CloudWatch で提供される(とのこと) ☁ マネージメントコンソールから⾒ることが出来て いない… ☁ マネジメントコンソールで⾒たという⽅、ご⼀報 下さいmm

Slide 62

Slide 62 text

Amazon ECR を操作する⽅法 ☁ マネジメントコンソール ☁ AWS CLI ☁ AWS SDK

Slide 63

Slide 63 text

安⼼してください これまでの内容は ドキュメントに載っています!

Slide 64

Slide 64 text

Demo

Slide 65

Slide 65 text

demo: menu ☁ ⼀個⽌まっても…だい、ジョーブ ☁ ⾜りないなら持ってこよう ☁ ECS コンテナイリュージョン

Slide 66

Slide 66 text

demo: ⼀個⽌まっても…だい、ジョーブパターン

Slide 67

Slide 67 text

demo: ⾜りないなら持ってこようパターン

Slide 68

Slide 68 text

demo: ECS コンテナイリュージョン

Slide 69

Slide 69 text

デモに使った各種ファイルは… https://github.com/inokappa/ecs-demo

Slide 70

Slide 70 text

最後に

Slide 71

Slide 71 text

Amazon ECS と ECR を触った率直な感想 ☁ ほぼ素の Docker なのでとっつき易かった ☁ ecs-cli を使えばマネジメントコンソールほぼ不要で楽 ☁ ECR でプライベートリポジトリが利⽤出来るは有り難 い(但し、まだ東京リージョンには展開されていない) ☁ 実際に試せていないけど AWS の各種リソースとうま く組み合わせることで旨味がより引き出せそう

Slide 72

Slide 72 text

Amazon ECS と ECR を触った率直な感想 ☁ クラスタ管理、グループ化、スケジューラの概念は実際 に動かしてみると理解が深まりそう ☁ コンテナイリュージョンの挙動がまだ掴みきれていない ☁ コンテナとコンテナインスタンスが連動したスケールア ウト、スケールインは⼀⼿間必要 ☁ サービス検知(アプリケーションの死活や Listen してい るポート等の検知)は別のツールの助けが必要

Slide 73

Slide 73 text

参考リンク ☁ http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs ☁ http://www.slideshare.net/AmazonWebServicesJapan/amazon-ec2-container-service-deep- dive-56147464 ☁ http://www.atmarkit.co.jp/ait/articles/1511/27/news001.html ☁ http://qiita.com/con_mame/items/1df441d86c703a0e6fa6 ☁ http://www.slideshare.net/hawinternational/jenkinsamazon-ecs-ci-56080630 ☁ https://blogs.aws.amazon.com/application-management/post/TxFRDMTMILAA8X/Send-ECS- Container-Logs-to-CloudWatch-Logs-for-Centralized-Monitoring ☁ https://aws.amazon.com/blogs/compute/service-discovery-via-consul-with-amazon-ecs/ ☁ https://speakerdeck.com/soulou/docker-containers-monitoring ☁ https://blogs.aws.amazon.com/application-management/post/Tx351HCZ9D1RQ84/Using-Locust- on-AWS-Elastic-Beanstalk-for-Distributed-Load-Generation-and-Testin ☁ http://hakobera.hatenablog.com/entry/2016/03/02/084204

Slide 74

Slide 74 text

質問…(はお⼿柔らかに…)

Slide 75

Slide 75 text

提供

Slide 76

Slide 76 text

No content