Amazon ECS と Amazon ECR 超概要+時間があったら Demo

26c17d2f70a57a8fd9a70885682fcd74?s=47 Yohei Kawahara
April 23, 2016
8.8k

Amazon ECS と Amazon ECR 超概要+時間があったら Demo

第9回 コンテナ型仮想化の情報交換会@福岡にてお話させて頂いた資料です。

AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)(http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs) を多数引用させて頂いております。誠に有難うございました。

26c17d2f70a57a8fd9a70885682fcd74?s=128

Yohei Kawahara

April 23, 2016
Tweet

Transcript

  1. Amazon ECS と Amazon ECR 超概要 +時間があったら Demo 2016.04.23 第9回

    コンテナ型仮想化の情報交換会@福岡 かっぱ(@inokara)
  2. 提供

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

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

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

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

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

  8. 企業規模別 cloudpack利⽤⽐率 36% 27 37 % % 中⼩企業 中堅企業 ⼤企業

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

    CM です
  10. これは cloudpack の CM です

  11. これは cloudpack の CM です

  12. これは cloudpack の CM です

  13. これは cloudpack の CM です

  14. アジェンダ ☁ 注意 ☁ ⾃⼰紹介 ☁ Amazon ECS & ECR

    ⼊⾨ ☁ ecs-cli を利⽤したデモ ☁ 終わり
  15. 注意 ☁ 私が Amazon EC2 Container Service と Amazon EC2

    Container Registry について調べたメモを紹介させて頂きます ☁ AWS Blackbelt 2015シリーズの資料を多数引⽤させて頂いて おります ☁ 本資料に記載された内容の全ては作成時点の内容となります ☁ 本資料内で Amazon EC2 Container Service を Amazon ECS と Amazon EC2 Registry を Amazon ECR と省略して記載し ている部分があります
  16. ⾃⼰紹介 ☁ 川原洋平(@inokara) ☁ 「かっぱ」とお気軽にお声がけ下さい ☁ 初⽼丸(40 歳) ☁ アイレット株式会社

    cloudpack 事業部所属 ☁ ⾹椎からリモート勤務(もうすぐ 2 年⽬) ☁ 好きな⾔葉:中年⽼い易く作業成り難し ☁ 最近気になること:加齢臭
  17. Amazon EC2 Container Service EC2 Container Registry ⼊⾨

  18. ということで… まずは…

  19. None
  20. ですが… Docker ⾃体のお話は割愛します

  21. そして アンケート

  22. Amazon ECS や ECR についてアンケート ☁ ご存知の⽅ ☁ 触ったことがある⽅ ☁

    既に⾃社、お客様限らずサービス等に投⼊してバ リバリ利⽤されている⽅
  23. 有難うございました

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

  25. 三⾏で表す Amazon ECS と ECR ☁ Amazon ECS とは…EC2 上で

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

  28. Amazon ECS が提供する機能 ☁ Docker サポート ☁ コンテナのスケジューリング ☁ コンテナ構成の管理やグルーピング

    ☁ クラスタ管理 ☁ AWS フルマネージド ☁ AWS の各種サービスとの連携
  29. Amazon ECS の構成要素 ☁ ECS Cluster ☁ Container Instance ☁

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

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

  32. Amazon ECS の構成要素 ☁ ECS Cluster(クラスタ管理) ☁ クラスタ内の Container instance

    のリソースを管理する ☁ 特定の AWS リージョンの Services と Container instance の論理 的なグルーピングしたもの
  33. 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)
  34. Amazon ECS の構成要素 ☁ Container Instance(クラスタ管理) ☁ ECS Agent が動作しているEC2インスタンスで、Container

    Instance 上で Task が動作する ☁ オフィシャルでは Amazon ECS-optimized AMI が提供されている ☁ しかし…VPC 内で起動して、ECS Agent が動きさえすれば Container Instance になれるのでディストリビューションはある程 度選ぶことは出来る(サポートを受けられない可能性があるので要確 認)
  35. http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs グルーピング

  36. Amazon ECS の構成要素 ☁ Task Definition(グルーピング) ☁ ECS クラスタ上で稼働させるコンテナのコンテナイメージや CPU

    や メモリ、ネットワークポートやボリュームを定義する ☁ コンテナの集合を定義するイメージ…例えば、WordPress を起動し たい場合に Web コンテナと DB コンテナを 1 つの Task Definition に定義する ☁ JSON にて定義する
  37. 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" }
  38. Amazon ECS の構成要素 ☁ Task(グルーピング) ☁ Task Definition が Container

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

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

    には複数のコンテナが含まれることもある ☁ Container Instance 上で実⾏される
  41. http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs スケジューラ

  42. Amazon ECS の構成要素 ☁ Run Task(スケジューラ) ☁ Task Definition から指定した数の

    Task を実⾏する ☁ Container Instance は⾃動的に選択される ☁ ユースケース:バッチ処理
  43. Amazon ECS の構成要素 ☁ Service(スケジューラ) ☁ Task を必要数保持するスケジューラ ☁ Desired

    tasks で必要な数を指定→この数を維持しようとする ☁ 新しい Task Definition をデプロイしつつ切替も可能 ☁ Elastic Load Balancing との連携も可能 ☁ ユースケース:Web サービス ☁ 後ほどデモをお⾒せ出来れば…
  44. http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs クラスタ管理 グルーピング スケジューラ

  45. Amazon ECS ってなんぼ? ☁ ECS ⾃体の利⽤は無料 ☁ Container Instance として利⽤する

    EC2 の料 ⾦(Instance と EBS の料⾦) ☁ ELB を利⽤する場合には ELB の料⾦
  46. Amazon ECS を操作する⽅法 ☁ マネジメントコンソール ☁ AWS CLI ☁ ECS

    CLI ☁ AWS SDK
  47. 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) ☁ ほぼマネジメントコンソール不要
  48. Amazon ECS のモニタリング ☁ CloudWatch で提供される ☁ クラスタ単位で CPU 使⽤率、メモリ使⽤量

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

    ☁ Service 単位で CPU 使⽤率、メモリ使⽤量 ☁ CloudWath のアラームを定義してアクションを 起こすことが可能
  50. コンテナリソースの制御 ☁ CPU は 1024 unit = CPU 1 core

    ☁ 指定した unit 数分のリソースは保証される ☁ 指定した以上に利⽤することも可能(リソースに余剰があれば) ☁ Memory は MiB で指定する ☁ 指定容量以上使おうとするとコンテナは kill される ☁ リソースが不⾜している場合にはコンテナは起動 しない
  51. Amazon ECS を操作する⽅法 ☁ マネジメントコンソール ☁ AWS CLI ☁ ECS

    CLI(後ほど Demo します) ☁ AWS SDK
  52. Amazon EC2 Container Registry

  53. Amazon ECR が提供する機能 ☁ Docker Registry HTTP API V2 をサポート

    ☁ コンテナイメージは Amazon S3 に保存されるの で⾼い可⽤性と耐久性が提供される ☁ コンテナイメージは HTTPS で暗号化されて送信 され、さらに S3 側で暗号化される ☁ IAM によるイメージへのアクセスコントロール
  54. Amazon ECR の構成要素 ☁ Registry ☁ Authorization token ☁ Repository

    Policy ☁ Image
  55. 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 等)が利⽤可能
  56. 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
  57. Amazon ECR の構成要素 ☁ Repository Policy ☁ IAM によってコンテナイメージへのアクセス制限を設けることが出 来る…例えば、pull

    のみを許可、push と pull のみを許可等を定義す ることが出来る ☁ AWS アカウントを越えてコンテナイメージを共有することが出来る
  58. Amazon ECR の構成要素 ☁ Image ☁ ECR に登録されたコンテナイメージは ECS の

    Task Definition から 指定することが出来る(出来なきゃ困る) ☁ 他の Docker Engine からも利⽤することが出来る…例えば、Elastic Beanstalk アプリケーションや⼿元の Docker Engine からも利⽤す ることが出来る!
  59. None
  60. 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 〜 ☁ 同⼀リージョン間は無料 ☁ リージョンを跨ぐ場合には受送信ともに費⽤が発⽣する
  61. Amazon ECR のモニタリング ☁ CloudWatch で提供される(とのこと) ☁ マネージメントコンソールから⾒ることが出来て いない… ☁

    マネジメントコンソールで⾒たという⽅、ご⼀報 下さいmm
  62. Amazon ECR を操作する⽅法 ☁ マネジメントコンソール ☁ AWS CLI ☁ AWS

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

  64. Demo

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

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

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

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

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

  70. 最後に

  71. Amazon ECS と ECR を触った率直な感想 ☁ ほぼ素の Docker なのでとっつき易かった ☁

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

    ☁ コンテナとコンテナインスタンスが連動したスケールア ウト、スケールインは⼀⼿間必要 ☁ サービス検知(アプリケーションの死活や Listen してい るポート等の検知)は別のツールの助けが必要
  73. 参考リンク ☁ 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
  74. 質問…(はお⼿柔らかに…)

  75. 提供

  76. None