導入
CodeReady Containersは以前ブログにも書いたように、ワンバイナリーで個人で使うOpenShiftの評価環境を構築できるツールです。名前がずいぶん前に変わって、OpenShift Localと言う名前で今も開発されています。
OpenShift Localを触って見ようといざ検索すると、情報を見つけるのに結構苦労します。またGoogleのアルゴリズムが変わったのでしょうか。最近特に調べたいものがなかなか出てきません。
OpenShift Localは、Red Hat Developerの製品一覧を検索すると見つかります。
Web検索すると、Red Hat のドキュメントサイトを検索すると、OpenShift Localの前身の「CodeReady Containers」の日本語のドキュメントだけが出てきます。基本的な使い方はOpenShift Localも一緒なので、今のうちにPDF形式で保管しておきましょう。
OpenShift Localの公式の情報はなぜかGoogle検索してもなかなか引っかかりませんが、おそらくこれです。
OpenShift Localのダウンロードはこちらから。
OpenShiftの各コマンドラインツールのダウンロードはこちらから。OpenShift LocalはバンドルされたCLIがありますが、たぶんここからOpenShift command-line interface (oc)だけはダウンロードしておいたほうが便利です。 OSとアーキテクチャーに注意してください。
ちなみにPodman Desktopを普段使っている場合は、Podman DesktopからKubernetesやOpenShift LocalをつかったOpenShiftのデプロイ、管理ができます。一瞬PodmanコンテナでOpenShift が動くのかなと思いきや、VMで動くようです。一元管理をPodman Desktopでできるだけみたいですね。

ここまでで必要なものはそろったので、インストールをしましょう。 どうやって使うかは、こちらに書かれている通りです。
デプロイ後はCLIやOpenShiftのWebインターフェイスでOpenShiftを体験できます。 久しぶりに使ってみたら、Webインターフェイスのデザインが変わってみやすくなっていました。
OpenShift Localとストレージ利用率に関する問題
私が普段使っている作業環境は、メモリー16GB、ストレージ256GBのM4 Mac miniです。去年Amazonでセールがあったときに買いました。このモデルは普段使いには特に困らないのですが、OpenShift Localを動かす環境としてはメモリーが結構ぎりぎりです。
以下のページの冒頭に書かれている通り、それなりにメモリーとストレージを消費します。
システムストレージの使用状況は、256GB中100GBくらい使用済みなので、残りは150GBくらいです。 普段この環境でVirtualBoxを使っていますが、VMのストレージはISOファイルなどは外付けのストレージに置いているし大きなデータを処理するときは外付けストレージを使っていたので、256GBでも特に問題ないです*1。
普段はこういうのをM4 Mac miniに接続して、外付けストレージとして運用しています。まだ安く変えた時期にNVMe SSD 2枚と一緒に購入し、片方にTime Machineバックアップ用として、もう片方は色々なデータ置き場として活用しています。Time Machineバックアップ用が1TB、データ置き場は512GBです。この運用方法は結構良かったので、データ置き場用のNVMe SSDはもっと大きい容量のストレージにすれば良かったと後悔しています*2。
というなので、Macの残りストレージが150GBくらいでも何とかなっています*3。
VirtualBoxは先ほど言ったように設定を変えるだけで、データファイルの置き場を変更できます。 ところがOpenShift Localには、別のストレージにデータをおくようなオプションは無さそうです。
以前のcrc CLIにはVirtualBoxをデプロイ環境として選択するオプションがありました。これを使えば自動的にデータが外部ストレージに置かれると思ったのですが、すでにそのオプションはだいぶ前に削除されていたのでした。残念。
何も設定せずにOpenShift Localツールを使ってOpenShiftを動かすと、ストレージの残りが見る見る減っていき、117GBくらいになっていました*4。
作業後、OpenShift Localで構築したOpenShiftを消すと少し空き容量が回復しますが、OpenShift Localを使い始めるときと比べて32GBくらいが行方不明でした。あとでその32GBはキャッシュ*5であることがわかりました。
そこで、OpenShift Localを実行したときに色々なファイルが保存される~/.crc/ディレクトリーを、シンボリックリンクを張って外付けのストレージに設定してみました。すると、「プロセスファイルが作れない」のようなエラー(すみません。スクショもログも取るのを忘れておぼろげです)が表示されて、クラスターの実行に失敗しました。全体をシンボリックリンクで外に逃がす対応はダメそうです。
考えた。だったらキャッシュディレクトリーだけ対象にしよう
ストレージとして常時消費するのは~/.crc/cacheなのだから、このディレクトリーだけを別のディレクトリーにシンボリックリンクをにしたら良いのではと思い、まずそれを試してみました。
% du -h ~/.crc/cache 25G ./crc_vfkit_4.21.0_arm64 31G . % ls -lh total 13267568 drwxr-xr-x@ 7 ytooyama staff 224B 2 19 20:14 crc_vfkit_4.21.0_arm64 -rw-rw-r--@ 1 ytooyama staff 6.3G 2 4 16:18 crc_vfkit_4.21.0_arm64.crcbundle
キャッシュを外部に移動します。
mkdir -p /Volumes/data/crc-cache mv ~/.crc/cache /Volumes/data/crc-cache
シンボリックリンクを張ります。これで~/.crc/cacheの実態は別のストレージになりました。
% ln -s /Volumes/data/crc-cache ~/.crc/cache % ls -ld ~/.crc/cache lrwxr-xr-x@ 1 ytooyama staff 23 2 19 20:35 /Users/ytooyama/.crc/cache -> /Volumes/data/crc-cache
OpenShift Localツールを使ってOpenShiftを実行してみます。今度はうまくいきました。
ただ、この変更でCache Usage Sizeのところは表示されなくなります。
実サイズはdu -sh /Volumes/data/crc-cacheコマンドで確認できるので、この際無視します。
% crc start % crc status CRC VM: Starting OpenShift: Starting Disk Usage: 0B of 0B (Inside the CRC VM) Cache Usage: 23B Cache Directory: /Users/ytooyama/.crc/cache % crc status CRC VM: Running OpenShift: Running (v4.21.0) RAM Usage: 6.459GB of 10.93GB Disk Usage: 24.24GB of 36.98GB (Inside the CRC VM) Cache Usage: 23B Cache Directory: /Users/ytooyama/.crc/cache
OpenShift VMが動いている間のストレージ消費
ただ、この対応だけだと、OpenShiftが動くVMのイメージはデフォルトそのままのディレクトリーなので、OpenShiftが動いている(=VMが動いている)間はシステムストレージを消費してしまいます。 キャッシュよりそちらの方が大きかったのでした。
そこで、OpenShift Localを使ったときのストレージ消費の激しいサブディレクトリーを調べました。
一つは先に設定変更したキャッシュディレクトリーで、もう一つはOpenShift Localを使ってクラスターを実行したときにその実行環境(VM)関連のファイルが保管される~/.crc/machinesディレクトリーです。
そこで、~/.crc/machinesディレクトリーもシンボリックリンクを張って外付けのストレージに移すことにしました。
データが置かれるだけのディレクトリーですから、うまくいけば問題なく動作します。
最初はデータ移行をしようと思ったのですが、思った以上に時間がかかるのでそれをあきらめ、クラスターをまっさらにしてから実行しました。
//いったんクラスターごと消す % crc delete Do you want to delete the instance? [y/N]: y Deleted the instance //マシンディレクトリーをいったん消す % rm -rf ~/.crc/machines //外部ストレージにマシンディレクトリーを作成 % mkdir -p /Volumes/data/crc-machines //マシンディレクトリーのシンボリックリンクを張る % ln -s /Volumes/data/crc-machines ~/.crc/machines //エイリアスができた % ls -ld ~/.crc/machines lrwxr-xr-x@ 1 ytooyama staff 26 2 19 21:10 /Users/ytooyama/.crc/machines -> /Volumes/data/crc-machines //起動をテスト % crc setup # Initialize environment for cluster % crc start # Start the cluster //ストレージ使用量を確認 % du -sh /Volumes/data/crc-machines 27G /Volumes/data/crc-machines
/Volumes/data/crc-machines が 27GB になっているので、次が 外付けのストレージに生成されています。
- qcow2 仮想ディスク
- VM メタデータ
- RHCOS 展開領域
問題なくクラスターも動作しました。 macOSのシステムディスクも、ほとんど消費されずに稼働するのを確認しました。
% crc status CRC VM: Running OpenShift: Running (v4.21.0) RAM Usage: 6.737GB of 10.93GB Disk Usage: 24.25GB of 36.98GB (Inside the CRC VM) Cache Usage: 23B Cache Directory: /Users/ytooyama/.crc/cache
これで問題解決です。
注意点
一部のディレクトリーを外出しにしたことで、使用上の注意事項が増えています。 以下に注意して使う感じでしょうか?
- 外部SSDを使っているため、取り外す前にcrc stopを実行
- 外部SSDをスリープ中に抜かない
- /Volumes/data のマウント名を変えないように注意
*1:とは言え、心の余裕と言う意味では、もう少しストレージが大きかった方が良かったと思います。次買い替えるときはストレージは512GBのモデルにします
*2:現在もAI需要とかで価格が高騰中ですからね。もう少し安くなったら買い替えを検討しようかと思います
*3:カスタマイズすればもっと大きいストレージ容量のMacを買うことはできるのですが、Amazonで買ったのでそういうカスタマイズはできなかったですし、去年はMac miniは256GBモデルしかありませんでした。Apple公式で買えば自由に選べていいのですが、ストレージとメモリーは昔から割高なんですよね。Apple
*4:気持ちの問題なのですが、空き容量が120GBを下回ると、私はそわそわしてしまいます。顔色は青くなり、冷や汗が垂れてきます(大嘘)。ストレージを使い潰していって自滅するんじゃないかって、心配で心配で。心配しすぎ?
*5:キャッシュはVMイメージのテンプレートです。圧縮されていて、OpenShiftを動かすときに圧縮イメージが展開されてから環境が動き始めていました。ディレクトリーを見ると、圧縮されたイメージが6GB、展開されたイメージがおおよそ30GBくらいでした