メモリ8GBのWindows7機にMinishiftを導入しOpenShift環境を初体験してみた

最近、私の周りでは [OpenShift](https://jp-redhat.com/openeye_online/column/omizo/4093/) が話題ですが、規模が大きいこともあって、まだ実際に触った経験がありません。

1台のマシン上で Kubenetes を体験できる [Minikube](https://kubernetes.io/ja/docs/tutorials/hello-minikube/) という環境があるのですが、この環境の応用で [Minishift](https://docs.okd.io/latest/minishift/) という環境の存在を教えてもらったので、以下のスペックしかないボロWin7機にインストールして体験してみました。

>CPU: Intel Core i5-5300U 2Core 2.3GHz
>RAM: 8GB
>OS: Windows7 Pro 64bit
>VM: Oracle VM VirtualBox 6.0.10

なおもう一台、同じようにテストしたデスクトップ機がこちら。CPU も違いますが、やはりメモリに余裕があるのが大きな差となっていて、こちらは他のソフトと併用しつつ普通に使える感じです。

>CPU: Intel Core i7-4790 4Core 3.6GHz
>RAM: 16GB
>OS: Windows10 Pro 64bit
>VM: Oracle VM VirtualBox 6.0.10 (Hyper-V 無効化)

# インストールしよう

[Installing Minishift](https://docs.okd.io/latest/minishift/getting-started/installing.html) ページを参照して Minishift ツールを設定します。以下が手動インストールの手順。

1. ご使用のオペレーティングシステム用のアーカイブを [Minishiftリリースページ](https://github.com/minishift/minishift/releases) からダウンロードし、[7zip](https://sevenzip.osdn.jp/) などのソフトで解凍します。
2. ディレクトリの内容を好みの場所にコピーします。
3. PATH環境変数に Minishift バイナリを追加します。

私は 1. で minishift-1.34.1-windows-amd64.zip というファイルをダウンロードしました。2. は `c:\minishift` フォルダに解凍した内容をコピーし、またそのフォルダ内で作業するため 3. は実施しません。

インストール後はこんな感じで、ファイル3つしか無いのがシンプルですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/2da43261-df49-5172-f21b-e7414ae5fe1d.png)
コマンドプロンプトではこんな感じ。今回はPATH環境変数を設定していませんから、フォルダ内に移動してから各種操作を実施します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/f03cc58d-32d9-b866-4daa-2ab43ab327bb.png)

# 利用を開始しよう

[Minishift Quickstart](https://docs.okd.io/latest/minishift/getting-started/quickstart.html) の Starting Minishift セクションを実行します。

環境を構築しよう、といっても簡単です。さきほどのコマンドプロンプトから、以下のコマンドを実行するだけです。

```
minishift start --vm-driver=virtualbox
```

最初の実行では、途中でディスクイメージのダウンロードなどが入り、10～20分ほどかかりますので、時間に余裕のある時に実施しましょう。

ただし上記のまま実行すると、仮想環境がメモリ 4GB、ディスク 20GB のサイズで作成されます。私のボロWin7機は実メモリ8GBしかありませんから、その半分を費やすことになります。私はマシンをいったん再起動し、他のソフトは起動しない空きメモリに余裕のある状態で、上記のコマンドを実行しました。

`minishift start -h` コマンドでヘルプを表示させてみると、仮想マシンのメモリ容量は `--memory` オプションで指定できるようなので、ちょっと試すだけであれば `--memory 3GB` と減らしてもよいかもしれません。また逆にヘビーに使いたい場合は増やし、ディスク容量も `--disk-size` オプションで変更しておくのも良いでしょう。

とりあえず今回の記事では、上記の標準設定 (4GB,20GB) で進めていきます。

# 準備が完了

以下のような感じで `start` コマンドが終了すれば、準備はほぼ完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/55f13511-6e62-206f-022b-e39a2c3e90a4.png)
表示された URL (今回は https://192.168.99.100:8443/console) にブラウザでアクセスしてみましょう。

以下のようなセキュリティ警告(Chromeの場合)が表示される場合がありますが、[詳細設定]をクリックして表示されるリンクからアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/914b583a-dea4-6e49-b973-39630812fc67.png)
ログイン画面が表示されるので、Username に `developer`、Password には適当な値を入力して [Log In] します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/42d4a693-e13b-e668-138b-1636c0993aef.png)
OpenShift の管理画面にアクセスできました。無事にサービスが開始できているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/091de306-c8a9-bcd8-0d3c-4308135b03e3.png)
この段階でボロWin7機のメモリ使用状況は85%程度。他に重いアプリを起動したり、ブラウザのタブを開きすぎたりしなければ、このまま問題なく利用できそうです。OpenShift 環境自体は VirtualBox 上の仮想環境で動作していて、メモリ容量などは標準値のままにしてありますからね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/7945a9c5-b898-cd3a-c4a0-2442e3428110.png)
さて、コマンドプロンプトのほうも準備を完了しておきましょう。以下のコマンドを実行し、表示されたパス設定を(コピペで)実行します。

```
minishift oc-env
```

以下のような感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/1e043329-abcd-de77-c86b-ad1f8529571e.png)
これで OpenShift の管理コマンドである `oc` にパスが通りましたので、oc コマンドで現在の状態を確認しておきましょう。

```
oc version
oc status
oc get pods
```

こんな感じで。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/53a2cef4-b7f4-c2aa-60dc-17445519d793.png)

# アプリを作成してみよう

[Minishift Quickstart](https://docs.okd.io/latest/minishift/getting-started/quickstart.html) の Deploying a Sample Application セクションを実行します。

まずは GitHub にある [nodejs-ex](https://github.com/sclorg/nodejs-ex) リポジトリをベースとしてアプリを新規作成します。

```
oc new-app https://github.com/sclorg/nodejs-ex -l name=myapp
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/45119dbb-e6ae-6590-f4cc-cc2d622b2ce0.png)
実行ログを確認して、

```
oc logs -f bc/nodejs-ex
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/8740f7e2-283d-baed-06fd-7b0ebe9bf847.png)
作成したサービスを外部からアクセス可能に設定します。

```
oc expose svc/nodejs-ex
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/8030b4b8-1b00-fe87-004f-0953a55374bb.png)
そしてサービスにブラウザでアクセスします。

```
minishift openshift service nodejs-ex --in-browser
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/4b675731-4cfb-c19d-bb3a-591fbca499b9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/84cb532d-9b18-8841-845d-a8f58d1ae9d1.png)

無事に Node.js アプリが起動しており、ブラウザでアクセスができました。表示された画面には今後のアドバイスが表示されていますので、この先を体験したい方は読んでみてください(私も近いうちにチャレンジしたいと思います)。

最後にコマンドプロンプト上で、`oc get pods` を再度実行して、OpenShift 環境の状況を確認しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/9742621e-969f-a71a-c04d-3d547b7726e9.png)

また Web コンソールのほうでも、追加したアプリの情報を参照できますので、いろいろ眺めてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/bb6f6d3d-25e7-cfca-e740-cef7278876d6.png)

# 利用を終了しよう

おつかれさまでした。以下のコマンドを実行すると、仮想環境などがクローズされ、Minishift の利用を終了することができます。

```
minishift stop
```

後日の再開は、コマンドプロンプトを開いて `c:\minishift` フォルダに移動し、以下の開始コマンドから始めればokです。必要なファイルはダウンロード済みなので、前回ほどは時間がかからず起動するはず。

```
minishift start --vm-driver=virtualbox
```

そして今後の利用が不要の場合は、以下のコマンドで環境を削除することができます。プロファイルもあわせて削除しておくと良いでしょう。

```
minishift delete --force
minishift profile delete PROFILE_NAME
```

`PROFILE_NAME` はデフォルトだと minishift ですが、念のため `minishift profile list` コマンドで確認できます。

# 補足情報

今回は仮想環境として VirtualBox を使用しましたが、OpenShift 実行中に VirtualBox を起動すると参照できる仮想マシンの設定がコチラ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/31af8c32-f888-30a6-ea26-1647bbdc8c65.png)
光学ドライブに Docker Toolbox などでお馴染みの boot2docker.iso が設定されていたり、やっぱり `c:\Users` を共有していてドキドキしたり、仮想マシンの情報がホームディレクトリの .minishift 配下に保存されていたり、いろいろ興味深いです。

# というわけで

メモリ8GBしかない Windows7 機、という限定された環境で、Mini ですが OpenShift 環境を構築し、体験することができました。

同等以上のスペックがあれば、皆さまのマシンでも実行可能だと思われますので、興味のある方はぜひトライしてみてください。

それではまた！