ラズパイでVMware ESXiを構築して運用した話

この記事はKyash Advent Calendar 2021の18日目の記事です。

こんにちは。KyashのPaymentチーム佐藤です。KyashではVisaやQUICPayの決済基盤の開発をしております。

去年はラズパイでおうちk8sを構築した話をさせていただきましたが、今回はそのラズパイクラスターにラズパイ4を1台増設してARM版VMware ESXiをインストールしてみましたので動機や構成そして用途について書いていこうと思います。いわゆる感想文ってやつですね。

前回同様、構築方法などはWeb上に大量に上がっているので今回は省かせていただこうかと思います。

f:id:ar_ciel_sa2:20211217171205j:plain

なぜ作ろうと思ったのか?

去年構築したラズパイk8sクラスターにアプリケーションをデプロイしていてコンテナの世界の中でk8sだけあるというのは不便さというか物足りなさがありました。

自作k8sにアプリケーションをデプロイするには以下の作業が必要です。

  1. CIでアプリケーションをAArch64用にビルド
  2. AArch64用のコンテナイメージ作成
  3. コンテナレジストリーにプッシュ
  4. k8sクラスターにデプロイ

このプロセスの中にはアプリケーションをビルドしたりコンテナイメージをビルドするCIや、ビルドしたコンテナイメージを保持しておくコンテナレジストリーという登場人物が居ます。つまり、k8sだけあってもその他のエコシステムが無いときちっとした実運用にはならないのです。 もちろんCircle CIやGitHub ActionsなんかでAArch64用にアプリケーションをビルドして、docker buildxでビルドすればローカルでもAArch64用のコンテナはできますし、コンテナレジストリーもDocker Hubを使ったり、k8s上にregistryを配置すれば解決できます。

でもせっかくならCIもコンテナレジストリーも専用ワークロードに自前で持ちたい、構築したいと想い始めました。k8sを構築したときからハイパーバイザーの構築もやってみたいと思っていたので1台ラズパイを増設してハイパーバイザーを構築するかーとなりました。

ハイパーバイザーの選定

ハイパーバイザーはVMware ESXiを選びました。 ESXiを選んだ理由は本当にシンプルで「ラズパイ ハイパーバイザー」で検索したときにファーストビューで目についたからです。 目についてからサクッと構築してしまったので、他のハイパーバイザーについてはあまり調べてないのですが、KVMとかを検討しても良かったかもと後で思っています。

しかし、ファーストビューに目につくだけあり公式ページの情報は充実してますし、ブログなどの情報量はかなりのものでした。 そういう点ではVMware ESXiを選んで良かったかもしれません。

追加で買ったパーツとか構成とか

VMware ESXi をラズパイにセットアップするのに必要なものは以下のとおりです - Raspberry PI 4 model B 8GB - 4台目のを買ってしまった - microSDXCカード - UEFI用なので容量は少なくてOK - USBメモリ - インストーラー用 - 128GB以上のUSBストレージデバイス - VMware ESXi のインストール先 - 128GB のSSDを購入 - 128GBシステム領域パーティションで確保されるので、128GB以上のものを買えばよかった - 追加でもう一つUSBストレージデバイス - 上記の通り、128GBをシステムに確保されてしまうのでVMのストレージなどの用途でもう一個ストレージが必要になった - 手持ちの500GBのHDDをつけた

セットアップ後の構成は以下のようになります

f:id:ar_ciel_sa2:20211217173859p:plain

上述の通りではあるのですが、VMware ESXi 本体はUSB1につないだSSD 128GBに入ってます。Micro SDはUEFI用です。USB2につながっているHDDはVMのデータや、OSイメージなどの保管場所です。

USB2につけているHDDはアクセスが低速で、クラスターに綺麗にまとめられていないので見た目もあまり良くないなぁと感じています。ここはNASにしてiSCSIなどでつなぎたいところです。

実際に使ってみた

f:id:ar_ciel_sa2:20211217174026p:plain

CIにjenkins、コンテナレジストリ公式のregistry、DBにPostgreSQLを使っているのですが、jenkinsはそのままjenkinsインスタンスへ、コンテナレジストリとDBはstorageインスタンスに入れています。 YAMAHAルーターSSHセッションを張ってLAN内のDNSを設定できるような仕組みを作ったのですが、それをdns-managerに配置しています。

セットアップも手動ではありますが、お手軽にできます。インストールイメージをVMwareのストレージにアップロードしておけば、VMware ESXi 内部で読み出して仮想DVDドライブを反映できます。

エコシステムとして一気にまとまってきたので、プライベートクラウドを構築したような感じで楽しいですね。 やっぱりNASとかを購入してSANノードとコンピューティングノードを分けるということをしてみたくなります。 他にもKVMでも遊んでみたいなぁとも思ってます。

最後に

今回はおうちk8sクラスターにVMware ESXiを追加構築した話を書かせていただきました。k8sを実運用するのに支える要素を自由に構築できるのでかなり便利です。ラズパイのk8sクラスターをお持ちの皆さんもぜひもう1台ラズパイを追加して、ハイパーバイザーを構築してみてはいかがでしょうか?おうちプライベートクラウド感が楽しめますよ。

Kyashではサーバーサイドエンジニアを募集中です。 もしご興味などありましたらぜひカジュアル面談へどうぞ

https://www.wantedly.com/projects/793421