Eclipse Che 7に興味を持ちインストールを試した際の健闘の記録です。
最終的には別の方法でインストールはできたのですが、ここで作業した内容は失敗しています。失敗の記録も何かしらのヒントになることもあると思いますので、記事にしておきます。
ここに記載していないものもあるので、何か気になる点があればご連絡(コメントなど)いただければと思います。
なお、無事にインストールできた際の記録は以下に記載しています。
参考元
https://www.publickey1.jp/blog/19/webideeclipse_che_7vscodeaskubernetes.html
上記の記事をみて興味を持ちました。
基本的には上記にリンクのあった以下の公式サイトをベースに作業しています。
注釈
途中で分かったのですが、Eclipse Che 7のインストール方法は以下の2種類に分かれます。
- chectlコマンドを使ってインストールする方法
- chectlコマンドを使わずにインストールする方法
前者は事前にminikubeなどの環境を用意しておいて、chectlコマンドにお任せする感じです。後者はEclipse Cheが起動していくまでのステップを一つ一つコマンド実行していくような感じです。
多分、後者の方が自由度は高いと思いますが、環境が用意できるならchectlコマンドを使ったインストールの方が良いと思います。実際、私が成功したインストールはchectlコマンドを使った方法になります。
以降に記載しているコマンドや手順は上記を把握できていない状態で色々と試していた際のものになります。chectlを使わない手順を見つつchectlコマンドを実行するという形になっているので、もし参考にする場合はその点にご注意いただければと思います。
インストールを試した色々
シングルユーザモードでインストール。
とりあえず、実行を試してみる。
$ chectl server:start
✔ Verify Kubernetes API…OK
✔ 👀 Looking for an already existing Che instance
✔ Verify if Che is deployed into namespace "che"…it is not
✖ ✈️ Platform preflight checklist
→ Platform is required ¯_(ツ)/¯ › Error: Platform is required ¯_(ツ)/¯
$
エラー。以下を参照となっているので参照。
https://che.eclipse.org/running-eclipse-che-on-kubernetes-using-docker-desktop-for-mac-5d972ed511e1
上記を参考に作業してみる。前提条件などのチェックはスキップ。
手順を参考に以下を実行。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/cloud-generic.yaml
404。。。。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml error: unable to read URL "https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml", server reported 404 Not Found, status code=404
リンク先から以下のコマンド?違い的にはstaticの有無っぽい。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud-generic.yaml
実行。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml namespace/ingress-nginx created configmap/nginx-configuration created configmap/tcp-services created configmap/udp-services created serviceaccount/nginx-ingress-serviceaccount created clusterrole.rbac.authorization.k8s.io/nginx-ingress-clusterrole created role.rbac.authorization.k8s.io/nginx-ingress-role created rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-binding created clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding created deployment.apps/nginx-ingress-controller created $
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud-generic.yaml service/ingress-nginx created $
OK。おそらくまだNGだが再度試してみる。
$ chectl server:start ✔ Verify Kubernetes API…OK ✔ 👀 Looking for an already existing Che instance ✔ Verify if Che is deployed into namespace "che"…it is not ✖ ✈️ Platform preflight checklist → Platform is required ¯_(ツ)/¯ › Error: Platform is required ¯_(ツ)/¯ $
エラー。helmが必要ということでhomebrewを使ってインストール。
$ brew install kubernetes-helm
インストール実行。OK。結果確認。
$ helm version version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"} $
OK。続き。
$ git clone -b '6.13.0' --single-branch --depth 1 https://github.com/eclipse/che
なんか、試したいバージョンじゃない気がする。。。。
とりあえず、続行。クローンは普通にOK。
cd che/deploy/kubernetes/helm/che
$ kubectl create serviceaccount tiller --namespace kube-system serviceaccount/tiller created $ $ kubectl apply -f ./tiller-rbac.yaml clusterrolebinding.rbac.authorization.k8s.io/tiller-role-binding created Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply serviceaccount/tiller configured $ $ helm init --service-account tiller Error: unknown flag: --service-account $
なんか最後にエラーになった。
簡単に調べた感じだと不要になったっぽい?
Tiller was removed in helm 3, and therefore
https://github.com/helm/helm/issues/7052helm init
is no longer necessary. See https://helm.sh/docs/faq/#removal-of-tiller
続行してみる。
$ kubectl get services --namespace ingress-nginx
$ export CHE_DOMAIN=$(kubectl get services --namespace ingress-nginx -o jsonpath='{.items[*].spec.clusterIP}') $
OK。次。
$ sudo ifconfig lo0 alias ${CHE_DOMAIN}
なんか怖そうなコマンドがきた。。。
ちゃんと次の行に説明があった。一時的、再起動したらエイリアスは消えるとのこと。OK。
Alias is temporary. After a reboot it will be gone. It can be removed using the following command. (you may replace CHE_DOMAIN by a specific ip address if you don’t have anymore value of CHE_DOMAIN). ifconfig lo0 command displays all the aliases.
続行。
$ kubectl get pods --all-namespaces -o custom-columns=NAMESPACE:metadata.namespace,NAME:metadata.name,STATUS:status.phase NAMESPACE NAME STATUS docker compose-6c67d745f6-5bz7b Running docker compose-api-57ff65b8c7-wd6gl Running ingress-nginx nginx-ingress-controller-7dcc95dfbf-9s45q Running kube-system coredns-6dcc67dcbc-75qrd Running kube-system coredns-6dcc67dcbc-jhfcv Running kube-system etcd-docker-desktop Running kube-system kube-apiserver-docker-desktop Running kube-system kube-controller-manager-docker-desktop Running kube-system kube-proxy-gz5sn Running kube-system kube-scheduler-docker-desktop Running $
最後?の実行。
$ helm upgrade --install che --namespace che --set cheImage=eclipse/che-server:6.13.0 --set global.cheWorkspacesNamespace="che" --set global.ingressDomain=${CHE_DOMAIN}.nip.io ./ Release "che" does not exist. Installing it now. Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: [unknown object type "nil" in ConfigMap.data.CHE_LOGGER_CONFIG, unknown object type "nil" in ConfigMap.data.CHE_OAUTH_GITHUB_CLIENTID, unknown object type "nil" in ConfigMap.data.CHE_OAUTH_GITHUB_CLIENTSECRET, unknown object type "nil" in ConfigMap.data.CHE_WORKSPACE_HTTPS__PROXY, unknown object type "nil" in ConfigMap.data.CHE_WORKSPACE_HTTP__PROXY, unknown object type "nil" in ConfigMap.data.CHE_WORKSPACE_NO__PROXY] $
エラーになったっぽい。確認してみたら、「kubectl get pods」した時にtillerがない。
これが原因?
やはり参考にしているページとバージョンが違うのは良くないのかもしれない。
古いバージョン、おそらく2系のhelmを入れたい。。。
$ brew search versions/kubernetes-helm No formula or cask found for "versions/kubernetes-helm". Closed pull requests: kubernetes-helm 2.16.1 (https://github.com/Homebrew/homebrew-core/pull/46671) helm 3.0.0 (https://github.com/Homebrew/homebrew-core/pull/46708) new recipe - kubernetes-helm@3 to install latest v3 rc (https://github.com/Homebrew/homebrew-core/pull/45789) New formulae: kubernetes-helm@2.9 2.9.1 kubernetes-helm@2.10 2.10.0 (https://github.com/Homebrew/homebrew-core/pull/34690) glide: fix for go >= 1.10 (https://github.com/Homebrew/homebrew-core/pull/31885) deis 2.12.0 (https://github.com/Homebrew/homebrew-core/pull/10809) $
brewからなんとかできないか頑張ったが、うまくできなかったので、以下から直接DLし、解凍したファイルをPATHが通った場所に格納した。
https://github.com/helm/helm/releases
$ helm version Client: &version.Version{SemVer:"v2.16.0-rc.1", GitCommit:"e13bf2345ff04508646e21e507fb64c275037162", GitTreeState:"clean"} Error: could not find tiller $
一旦、バージョン変更はOK。再度、実行。
$ helm init --service-account tiller Creating … … … … $
うまく行ったような行かなかったような。。。
helm upgrade --install che --namespace che --set cheImage=eclipse/che-server:6.13.0 --set global.cheWorkspacesNamespace="che" --set global.ingressDomain=${CHE_DOMAIN}.nip.io ./
今度はエラーなく終了。OKか。。。?
アクセス不可。「kubectl get pods」でcheがPenddingになっているので、それが原因。。。?
chectl server:start
なんか実行したら開始した。。。。?
適当にワークスペースを作成してみた。
作成自体はできた様に見えたが、IDEを開くと以下のエラーが。
Error: Failed to run the workspace: " The error may be caused by an expired token or changed password. Update Che server deployment with a new token or password."
Google翻訳をしたところ以下の様に翻訳された。
エラー:ワークスペースの実行に失敗しました:「エラーはトークンの期限切れまたはパスワードの変更が原因である可能性があります。新しいトークンまたはパスワードでCheサーバーの展開を更新してください。」
良く分からない。。。。ログを見たら以下の様なメッセージが。
2020-01-07 13:26:25,217[nio-8080-exec-2] [INFO ] [o.e.c.a.w.s.WorkspaceRuntimes 322] - Starting workspace 'che/wksp-2pls' with id 'workspacechtlxvpjpq4hsawc' by user 'che' 2020-01-07 13:26:25,692[default.svc/…] [WARN ] [k.c.d.i.WatchConnectionManager 195] - Exec Failure: HTTP 403, Status: 403 - java.net.ProtocolException: Expected HTTP 101 response but was '403 Forbidden' at okhttp3.internal.ws.RealWebSocket.checkResponse(RealWebSocket.java:219) at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:186) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) 2020-01-07 13:26:25,702[aceSharedPool-2] [WARN ] [.i.k.KubernetesInternalRuntime 224] - Failed to start Kubernetes runtime of workspace workspacechtlxvpjpq4hsawc. Cause: The error may be caused by an expired token or changed password. Update Che server deployment with a new token or password. 2020-01-07 13:26:26,218[aceSharedPool-2] [INFO ] [o.e.c.a.w.s.WorkspaceRuntimes 383] - Workspace 'che:wksp-2pls' with id 'workspacechtlxvpjpq4hsawc' start failed
良く分からないので、一回、再起動?してみる。
$ chectl server:start ✔ Verify Kubernetes API…OK ✔ 👀 Looking for an already existing Che instance ✔ Verify if Che is deployed into namespace "che" ✔ Found stopped che deployment ✔ 👀 Starting already deployed Che ✔ Scaling up Che Deployments…done. ❯ ✅ Post installation checklist ❯ ✅ Post installation checklist ❯ Che pod bootstrap ✖ scheduling → ERR_TIMEOUT: Timeout set to pod wait timeout 300000. podExist: false, currentPhase: undefined downloading images starting Retrieving Che Server URL Che status check Error: ERR_TIMEOUT: Timeout set to pod wait timeout 300000. podExist: false, currentPhase: undefined at KubeHelper. (/usr/local/lib/chectl/lib/api/kube.js:599:19) at Generator.next () at fulfilled (/usr/local/lib/chectl/node_modules/tslib/tslib.js:107:62) $
エラーっぽい。でも、再度ワークスペースにアクセスしたら画面は表示される。
これは画面が表示できているだけで、ちゃんと起動できていないパターン?
ただ、再度実行した際は成功になっているので、大丈夫?
$ chectl server:start ✔ Verify Kubernetes API…OK ✔ 👀 Looking for an already existing Che instance ✔ Verify if Che is deployed into namespace "che" ✔ Found running che deployment ✔ Check Che server status…RUNNING (auth disabled) ✔ ✅ Post installation checklist ✔ Retrieving Che Server URL…http://che-che.10.111.113.138.nip.io ✔ Che status check Command server:start has completed successfully. $
チェックアウトしているバージョンが悪い?色々試した時に以下のバージョンにしていた。。。
$ git branch -a (HEAD detached at 7.6.0)
とりあえず、切り替えてみる。
$ git checkout refs/tags/6.13.0
再度インストールなど試したけど、ダメっぽい。
→この後も色々と試しましたが、最終的に諦めました。
コメント