コンテナ事例 CircleCI, Cucumber-Chef
-
Upload
yukihiko-sawanobori -
Category
Technology
-
view
2.670 -
download
2
description
Transcript of コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
第3回 コンテナ型仮想化の情報交換会@大阪 @sawanoboly
運営組織
2
• 業務執行社員をつとめる合同会社
• アプリケーションのためのプラットフォーム構築/運用自動化をテーマにした活動を担当
• http://opsrock.in 共同開発・運営
• Chefをはじめ、Infrastracture as Code関連を主に取り扱うソリューションを提供
• 導入支援・トレーニングも
以前話したlxcの話 『lxc on cloud』
• 自宅DCライクなクラウド上のインスタンス
3
宣伝:Chefの本を書きました• 4/28発売 (ISBN:978-4-04-891985-2)
• 「Chef活用ガイド ~ コードではじめる構成管理」
• Infrastructure as Codeを実践しよう!
• 公式Docsの流れを踏襲し、さらに詳しく記述
• 日本公式代理店のクリエーションラインさんと共著
4
本日の内容• コンテナ事例:CircleCI
• CircleCI+ngrok
• ITERATIVE DELIVERY(反復型デリバリ)
• コンテナ事例:Cucumber-Chef
• CircleCI + Cucumber-Chef
5
アンケートのお願い• http://higanworks.com/ のトップにセッシ
ョンのアンケートを設置していますので、ご協力お願い致します!!(4/14日まで)
6
コンテナ事例 CircleCI
※中の人とかではありません
CircleCIって?• CI = 継続的インテグレーションのサービス
• Jenkins / Travis CI / drone.io / etc..
• We use LXC!!
• (herokuやDockerのアレだよ)
9
CircleCIの基本(一応)• Githubと連携、pushでトリガー
• Ubuntuコンテナが起動して、コード取得
• タスクをこなす、主にテスト
• レポート/カバレッジなどを保存する
• 成果物を保存する
• 有料($19/monthから)
• Private Repo対応
• 複数コンテナの同時多重起動が可能
10
多分こんな構成
11
EC2インスタンス (LXCホスト)
ビルド用コンテナ (ubuntu)
S3(ビルドのキャッシュ)
EC2インスタンス (LXCホスト)
ビルド用コンテナ (ubuntu)
ビルド用コンテナ (ubuntu)
ビルド用コンテナ (ubuntu)
ビルド一覧
12
コンテナだからどうなの?• ビルド環境の起動・終了が高速
• リスタートは数秒
• 親ホスト(Ubuntu)ベースの環境
• LXC BRIDGE(多分)でコンテナにSSHログインを提供
• ビルドのデバッグがしやすい
• ライブラリなどのキャッシュディレクトリをいじれる
13
ビルド用コンテナにSSHでログイン
14
CircleCIの制限 1/2• コンテナは最大1時間で停止
• そのまま運用はさすがにダメ
• SSHつきだと30分
• 親ホスト(Ubuntu)ベースの環境なので、Ubuntuオンリー
15
CircleCIの制限 2/2• sudoなし、パッケージ追加とかはNG
• 自前でローカルにビルドor”外部に用意”
• ただ、言語やバージョンマネージャは豊富
• rvm, nvm, phpenv, pyenv, jre複数、golang, scala(play), clojure(lein)等々..
• バックエンドもいろいろ起動済み
• mysql, postgres, memcache, redis,rabbitmqなど
16
Ubuntu縛りに関して• 将来的にはDocker!!
17
利点と制限から考える• とにかく準備が速い
• CPU(ホスト32コア)もあまり無駄なく利用
• 時間のかかるビルドやテストも速い※ まあまあ制限はかかってる模様Binutils(SBU)の素ビルド(j8)は1m前後くらい
• 時間の制限=> 時間内は何やってもOKなのでは。。?
• むしろ勝手に無くなるコンテナとして利用
18
ITERATIVE DELIVERY (反復型デリバリ)
IMPACT MAPPINGより
ITERATIVE DELIVERYとは• デプロイ + ビジネス ≒ デリバリ(意訳)
• アジャイルを、企画やらふくめて組織全体に適用しよう(これも意訳)
• 開発だけアジャイルでも、ゴールは遠いままという事態が発生=> ウォーター・スクラム・フォール
20
インクリメンタルとイテレーティブ
21
http://www.agileproductdesign.com/blog/dont_know_what_i_want.html※Jeff Patton氏のブログ記事より
Iterating
incrementing
Deploy feature branch to Heroku with CircleCI [Rebuild.fm]
• ブランチごとにherokuデプロイしたりしますという話
22
コンテナの活用として (とりあえず小さく) 実践してみよう
そこでngrok (えぬぐろっく?)
24
ngrokのできること
25
WorkStation
app localhost:4000
ngrokd server (hosted or private)
*.sub.example.com (Aレコード)
ngrok(cli)
① local:4000へのProxyを リクエスト ex) サブドメイン = hoge
② hoge.sub.example.com へのリクエストを フォワードする
Public Network
③appに対して hoge.sub.example.com で到達可能に
HTTP/HTTPSほか普通のTCPも
CircleCI+ngrockで• とりあえずGithubのブランチ全部?
• 折角だから1コミット1(and more)デリバリにしてしまおう
26
delivery per commit!!
27
コミットごとに一時的にデリバリ
• デプロイ対象サーバが固定だと、順番待ちになる
• ブランチだとだいたいHEADになる
• ロールバック(以前のコミットをデプロイし直し)もまあ可能ですが。。
• ちょっとした デザイン変更をShare
• デザイナさんなどによる『ちょっとデプロイお願い』を省略して、非同期な開発(Rebuild.fmより拝借)、並列的な作業
28
サンプルコードはこちら
29
https://github.com/OpsRockin/jekyll_and_ngrok
コンテナ事例 Cucumber-Chef
Cucumber-Chef• テスト駆動型インフラ開発
31
TestLab
32
Cucumber-Chef
VM(Vagrant or EC2)
Chef Server (on host os)
LXC Bridge
Container Container
Chef-Client
Chef-Client
ここ繰り返し
最後に Cucumber
設定サンプル• 1台のEC2インスタンスに複数コンテナで
、まあまあ高速&節約のインフラテスト
33
CircleCI+Cucumber-Chef• CircleCIコンテナ=>EC2コンテナのコンテ
ナ連鎖
• インフラ構築テストや、アプリ用任意バックエンドを用意したり↓
34
時系列
CircleCIにコンテナ
Cucumber-Chefで EC2に
Hadoopクラスタ
CircleCIで 要Hadoopのアプリを
テストGithubにPush
EC2のHadoopクラスタ
を破棄
CircleCIの コンテナは自動破棄
用事があればこの時点にSSHアタッチ
コンテナお仕事情報• 商用サービスで、エンドユーザ向けのデリバ
リプロセスの一部をコンテナでやろうと企画中のプロジェクトがあります。
• おもしろそうだと思う方、やれそうな方、私までご連絡で。
35
おわり
アンケートのお願い(再)• http://higanworks.com/ のトップにセッシ
ョンのアンケートを設置していますので、ご協力お願い致します!!(4/14日まで)
37