第18回cloud foundry輪読会用 buildpackを使ってアプリを...

20
buildpackを使ってアプリを 載せるためのアプローチ

Upload: takeshi-morikawa

Post on 15-Apr-2017

1.618 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

buildpackを使ってアプリを載せるためのアプローチ

Page 2: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

自己紹介

名前: morika-t

仕事: Cloud Founrdy関連

最近のCF的興味:Diego(DeaまわりのGo実装)Buildpack周り

pivotalも最近力をいれており

buildpackチームが作られたので動向が気になる所

Page 3: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

Cloud Foundryのアーキテクチャ

http://docs.run.pivotal.io/concepts/architecture/

Page 4: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

CFとherokuの構成

DEA

コンテナ(Warden)

RouterRouter

コンテナ(Dyno)

APP APP

Cloud Foundry heroku

Page 5: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

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がいくつも必要になり手軽でない

Page 6: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

アプリ開発者にとってのCloud Foundry&BOSH

https://flic.kr/p/9qmqeh

Page 7: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

Cloud Foundryのv2になってherokuと同じ

buildpackが入った!

Page 8: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

アプリを載せるのが簡単になるはずだった。。。

Page 9: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

現状のCloud Foundryの現実

● buildpackになっても○ ちょっと直して動かすがやりにくい○ buildpackそのもののエラー落ちやアプリ起動時のログが拾いにくい

● 少なくともアプリ開発者にとって○ ccngやrouterなどは開発者にとっては必須ではないい

■ 複数インスタンスの試験が必要でない限り

○ deaとwardenだけで動ける方が幸せそう■ リードエンジニアさん曰く将来的には Diego(go実装版)等で改善されるらしい

○ 現状CFは外からSSHする手段がない。。。■ Wardenのwshは出来るが、通常 routerの外からはそのような手段が取れない

※前回の輪読会でその悩みの暫定解決法は紹介済

Page 10: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

現状の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

Page 11: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

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

Page 12: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

『buildpackを使っている』という事は?

Page 13: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

『buildpack向けのツールの恩恵が受けられる』ということ

Page 14: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

最近では

『Immutable Infrastructure』というキーワードが流行ってきており

『Docker』という便利なツールも使える為、PaaSに取って良い方向性に

Page 15: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

簡単にbuildpackを試す環境を作りたい

そういったニーズから

いくつか似たアプローチのツールが登場

1. dokku(buildstep)2. building3. docker-paas-example

Page 16: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

Dokku(buildstep)

● buildstepとdokkuとは○ Jeff Lindsayさんという人が開発○ 同じ人がFlynnという名称のPaaSを作成中(まだ開発中)○ buildstep

■ buildpackを使ってDockerコンテナを作るスクリプト(ほぼほぼbash)

○ dokku■ buildstep + git pushするとdockerコンテナを作ってくれる機能などが

存在● 参考

○ http://qiita.com/hokaccha/items/af109d4037fa1d788617

Page 17: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

試した結果

● flynn○ 軽く試したけれどうまく動きませんでした。。。

● dokku○ 安定的かというと難しい所ですがplugin拡張なども出来

postgresqlなども使える『mini-heroku的』な存在■ https://github.com/progrium/dokku/wiki/Plugins

● buildstep○ 簡単にbuildpackを使うには割と便利(後程デモします)

Page 18: 第18回Cloud Foundry輪読会用 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

Page 19: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

docker-paas-example

● docker-paas-example○ Naoya Itoさんが作成○ dokkuと同様な挙動でDocker+rubyで出来ている○ Docker Meetup Tokyo #2向けに制作されたらしい

■ https://github.com/naoya/docker-paas-example

Page 20: 第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ

まとめ

● herokuのbuildpackと同じ仕組を使っていると同じようなツールで恩恵を受ける事ができそう

● 個人的にはできればwardenもdocker位に楽に使えるようになってほしい

● dokkuの人は元々Piston CloudでOpenStack+Cloud Foundryを使っていて構築に時間がかかって苦労したという経験からflynn等を作ったという経歴がなかなか興味深い存在 ※http://wazanova.jp/items/985