はじめに
Eclipse Che のバージョンが7になって、色々と変わったというので、一年ぶりに minishift(OpenShift 3.x の minikube版)を立ち上げて、Eclipse Che を動かしてみました。Eclipse Che の Quick Start のままでは動かなかったので、備忘録として残しておきます。
ちなみに、minishift だとメモリも必要だし、ベースとなっている kubernetes がちょっと古いので、目的にもよりますが、個人的には minikube で十分かなと思っています。
準備
検証環境は macOS Mojave 10.14.6 (18G2016) です。以下の準備をしておきます。
- VirtualBox (もしくは、Docker Desktop for Mac と docker-machine-driver-hyperkit)
- minishift(1.34.1)
- chectl
chectl 以外のインストールは Homebrew でも、オリジナルなパッケージを使っても、お好みの手段で。なお、minishift は Docker Desktop に同梱の hyperkit を使うだけなので、minishift を動かすために Docker Desktop を起動しておく必要はありません。chectl については以下の通りです。
$ bash <(curl -sL https://www.eclipse.org/che/chectl/)
minishift の準備と起動
$ minishift config set memory 8192
$ minishift config set vm-driver virtualbox # もしくは、hyperkit
$ minishift start
$ minishift addons install --defaults
$ minishift addons enable admin-user
Che: インストールと起動(方法1)
$ oc login -u system:admin
$ chectl server:start -p minishift -a operator
このあと、http://che-che.xxx.xxx.xxx.xxx.xxx.nip.io をブラウザでアクセスすれば、Eclipse Che が使えます(xxx.xxx.xxx.xxx はインストールのメッセージの最後の部分に表示されています)。しかし、この方法ですと、OpenShift のDashboard からは見えないので、minishift で動かす意味が薄いと感じます。
Che: インストールと起動(方法2)
$ oc login -u system:admin
$ chectl server:start -p minishift -a minishift-addon
成功したら、minishift console
とするとデフォルトブラウザで OpenShift のコンソールが立ち上がりますので、Username: developer, Password:(適当に何か打ち込む)でログインし、http://che-che.xxx.xxx.xxx.xxx.nip.io を開くと、Che が立ち上がります。
なお、環境によっては
✖ Apply Che addon
→ error: E_TIMEOUT
というエラーの後、たくさんのエラーメッセージが出て起動に失敗することがあります。これは、chectl
のタイムアウトが短く、タイムアウト値がハードコーディングされていて、外から変更できないためです。~/.local/share/chectl/client/7.3.2/lib/tasks/installers
にある minishift-addon.js
に以下のパッチをあてることでうまくようになります。
--- minishift-addon.js-bak 2019-11-24 11:14:19.000000000 +0900
+++ minishift-addon.js 2019-11-24 11:15:15.000000000 +0900
@@ -139,7 +139,7 @@
yield this.installAddon(addonDir);
});
}
- applyAddon(flags, execTimeout = 120000) {
+ applyAddon(flags, execTimeout = 600000) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
let args = ['addon', 'apply'];
const imageRepo = this.getImageRepository(flags.cheimage);
では、試しに、C/C++ の workspace を作って、デモプログラムをビルドしてみましょう。

なるほど、ブラウザで Visual Studio Code が動くんですね。でも、これだったら、ネイティブの Visual Studio Code でプログラムして、OpenShift にデプロイする方がいいかなっていう気もしたりします。
Che: 停止と削除
$ chectl server:stop # ← access-token が必要と怒られることがある!
$ chectl server:delete
$ minishift stop
access-token が必要と怒られた時の対処法は、よくわかりません。
おわりに
minishift は OpenShift 3.11 までにしか対応していないのが寂しいです。Redhat Developer に登録すれば、Red Hat CodeReady Container として OpenShift 4.x を利用することができます。無償とはいえ、要登録(ライセンスへのアグリーメントが必要)なところが、ちょっとハードルがありますね。