概要
Cloud Foundryは、オープンソースのPaaSプラットフォームで、ローカルにPaaS環境を構築することもできます。
今回はPCF Devを使って、macOS上にPaaS環境を構築してみます。
基本的に、こちらのTutorialに沿って実行しました。(一部違いますが)
要件
- VirtualBox 5.0 以上
環境
- macOS Sierra version 10.12.5
- pcfdev-v0.26.0+PCF1.10.0
- cf version 6.29.0+ff886fa93.2017-07-24
cliのインストール
PCFを実行するためのcliをインストールします。
以下からmac用のものをダウンロードして、GUIでインストールをしてください。
https://cli.run.pivotal.io/stable?release=macosx64&source=github
- (追記)以下はインストーラー付き
- 以下から環境にあったものをインストール
- https://github.com/cloudfoundry/cli/releases/tag/v6.34.1
PCF Devのインストール
(追記)インストーラーで入れた場合は、こちらの手順は不要
ここからPCF Devをダウンロードします。
ダウンロードするには、無料会員登録が必要になるので、メールアドレスを登録してください。
https://network.pivotal.io/products/pcfdev
osxと書かれているものを選んでダウンロードします。
ダウンロードしたら解凍します。
$ unzip pcfdev-v0.26.0+PCF1.10.0-osx.zip
PCF Devのpluginをインストールします。
$ ./pcfdev-v0.26.0+PCF1.10.0-osx
起動
PCF Devを起動します。
Pivotal Networkに登録したメールアドレスとパスワードを聞かれるので、入力してください。
$ cf dev start
Please sign in with your Pivotal Network account.
Need an account? Join Pivotal Network: https://network.pivotal.io
Email> mailaddres@sample.com
Password>
Downloading VM...
Progress: |====================>| 100%
VM downloaded.
Allocating 4096 MB out of 16384 MB total system memory (6869 MB free).
Importing VM...
Starting VM...
Provisioning VM...
Waiting for services to start...
7 out of 56 running
7 out of 56 running
7 out of 56 running
7 out of 56 running
38 out of 56 running
56 out of 56 running
_______ _______ _______ ______ _______ __ __
| || || | | | | || | | |
| _ || || ___| | _ || ___|| |_| |
| |_| || || |___ | | | || |___ | |
| ___|| _|| ___| | |_| || ___|| |
| | | |_ | | | || |___ | |
|___| |_______||___| |______| |_______| |___|
is now running.
To begin using PCF Dev, please run:
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
ログイン
PCF Devにログインします。
接続先、アカウント情報は、 cf dev start
を実行した時の出力結果の通りです。
Apps Manager URL: https://local.pcfdev.io
Admin user => Email: admin / Password: admin
Regular user => Email: user / Password: pass
ログインします。
今回はuserでログインします。(adminでも構いません)
$ cf login -a api.local.pcfdev.io --skip-ssl-validation
API endpoint: api.local.pcfdev.io
Email> user
Password>
Authenticating...
OK
Targeted org pcfdev-org
Targeted space pcfdev-space
API endpoint: https://api.local.pcfdev.io (API version: 2.75.0)
User: user
Org: pcfdev-org
Space: pcfdev-space
サンプルアプリケーションの作成
デプロイするための、PHPのサンプルアプリケーションを作成します。
$ mkdir sample-php
$ vi index.php
<?php
echo 'This is a sample.';
デプロイ
アプリケーションをデプロイをします。
$ cf push php-sample-app -p sample-php/
Creating app php-sample-app in org pcfdev-org / space pcfdev-space as user...
OK
(**snip**)
-------> Buildpack version 4.3.26
Installing HTTPD
HTTPD 2.4.25
Downloaded [file:///tmp/buildpacks/4cc31f829ff946712e63e84276d50969/dependencies/https___buildpacks.cloudfoundry.org_dependencies_httpd_httpd-2.4.25-linux-x64.tgz] to [/tmp]
Installing PHP
PHP 5.5.38
Downloaded [file:///tmp/buildpacks/4cc31f829ff946712e63e84276d50969/dependencies/https___buildpacks.cloudfoundry.org_dependencies_php_php-5.5.38-linux-x64-1485208781.tgz] to [/tmp]
Finished: [2017-08-01 00:09:04.698339]
(**snip**)
requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: php-sample-app.local.pcfdev.io
last uploaded: Tue Aug 1 03:15:35 UTC 2017
stack: cflinuxfs2
buildpack: php 4.3.26
state since cpu memory disk details
#0 running 2017-08-01 12:16:07 PM 0.0% 240K of 256M 448K of 512M
途中、HTTPDとPHPがインストールされているのがわかります。
http://php-sample-app.local.pcfdev.io へブラウザからアクセスして、
This is a sample.
と表示されればデプロイ成功です。
アプリケーション一覧
作成済みのアプリケーション一覧が確認できます。
$ cf apps
Getting apps in org pcfdev-org / space pcfdev-space as user...
OK
name requested state instances memory disk urls
php-sample-app started 1/1 256M 512M php-sample-app.local.pcfdev.io
app単体で見る
$ cf app php-sample-app
ログ出力
リアルタイムでログを確認する場合
$ cf logs php-sample-app
直近のログを確認する場合
$ cf logs php-sample-app --recent
Retrieving logs for app php-sample-app in org pcfdev-org / space pcfdev-space as user...
2017-08-01T09:08:54.49+0900 [API/0] OUT Created app with guid 998003b3-3ba5-4a85-b36b-70e24fee0317
2017-08-01T09:08:54.87+0900 [API/0] OUT Updated app with guid 998003b3-3ba5-4a85-b36b-70e24fee0317 ({"route"=>"00483624-4291-42fd-9252-d936b4ed16ca", :verb=>"add", :relation=>"routes", :related_guid=>"00483624-4291-42fd-9252-d936b4ed16ca"})
DBと接続する
PCFでは、MySQL, Postgres, Redis, and MongoDBを使うことができます。
$ cf marketplace
Getting services from marketplace in org pcfdev-org / space pcfdev-space as user...
OK
service plans description
local-volume free-local-disk Local service docs: https://github.com/cloudfoundry-incubator/local-volume-release/
p-mysql 512mb, 1gb MySQL databases on demand
p-rabbitmq standard RabbitMQ is a robust and scalable high-performance multi-protocol messaging broker.
p-redis shared-vm Redis service to provide a key-value store
TIP: Use 'cf marketplace -s SERVICE' to view descriptions of individual plans of a given service.
mysqlで使用可能なplanを調べます。
$ cf marketplace -s p-mysql
Getting service plan information for service p-mysql as user...
OK
service plan description free or paid
512mb PCF Dev MySQL Server free
1gb PCF Dev MySQL Server free
512mbと1gbの2つのプランがあるようです。
今回は512mbのプランを使って、sample-php-dbという名前のserviceを作成します。
$ cf create-service p-mysql 512mb sample-php-db
作成されたserviceを確認します。
$ cf services
Getting services in org pcfdev-org / space pcfdev-space as user...
OK
name service plan bound apps last operation
sample-php-db p-mysql 512mb create succeeded
この時点では、bound appsは空欄になっています。
sample-php-dbをphp-sample-appで使えるように、bindします。
$ cf bind-service php-sample-app sample-php-db
Binding service sample-php-db to app php-sample-app in org pcfdev-org / space pcfdev-space as user...
OK
TIP: Use 'cf restage php-sample-app' to ensure your env variable changes take effect
php-sample-appをrestartしろと言っているので、アプリケーションを再起動します。
$ cf restart php-sample-app
bound appsにphp-sample-appがあることを確認します。
$ cf services
Getting services in org pcfdev-org / space pcfdev-space as user...
OK
name service plan bound apps last operation
sample-php-db p-mysql 512mb php-sample-app create succeeded
スケーリング
インスタンスを1つから2つに増やします。
$ cf scale php-sample-app -i 2
増えたことを確認
$ cf app php-sample-app
Showing health and status for app php-sample-app in org pcfdev-org / space pcfdev-space as user...
name: php-sample-app
requested state: started
instances: 2/2
usage: 256M x 2 instances
routes: php-sample-app.local.pcfdev.io
last uploaded: Tue 01 Aug 09:08:54 JST 2017
stack: cflinuxfs2
buildpack: php 4.3.26
state since cpu memory disk details
#0 running 2017-08-01T00:37:39Z 1.5% 25.3M of 256M 155.9M of 512M
#1 running 2017-08-01T00:45:28Z 0.0% 25.7M of 256M 155.9M of 512M
memory limitを、それぞれ1Gに増やします。
$ cf scale php-sample-app -i 2
ディスク容量をそれぞれ増やします。
$ cf scale php-sample-app -i 2
manifest.ymlを使った方法なども、後日追記したいと思います。
以上