IK.AM

@making's tech note


PCF DevでローカルCloud Foundry環境を作る(v.0.16+)

🗃 {Service/PaaS/CloudFoundry}
🏷 Cloud Foundry 🏷 PCF Dev 🏷 Pivotal Cloud Foundry 
🗓 Updated at 2016-07-03T12:04:57Z  🗓 Created at 2016-07-03T11:58:37Z   🌎 English Page

本記事は「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からダウンロードできます。

image

ダウンロードするにはPivotal Networkにログインする必要があります。こちらからアカウントを作成してください。

image

ダウンロードした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にアクセスすれば、デプロイされているアプリケーションの状態を確認できます。

image

image

image

image

ちなみに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で実施できるので、環境構築後に一通り試してみてください


✒️️ Edit  ⏰ History  🗑 Delete