本記事は「PCF DevでローカルCloud Foundry環境を作る」のアップデート版です。
Cloud FoundryはオープンソースなPaaSプラットフォームであり、ローカルにもPaaS環境を構築することができます。
PCF Devは開発用にローカル環境で簡単にCloud Foundryを試すためのVM環境です。Pivotal Cloud Foundryが提供しているサービス(MySQL、Redis、RabbitMQ)も初めから組み込まれていて、Virtual Boxだけで簡単にローカル開発環境を用意できます。(Pivotal Cloud FoundryやOSSのCloud Foundryとの違いはこちらを参照してください) v.0.15まではVagrantが必要でしたが、v.0.16からはVirtual BoxのみでOKです。
試したのはv0.17.0です。 また、VagrantとVirtualBoxのバージョンは以下の通りです。
$ vagrant --version
Vagrant 1.8.1
セットアップ方法
PCF DevはPivotal Networkからダウンロードできます。
ダウンロードするにはPivotal Networkにログインする必要があります。こちらからアカウントを作成してください。
ダウンロードしたpcfdev-v0.17.0+PCF1.7.0-osx.zip
を展開してください(以下はOS Xの例)。
$ unzip pcfdev-v0.17.0+PCF1.7.0-osx.zip
Archive: pcfdev-v0.17.0+PCF1.7.0-osx.zip
inflating: pcfdev-v0.17.0+PCF1.7.0-osx
pcfdev-v0.17.0+PCF1.7.0-osx
はPCF DevをインストールするためのCloud Foundryのプラグインです。
CF CLIを使ってプラグインをインストール(cf install-plugin
)したのち、プラグインのコマンド(cf dev start
)を使ってPCF Devをインストールします。
途中でAPIトークンの入力を求められます。トークンはPivotal Networkのプロフィール画面の一番下に表示されています。
$ cf install-plugin ./pcfdev-v0.17.0+PCF1.7.0-osx
**注意: プラグインは必ずしも信頼できない作成者によって書かれたバイナリーです。プラグインのインストールと使用は自らの責任で行ってください。**
プラグイン ./pcfdev-v0.17.0+PCF1.7.0-osx をインストールしますか? (y または n)> y
プラグイン ./pcfdev-v0.17.0+PCF1.7.0-osx をインストールしています...
OK
プラグイン pcfdev v0.0.0 は正常にインストールされました。
$ cf dev start
Please retrieve your Pivotal Network API from:
https://network.pivotal.io/users/dashboard/edit-profile
API token> (APIトークンの入力)
BETA SOFTWARE END USER LICENSE AGREEMENT
(略)
Last Updated: April 14th, 2014
Accept (yes/no):> yes
Downloading VM...
Progress: |====================>| 100%
VM downloaded
Allocating 4096 MB out of 16384 MB total system memory (5500 MB free).
Importing VM...
Starting VM...
Provisioning VM...
Waiting for services to start...
9 out of 50 running
50 out of 50 running
_______ _______ _______ ______ _______ __ __
| || || | | | | || | | |
| _ || || ___| | _ || ___|| |_| |
| |_| || || |___ | | | || |___ | |
| ___|| _|| ___| | |_| || ___|| |
| | | |_ | | | || |___ | |
|___| |_______||___| |______| |_______| |___|
is now running.
To begin using PCF Dev, please run:
cf login -a https://api.local.pcfdev.io --skip-ssl-validation
Admin user => Email: admin / Password: admin
Regular user => Email: user / Password: pass
立ち上がりました!
アプリケーションをデプロイ
まずはログインします。ユーザー名、パスワードともにadmin
です。
$ cf login -a https://api.local.pcfdev.io --skip-ssl-validation
API エンドポイント: https://api.local.pcfdev.io
Email> admin
Password>
認証中です...
OK
組織を選択します (または Enter キーを押してスキップします):
1. pcfdev-org
2. system
Org> 1
組織 pcfdev-org をターゲットにしました
スペース pcfdev-space をターゲットにしました
API エンドポイント: https://api.local.pcfdev.io (API バージョン: 2.54.0)
ユーザー: admin
組織: pcfdev-org
スペース: pcfdev-space
前に書いた入門記事と同じくhello-pws
をpushします。
$ git clone https://github.com/making/hello-pws
$ cd hello-pws
$ mvn clean package
$ cf push hello-pws -p target/hello-pws.jar -m 256m -b java_buildpack
admin としてアプリ hello-pws を組織 pcfdev-org / スペース pcfdev-space 内に作成しています...
OK
経路 hello-pws.local.pcfdev.io を作成しています...
OK
hello-pws.local.pcfdev.io を hello-pws にバインドしています...
OK
hello-pws をアップロードしています...
次のパスからアプリ・ファイルをアップロードしています: /var/folders/15/fww24j3d7pg9sz196cxv_6xm4nvlh8/T/unzipped-app203143786
485.1K、89 個のファイルをアップロードしています
Done uploading
OK
admin として組織 pcfdev-org / スペース pcfdev-space 内のアプリ hello-pws を開始しています...
Downloading java_buildpack...
Downloaded java_buildpack
Creating container
Successfully created container
Downloading app package...
Downloaded app package (11.7M)
Staging...
-----> Java Buildpack Version: v3.6 (offline) | https://github.com/cloudfoundry/java-buildpack.git#5194155
-----> Downloading Open Jdk JRE 1.8.0_71 from https://download.run.pivotal.io/openjdk/trusty/x86_64/openjdk-1.8.0_71.tar.gz (found in cache)
Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (2.7s)
-----> Downloading Open JDK Like Memory Calculator 2.0.1_RELEASE from https://download.run.pivotal.io/memory-calculator/trusty/x86_64/memory-calculator-2.0.1_RELEASE.tar.gz (found in cache)
Memory Settings: -Xmx160M -XX:MaxMetaspaceSize=64M -Xss853K -Xms160M -XX:MetaspaceSize=64M
-----> Downloading Spring Auto Reconfiguration 1.10.0_RELEASE from https://download.run.pivotal.io/auto-reconfiguration/auto-reconfiguration-1.10.0_RELEASE.jar (found in cache)
Exit status 0
Staging complete
Uploading droplet, build artifacts cache...
Uploading build artifacts cache...
Uploading droplet...
Uploaded build artifacts cache (107B)
Uploaded droplet (56.7M)
Uploading complete
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 1 個のインスタンスが実行中です
アプリが開始されました
OK
アプリ hello-pws はこのコマンド `CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.1_RELEASE -memorySizes=metaspace:64m.. -memoryWeights=heap:75,metaspace:10,native:10,stack:5 -memoryInitials=heap:100%,metaspace:100% -totMemory=$MEMORY_LIMIT) && JAVA_OPTS="-Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY" && SERVER_PORT=$PORT eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/.:$PWD/.java-buildpack/spring_auto_reconfiguration/spring_auto_reconfiguration-1.10.0_RELEASE.jar org.springframework.boot.loader.JarLauncher` を使用して開始されました
admin として組織 pcfdev-org / スペース pcfdev-space 内のアプリ hello-pws の正常性と状況を表示しています...
OK
要求された状態: started
インスタンス: 1/1
使用法: 256M x 1 インスタンス
URL: hello-pws.local.pcfdev.io
最後アップロード日時: Sun Jul 3 11:43:18 UTC 2016
スタック: unknown
ビルドパック: java_buildpack
状態 次の日時から CPU メモリー ディスク 詳細
#0 実行 2016-07-03 08:44:01 PM 0.0% 256M の中の 848K 512M の中の 16.4M
デプロイできました。
$ curl hello-pws.local.pcfdev.io
Hello from 10.0.2.15:60012
スケールアウトも前記事と同じようにできます。
ローカルでCloud Foundryを色々試したい場合に便利です。
ただし、管理コンソールはありません。
またマーケットプレイスにはv0.17.0の段階で
- MySQL
- Redis
- RabbitMQ
が登録されています。これはPivotal Services Suite for Pivotal Cloud Foundryとほぼ同じもので、PCF Devで動いたアプリがPCFでも動くことを目的としてサービスが用意されているようです。
$ cf marketplace
admin として組織 pcfdev-org / スペース pcfdev-space 内のマーケットプレイスからサービスを取得しています...
OK
サービス プラン 説明
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
ヒント: 特定のサービスの個々のプランの説明を表示するには、'cf marketplace -s SERVICE' を使用します。
管理コンソール(Apps Manager)にアクセスする
PCF Dev 0.17からはPivotal Cloud Foundryの売りの一つである管理コンソール(Apps Manager)も付いてきます。
https://console.local.pcfdev.io/2にアクセスすれば、デプロイされているアプリケーションの状態を確認できます。
ちなみにApps Manager自体、このPCF Devのランタイムにデプロイされています。system
Organizationにデプロイされているのでcf target
でOrganizationを切り替えれるとApps Managerの状態を確認できます。
$ cf target -o system
API エンドポイント: https://api.local.pcfdev.io (API バージョン: 2.54.0)
ユーザー: admin
組織: system
スペース: system
$ cf a
admin として組織 system / スペース system 内のアプリを取得しています...
OK
名前 要求された状態 インスタンス メモリー ディスク URL
apps-manager started 6/6 64M 512M apps-manager.local.pcfdev.io, console.local.pcfdev.io
今後はSpring Cloud Servicesも使えることになることが予想されます。
こちらのハンズオンの内容もPCF Devで実施できるので、環境構築後に一通り試してみてください