始めてみるぐらいの軽い記事ですよ!
Cloud Foundryとは
Cloud FoundryはいわゆるPaaSのひとつです。
Herokuは使ったことがありますが、PaaSの中でなんとなく気になったので使ってみようという次第です。
(余談ですが、Herokuで動かしてるのは逆引きKotlinというサイトhttp://kotlin-rev-solution.herokuapp.com/site/)
前提
本記事の内容は、https://pivotal.io/platform/pcf-tutorials/getting-started-with-pivotal-cloud-foundry/introduction?utm_source=platform&utm_medium=link&utm_campaign=gettingstartedwithpcfを触ってみた、ぐらいのものになっています。
事前準備
- Clound Foundry用にアカウント登録が必要です。Gmailとかで良いと思います。
- アカウント登録後、https://console.run.pivotal.io/からorgとspaceを作成します。ざっくり言うとorgとspaceはデプロイ先です。
Cloud FoundryのCLIをインストールする
おもむろにClound Foundryでググると、Getting Startedがあるので導入してみましょう。
- Install the CF CLI
Cloud FoundryのCLIツールをインストールします。僕の環境はMacなのでMac用のものをダウンロード。
(もちろんWinもLinuxも用意されています。)
インストールに関しては以下の記事にあるようなものと大体変わらないので割愛します。
PaaS の Cloud Foundry(PCF-DEV) を OSX 上に構築する
cfというコマンドが使えるようになります。
使い方に関してはヘルプで。
cf help
上手くインストールできていれば、ヘルプの結果が出力されるはずです。
yank-no-MacBook-Pro:~ yy_yank$ cf help
cf バージョン 6.25.0+787326d95.2017-02-28, Cloud Foundry command line tool
Usage: cf [グローバル・オプション] コマンド [引数...] [コマンド・オプション]
Before getting started:
config login,l target,t
help,h logout,lo
・・・略・・・
サンプルアプリをデプロイまで
Getting Startedに従うままにサンプルアプリをデプロイしてみましょう。
- サンプルアプリをcloneします
git clone https://github.com/cloudfoundry-samples/cf-sample-app-spring.git
SpringのプロジェクトなのでJavaかと思いきや、Groovyですねぇ。
manifest.ymlがCloud Foundry用のconfigとなっているようです。
Grabでthymeleafの依存解決をしているのは良いとして、その他はどうしているのだろう。。。
おそらくCloud Foundry側で解決しているのでしょうか。
- cloneしたプロジェクトに移動します
cd cf-sample-app-spring
- 以下コマンドでログイン
Cloud Foundryのユーザー認証ですね。
cf login -a https://api.run.pivotal.io
- pushコマンドでデプロイ
簡単ですねぇ。
cf push
push時に出力されるURLにブラウザからアクセスすると上手く行ってるのが確認できました!!!簡単。
サンプルアプリのログを見る。RDBMSを適用する
直近のアプリログを確認します。
cf logs cf-spring --recent
アプリのログをtailみたいなことも出来ます。
cf logs cf-spring
Cloud Foundryのマーケットプレースから情報を取得。
チュートリアルではPostgreSQL as a ServiceなElepahntSQLの情報を取得してます。
cf marketplace -s elephantsql
turtle 4 concurrent connections, 20MB Storage free
panda 20 concurrent connections, 2GB Storage paid
hippo 300 concurrent connections, 100 GB Storage paid
elephant 300 concurrent connections, 1000 GB Storage, 500Mbps paid
turtleであれば無料っぽいですね。
turtleをアプリに適用します。
まずはサービスの作成。
cf create-service elephantsql turtle cf-spring-db
そしてアプリに適用します。
cf bind-service cf-spring cf-spring-db
cf restart cf-spring
これだけでRDBMSが利用できるとは。。。すごい。
アプリをスケールアウトする。メモリの割当を変える
スケールアウトも簡単です。
cf scale cf-spring -i 2
これでインスタンスが2個にスケールアウトしました。
ちゃんと動いているか以下で確認できます。
cf app cf-spring
メモリの割当は以下で変えられます。
cf scale cf-spring -m 1G
disk limitを変更もできます。
cf scale cf-spring -k 512M
感想
導入は落ち着いて手順通りやればとても簡単でした!!
それに、コマンドラインで全て完結するのは快適ですね。
herokuもコマンドラインツールはあるのですが、なんだかherokuより簡単に思いました。
多分、比較するとデプロイが圧倒的に簡単なんだと思います。
これから色々簡単なアプリとか載せて遊んでみようと思います!