AWS ElasticBeanstalk Docker対応

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.