はじめに
3 年ほど前に Cloud Foundry ネタで社外イベントに登壇したのですが、ひょんなことから社内勉強会でリバイバル発表することになりました。さすがに 3 年前とは成熟度の面で差があると思い、最新情報をキャッチアップするために Cloud Foundry 環境構築に踏み切りました。
本格的に取り組むのであれば、BOSH を AWS あたりに展開すると思いますが、今回はあくまで「やってみた」ですので、PCF Dev を macbook pro (16GB) にインストールしました。実は当初、Surface Laptop (8GB) 上の Ubuntu on WSL でチャレンジしていたのですが、メモリ不足で起動せず、諦めた経緯があります。その顛末については「Ubuntu on WSL で Cloud Foundry を動かそうとしてみた」にまとめています。
一筋縄ではいかなかったのですが、最終的にはなんとか mac でローカル Cloud Foundry を動かせましたので、ご紹介させていただきます。
実行環境
- macOS Catalina 10.15.6
- MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports)
Cloud Foundry CLI のインストール
以下、Cloud Foundry 公式改め VMware Tanzu 公式にアクセスします。基本的にこちらの手順に従って進めていきます。
https://docs.pivotal.io/pcf-dev/install-osx.html
Prerequisites 手順 1 の Download リンクをクリックして、パッケージインストーラをダウンロードします。Cloud Foundry CLIの公式 github には、執筆時点で最新版の v7.0.2 が公開されていますが、今回は v6.51.0 を採用します。
- cf-cli-installer_6.51.0_osx.pkg
パッケージインストーラを実行すると、以下のような警告メッセージが表示される場合があります。
警告メッセージが表示された場合は、System Preferences... から Security & Privacy を開き、App Store and identified developers
を選択し、Open Anyway
をクリックします。
再度、パッケージインストーラを起動し、今度は Open
をクリックしてください。あとは、ポチポチでインストールが完了します。
インストールが終わったら、先ほどの Security & Privacy の設定を App Store
に戻しておくことをおすすめします。
CF CLI のバージョンを確認してみました。確かに V6 がインストールされたようです。
% cf version
cf バージョン 6.51.0+2acd15650.2020-04-07
ちなみに パッケージインストーラではなく brew でインストールしたい方は、以下となります。
brew install cloudfoundry/tap/cf-cli
Cloud Foundry (PCF) Dev の入手
Install PCF Dev 手順 1 の Pivotal Network をクリックし、ページ下の方の PCF Dev
タイルをクリックするか、以下の URL に直接アクセスします。
https://network.pivotal.io/products/pcfdev
現時点の最新バージョンは v1.3.1 で、linux 向けのファイルは以下の 2 ファイルのようです。合計 24.5 GB、結構ゴツいですね、、、。実は、v1.3.1 では何度トライしても起動できなかったため、少しサイズの小さい v1.2.0 を選択しました。右の Release Details に This release is compatible with CF Dev plugin version v0.0.15. とあることを覚えておきます。
- pcfdev-v1.2.0-darwin.tgz (19.1 GB, v1.2.0)
Pivotal Network へのサインアップなどの詳細手順は「Ubuntu on WSL で Cloud Foundry を動かそうとしてみた」を参考にしてください。なお、v1.3.1 と違い、v1.2.0 は 1 ファイルのみですので、ファイルをコンカチする手順は不要です。
CF Dev プラグインのインストール
Install PCF Dev 手順 2 に従い、以下コマンドを実行すると、**先ほど確認した v0.0.15 ではなく v0.0.18 がインストールされてしまいます。**果たして、CF Dev プラグインは下位互換性を保証してくれるのでしょうか、、、。
cf install-plugin cfdev
もしかしたら v0.0.18 でも動作するのかも知れませんが(=未確認です)、不安が先行したので v0.0.15 をインストールすることにしました。CF Dev プラグインの v0.0.15 にアクセスし、Download セクションの OSX をクリックします。
https://github.com/cloudfoundry-incubator/cfdev/releases/tag/v0.0.15
ダウンロードされたファイルを -f
オプションで指定し、CF Dev プラグインをインストールします。
% cf install-plugin -f Downloads/cfdev-v0.0.15-rc.54-darwin
注意: プラグインは必ずしも信頼できない作成者によって書かれたバイナリーです。
プラグインのインストールと使用は自らの責任で行ってください。
プラグイン cfdev をインストールしています...
OK
プラグイン cfdev 0.0.15 は正常にインストールされました。
CF Dev プラグインのバージョンを確認してみました。確かに v0.0.15 がインストールされたようです。
% cf dev version
CLI: 0.0.15
BUILD: 54 (35368e4)
pas: 2.4.4
p.mysql: 2.5.3-build.7
p.redis: 2.0.1
p.rabbitmq: 1.15.5
p.spring-cloud-services: 2.0.7
Cloud Foundry の起動
プラグインをインストールしたので cf dev コマンドが利用できるようになったはずです。早速、Cloud Foundry を起動してみましょう。v1.3.1 同様、起動できませんでした、、、。
cf dev start -f Downloads/pcfdev-v1.2.0-darwin.tgz
ここで「Ubuntu on WSL で Cloud Foundry を動かそうとしてみた」に記載した PowerShell のエラーを思い出しました。単にメモリが足りないのではないかと。
公式ドキュメント をよく読んでみると、cf dev start コマンドはデフォルトでは CPU 4 コア、メモリ 8GB で動作するような記述がみつかりました。さらに、上記 cf dev start コマンドの実行中のメモリ使用状況を確認してみると、hyperkit プロセスが 15GB 以上のメモリを専有し、大量のスワップ I/O が発生しているではありませんか!
cf dev start コマンドにオプションを与えることにより、仮想化で利用する CPU コア数とメモリ容量を指定できるようです。物理メモリ 16 GB しかないマシンで 15GB 専有というのは異常事態ですので、推奨の 8GB よりも小さいサイズでの起動を試みることにしました。パフォーマンスは犠牲になりますが、起動しないよりはマシです。
cf dev start -f pcfdev-v1.2.0-darwin.tgz -c 4 -m 6144
出力結果は以下の通りです。*WARNING: It is recommended that you run PCF Dev with at least 8192 MB of RAM.*という警告メッセージが表示されています。4GB(-m 4096
)でも試してみましたが、メモリ不足でデプロイ途中でエラーが発生してしまいました。わたしの環境では、6GB というのが PCF Dev が起動し、スワップが発生しないギリギリのラインのようです。
% cf dev start -f pcfdev-v1.2.0-darwin.tgz -c 4 -m 6144
Downloading Network Helper...
Progress: |====================>| 100.0%
Installing cfdevd network helper (requires administrator privileges)...
Password:
Setting up IP aliases for the BOSH Director & CF Router (requires administrator privileges)
Downloading Resources...
Progress: |====================>| 100.0%
Setting State...
WARNING: It is recommended that you run PCF Dev with at least 8192 MB of RAM.
Creating the VM...
Starting VPNKit...
Waiting for the VM...
Deploying the BOSH Director...
Deploying PAS...
Done (18m18s)
Deploying Apps-Manager...
Done (2m19s)
██████╗ ██████╗███████╗██████╗ ███████╗██╗ ██╗
██╔══██╗██╔════╝██╔════╝██╔══██╗██╔════╝██║ ██║
██████╔╝██║ █████╗ ██║ ██║█████╗ ██║ ██║
██╔═══╝ ██║ ██╔══╝ ██║ ██║██╔══╝ ╚██╗ ██╔╝
██║ ╚██████╗██║ ██████╔╝███████╗ ╚████╔╝
╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚══════╝ ╚═══╝
is now running!
To begin using PCF Dev, please run:
cf login -a https://api.dev.cfdev.sh --skip-ssl-validation
Admin user => Email: admin / Password: admin
Regular user => Email: user / Password: pass
To access Apps Manager, navigate here: https://apps.dev.cfdev.sh
To deploy a particular service, please run:
cf dev deploy-service <service-name> [Available services: mysql,redis,rabbitmq,scs]
やっと、この起動画面を見ることができました。もし、物理メモリを 32GB 搭載していれば、なんの問題もなくスムーズにインストールされるんだろうなと思うと、なんだか悲しくなってきました。
Cloud Foundry にアクセス
推奨メモリ以下で動作しているローカル Cloud Foundry にログインしてみます。
cf login -a https://api.dev.cfdev.sh --skip-ssl-validation
先ほどの起動画面に表示されている通り、Email:admin
, パスワード:admin
でログインします。組織は 1. cfdev-org
を選択しました。無事にログインできたようです。
% cf login -a https://api.dev.cfdev.sh --skip-ssl-validation
API エンドポイント: https://api.dev.cfdev.sh
Your CF API version (2.125.0) is no longer supported. Upgrade to a newer version of the API (minimum version 2.128.0). Please refer to https://github.com/cloudfoundry/cli/wiki/Versioning-Policy#cf-cli-minimum-supported-version
Email: admin
パスワード:
認証中です...
OK
Select an org:
1. cfdev-org
2. system
組織 (enter to skip): 1
Targeted org cfdev-org
Targeted space cfdev-space
API エンドポイント: https://api.dev.cfdev.sh (API version: 3.60.0)
ユーザー: admin
組織: cfdev-org
スペース: cfdev-space
続いて、Apps Manager にアクセスしてみます。こちらも先ほどと同様に、Email:admin
, パスワード:admin
でログインします。
https://apps.dev.cfdev.sh
ここから先の cf push
は純粋な Cloud Foundry の世界なので、「mac でローカル Cloud Foundry (PCF Dev) を動かしてみた 」としては、ここまでとなります。
さいごに
3 年前、SAP Cloud Platform の Cloud Foundry エディションによるマルチクラウド対応が発表されたことにより、個人的な Cloud Foundry への期待感は大いに高まっていました。その後、Kubernetes の大躍進や商用 Cloud Foundry の雄であった Pivotal の VMware による巨額買収など、色々なことがあって Cloud Foundry とは少し距離を置いていました。
今回、久しぶりに Cloud Foundry に再会し、(Surface Laptop での起動は断念したものの)「やっぱ Cloud Foundry いいな」と改めて強く感じました。3 年前の「スゲーいいのに、なんで流行らないんだろ?」という想いは、いまも続いています。こうした「縁の下の力持ち」プラットフォームは、より開発者に近い IDE の Extension などで隠蔽されてしまい、あまり意識しなくてもいい方向に進んでいくのが正常進化なのかも知れませんが、シェルから cf push
したいのが開発者というものです。
これからも Cloud Foundry の行く末を見守っていきたいと思います。
参考リンク
https://qiita.com/Esfahan/items/30fd720d37f645028c7d
https://docs.pivotal.io/pcf-dev/install-osx.html
https://github.com/cloudfoundry/cli
https://github.com/cloudfoundry-incubator/cfdev/releases/tag/v0.0.15