最近pcfを触ることがあったので忘れないようにメモです
pcfとは
Pivotal Cloud Foundryの略です
オープンなPaas環境を提供しています。
参考にしたサイト
https://blog.ik.am/entries/387
https://docs.cloudfoundry.org/devguide/deploy-apps/manifest.html#domain
環境
golangのアプリをあげるのでgoの実行環境があるのが望ましいです。
cloud foundryのインストール
https://network.pivotal.io/products/pcfdev
からPCF Dev をダウンロードします。
PCF Devは開発用にローカル環境で簡単にCloud Foundryを試すためのVM環境です。
アカウント登録とかはよしなにしてください。
ダウンロードして来たファイルを展開してください。
pcfdev-v0.26.0+PCF1.10.0-osx
という感じのファイルができると思います。
今回ダウンロードして解答したファイルはPCF DevをインストールするためのCloud Foundryのプラグインです。
pcfのコマンドのインストール
https://github.com/cloudfoundry/cli/releases
からcliをダウンロードして開いてインストールしてください。
brewからもダウンロードできるそうです。(試してないです)
$ brew install cloudfoundry/tap/cf-cli
$ brew upgrade cf-cli
pcf devのインストール・起動
次にpcf devを実際にインストールして起動します。
$ cf install-plugin path/to/pcfdev-v0.26.0+PCF1.10.0-osx
$ cf dev start
これで来たのが確認できたと思います。
pcfにログイン
先ほど起動した時にログイン方法が表示がされていたと思います。この情報をつかってログインします。
$ cf login -a https://api.local.pcfdev.io --skip-ssl-validation
パスワードとかはデフォルトでこんな感じです
Apps Manager URL: https://local.pcfdev.io
Admin user => Email: admin / Password: admin
Regular user => Email: user / Password: pass
Orgはpcfdev-orgを選択しました。
これで下準備は整いました。
pcfにアプリをpush
まずあげるアプリを作成します。(goで作成していきます。)
アプリも含めたサンプルは
https://github.com/yuichi10/pcf-app
からとってこれます。
main.go
package main
import (
"fmt"
"net/http"
"os"
)
func hello(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "hello")
}
func main() {
port := os.Getenv("PORT")
if len(port) <= 0 {
port = "8888"
}
http.HandleFunc("/", hello)
http.ListenAndServe(":"+port, nil)
}
このコードでhelloを表示するだけのサーバーがつくられました。
go run main.go
を実行すると実際に動くのがわかると思います。
マニフェストの作成
これから実際にpcfにあげるためのmanifest.ymlを作成します。
アプリのルートディレクトリにmanifest.ymlを作成してください。
---
applications:
- name: pcf-app
instance: 1
buildpack: https://github.com/cloudfoundry/go-buildpack.git#v1.8.5
domain: tcp.local.pcfdev.io
env:
GOVERSION: go1.8.3
GOPACKAGENAME: github.com/<github ユーザー名>/<appディレクトリ名>
- name: アプリの名前です。
- instance: 起動時のインスタンス数です
- buildpack: アプリを動かすランタイム環境を指定しています。
githubにbuildpackはあがってるので、それを選択します。
今回は現時点の最新で、go1.8.3が動くv1.8.5のgo-buildpackを選択しています。 - domain: pcfにはいくつかインスタンスがたっており、そのどこのドメインにあげるかです。pcfからはshared domainとprivate domainという概念があるのですが、今回はshared domainを指定しています。このドメインに関しては```
$ cf domains
コマンドで確認できます。
- env: 環境変数を指定しています。今回GOPACKAGENAMEに関しては設定しなくてもいいのですが、glideなどでパッケージ管理をすると必要になったはずです。
#### pcfにpush
ここまで来たらあとはpcfにpushするだけです
$ cf push
これだけでpcfにpushできます。実行するとアプリが動いているurlなども表示てくれているのでぜひ動いているのをみてください!
# 続き
1. concourseの構築
http://qiita.com/yuichi10/items/c26359b8339186818951
2. concourseを通してpcfにdeploy
http://qiita.com/yuichi10/items/8555a51810230fefa73c