AWS ElasticBeanstalk Docker対応 アマゾン データサービス ジャパン株式会社 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. AWS ElasticBeanstalk: 構築・デプロイの⾃自動化サービス Instance WAR ZIP Java Python Amazon RDS Elastic Load Balancer deploy! Instance CloudWatch PHP .NET Auto scaling Group Ruby nodeJS Docker 2 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. ElasticBeanstalkの論論理理構成 Application Environment URL Environment Configuration Environment URL Environment Configuration Environment URL Environment Configuration Version Respository WAR/ZIP WAR/ZIP WAR/ZIP WAR/ZIP Configuration Template 3 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. ElasticBeanstalkのDockerサポート ! ElasticBeanstalkで任意のDockerコンテナを実⾏行行可能に • Dockerコンテナとして構築できれば任意のDistribution・任意の ⾔言語で構築した実⾏行行環境をElasticBeanstalkにデプロイ出来る meets ! さらに、下記のような運⽤用が可能 • ローカルのコンテナ上でコードを開発&テスト • 同じコンテナをElasticBeanstalk上の本番環境にデプロイ 4 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. 各環境の中には ! ⾃自動で構築されたDocker環境 Application • Load-‐‑‒balanced / Single Instance • 各インスタンスに1つの管理理された コンテナ Environment URL Environment Configuration AMI Admin AWS Management Console Instance Users Elastic Load Balancer Amazon RDS SSH Instance CloudWatch 5 Auto Scaling Group Developer ZIP Dockerfile © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. 各インスタンスの中には Environment 各インスタンス ・マネージされたコンテナ が1つ ・Host Manager (HM)が コマンドを実行 Nginx (tcp:80) コンテナとの 接続ポートの更新 Docker (tcp: xxxx) コンテナの上げ下げ HM EC2 コマンド AutoScaling 6 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. コンテナの設定記述の仕⽅方 ! 次の2種類の記述⽅方式を利利⽤用可能 • Dockerfile • ⼀一般的なコンテナの構築に使われるDockerfile • AWS特有ではないため、どこでも作成・編集・構築が可能 • コンテナの構築⽅方法を指⽰示するファイルなのでコンテナ起動オプ ションを指定したい場合は不不⼗十分 • Dockerrun.aws.json • ElasticBeanstalk独⾃自の形式 • 使⽤用するコンテナイメージ、コンテナから参照するボリュームなど を指定 • コンテナの構築⽅方法⾃自体は指定できない(要Dockerfileと併⽤用) 7 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. Dockerfileの例例 ! いわゆる普通のDockerfile • EXPOSEで指定したポートがnginxとの接続に使われる 注:nginx経由で外部に開けるポートは1つだけ ! その他注意点 • FROMとEXPOSEは必須 • CMDとENTRYPOINTのどちらかは必須 8 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. Dockerrun.aws.jsonの例例 プライベートレポジトリを使用する際に必要 S3バケット上に置いた認証情報ファイルを指定 使用すべきイメージ コンテナがEXPOSEするポートを指定 (ElasticBeanstalkが使用するのはContainerPortのみ) コンテナにマウントすべき EC2インスタンスのディレクトリを指定 コンテナ内のログディレクトリを指定 9 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. デプロイの仕⽅方 ! デプロイ時のファイル形式も2種類 • 単⼀一ファイル • Dockerfile / Dockerrun.aws.jsonのみのデプロイの場合 • Pros: アーカイブを作る必要がなく簡便便 • Cons: ElasticBeanstalkの環境カスタマイズやリソースファイルの デプロイ等は出来ない • ZIPアーカイブ / gitでデプロイ • Dockerfile / Dockerrun.aws.jsonあるいは両⽅方を含むアーカイブ • Pros: Dockerfileでイメージを構築して起動オプションを指定して 起動したり、環境カスタマイズを⾏行行ったりすることが可能 • Cons: アーカイブを作らないといけない 10 柔軟性とコンテナ記述ファイルのバージョン管理も考慮すると gitで管理してgit aws.pushでデプロイがおすすめ © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. デプロイ時の動作 (1/4) Version Respository Nginx (tcp:80) Version 1 Docker (current, ver 1) Version 2 EC2 HM 1. Deploy指示 AutoScaling 11 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. デプロイ時の動作 (2/4) Version Respository Nginx (tcp:80) Version 1 Docker (staging, ver 2) 3. Staging コンテナ作成 Docker (current, ver 1) Version 2 EC2 HM 1. Deploy指示 AutoScaling 12 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. デプロイ時の動作 (3/4) Version Respository Nginx (tcp:80) 4. Nginx設定変更 Version 1 Docker (current, ver 2) 3. Staging コンテナ作成 Docker (old, ver 1) Version 2 EC2 HM 1. Deploy指示 AutoScaling 13 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. デプロイ時の動作 (4/4) Nginx (tcp:80) Version Respository Version 1 Docker (current, ver 2) Version 2 EC2 HM AutoScaling 14 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc. S3をプライベートレポジトリとして利利⽤用 registry registry registry Docker registry container with AWS credentials app app 4. docker pull 1. docker push app 3. docker run registry 5. docker stop registry registry registry app 2. deploy Region Developer 詳細: http://aws.typepad.com/sajp/2014/06/eb-docker-private-repo.html 15 © 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc.
© Copyright 2024 Paperzz