第18回cloud foundry輪読会用 buildpackを使ってアプリを...
TRANSCRIPT
buildpackを使ってアプリを載せるためのアプローチ
自己紹介
名前: morika-t
仕事: Cloud Founrdy関連
最近のCF的興味:Diego(DeaまわりのGo実装)Buildpack周り
pivotalも最近力をいれており
buildpackチームが作られたので動向が気になる所
Cloud Foundryのアーキテクチャ
http://docs.run.pivotal.io/concepts/architecture/
CFとherokuの構成
DEA
コンテナ(Warden)
RouterRouter
コンテナ(Dyno)
APP APP
Cloud Foundry heroku
Cloud Foundryを使うには(v2)
方法1. Publicにサービス展開されているCloud FoundryのPaaSを使う
2. cf_nise_installer(Iwasaki Yudai氏のツール)を使うa. https://github.com/yudai/cf_nise_installerb. 基本1VMはcoreのみ4~8GBもあれば十分c. 手軽に使える為、非公式ながら人気が高い
3. BOSH-lite(公式推奨)a. Vagrant環境VAGRANT上に6GB以上のメモリを要求する為気軽に試
すのには向いていないb. Cloud Foundryの公式ではBOSH(BOSH-liteのマルチノード構成)の
ものを使用しているがBOSHを使う為だけにVMがいくつも必要になり手軽でない
アプリ開発者にとってのCloud Foundry&BOSH
https://flic.kr/p/9qmqeh
Cloud Foundryのv2になってherokuと同じ
buildpackが入った!
アプリを載せるのが簡単になるはずだった。。。
現状のCloud Foundryの現実
● buildpackになっても○ ちょっと直して動かすがやりにくい○ buildpackそのもののエラー落ちやアプリ起動時のログが拾いにくい
● 少なくともアプリ開発者にとって○ ccngやrouterなどは開発者にとっては必須ではないい
■ 複数インスタンスの試験が必要でない限り
○ deaとwardenだけで動ける方が幸せそう■ リードエンジニアさん曰く将来的には Diego(go実装版)等で改善されるらしい
○ 現状CFは外からSSHする手段がない。。。■ Wardenのwshは出来るが、通常 routerの外からはそのような手段が取れない
※前回の輪読会でその悩みの暫定解決法は紹介済
現状のCFのPaaSの恩恵を受けるまでの状態
httpshttps://www.flickr.com/photos/the_3rd_place/4853328408/in/photostream/://www.flickr.com/photos/the_3rd_place/4853328408/in/photostream/
https://flic.kr/p/8r9kdJ
buildpack
● buildpackとは○ 元々はherokuで使われていた○ Cloud Foundryの場合
■ DEA上のWardenコンテナの中でユーザのアプリが pushされたものを組み立てるのに使う○ 3つのフェーズが存在
■ detect● 『このファイルがあったらこの buildpackです!』と紐づける
■ compile● javaのwebアプリなどはtomcatをどこかから持って来たりする処理が書かれている● 運営者側でbuildpackキャッシュにファイルを置いておけば高速化出来る
■ release● 環境変数のPATH等の設定● Procfileの設定等(-c相当でstartコマンドを決める)
■● 参考資料
○ はじめてのCF biuldpack■ http://www.slideshare.net/jacopen/cf-buildpack
『buildpackを使っている』という事は?
『buildpack向けのツールの恩恵が受けられる』ということ
最近では
『Immutable Infrastructure』というキーワードが流行ってきており
『Docker』という便利なツールも使える為、PaaSに取って良い方向性に
簡単にbuildpackを試す環境を作りたい
そういったニーズから
いくつか似たアプローチのツールが登場
1. dokku(buildstep)2. building3. docker-paas-example
Dokku(buildstep)
● buildstepとdokkuとは○ Jeff Lindsayさんという人が開発○ 同じ人がFlynnという名称のPaaSを作成中(まだ開発中)○ buildstep
■ buildpackを使ってDockerコンテナを作るスクリプト(ほぼほぼbash)
○ dokku■ buildstep + git pushするとdockerコンテナを作ってくれる機能などが
存在● 参考
○ http://qiita.com/hokaccha/items/af109d4037fa1d788617
試した結果
● flynn○ 軽く試したけれどうまく動きませんでした。。。
● dokku○ 安定的かというと難しい所ですがplugin拡張なども出来
postgresqlなども使える『mini-heroku的』な存在■ https://github.com/progrium/dokku/wiki/Plugins
● buildstep○ 簡単にbuildpackを使うには割と便利(後程デモします)
building
● buildingとは○ Cloud FoundryのAppFog運営元?のCenturyLinkLabsの作ったrubyの
gem○ github上でも公開されている○ こちらもdockerを使っていてbuildstepの+αくらいの位置づけ
■ buildstepのtarコマンド部分で固めたりする部分が簡略化されているらしい
○ 参考URL■ https://github.com/CenturyLinkLabs/building■ http://www.centurylinklabs.com/heroku-on-docker/■ http://qiita.com/futoase/items/21167e9d064b0e336e8f
docker-paas-example
● docker-paas-example○ Naoya Itoさんが作成○ dokkuと同様な挙動でDocker+rubyで出来ている○ Docker Meetup Tokyo #2向けに制作されたらしい
■ https://github.com/naoya/docker-paas-example
まとめ
● herokuのbuildpackと同じ仕組を使っていると同じようなツールで恩恵を受ける事ができそう
● 個人的にはできればwardenもdocker位に楽に使えるようになってほしい
● dokkuの人は元々Piston CloudでOpenStack+Cloud Foundryを使っていて構築に時間がかかって苦労したという経験からflynn等を作ったという経歴がなかなか興味深い存在 ※http://wazanova.jp/items/985