Cloud Foundryを始めてみる



始めてみるぐらいの軽い記事ですよ！


## Cloud Foundryとは

Cloud FoundryはいわゆるPaaSのひとつです。
Herokuは使ったことがありますが、PaaSの中でなんとなく気になったので使ってみようという次第です。
(余談ですが、Herokuで動かしてるのは逆引きKotlinというサイト[http://kotlin-rev-solution.herokuapp.com/site/](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](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/](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 上に構築する](http://qiita.com/tbuchi888/items/77a171f73a115cb1464c)

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](https://github.com/cloudfoundry-samples/cf-sample-app-spring/blob/master/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より簡単に思いました。
多分、比較するとデプロイが圧倒的に簡単なんだと思います。

これから色々簡単なアプリとか載せて遊んでみようと思います！