コンテナ事例 CircleCI, Cucumber-Chef

Preview:

DESCRIPTION

第3回 コンテナ型仮想化の情報交換会@大阪 の発表資料です

Citation preview

コンテナ事例 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

Recommended