とりあえず、Eclipse Che が何かとか、アーキテクチャーとか、細かい用語とかは後回しにして、 Eclipse Che をローカル PC 上で動かす。
ワークスペース作成画面の表示まで確認できたので作業記録をのこす。
環境
- OS: Windows 10 Pro
- Docker: Docker version 18.09.2, build 6247962
- Docker Desktop の Kubernetes を使う感じで
Docker Desktop の設定
Docker Desktop
のタスクトレイアイコンを右クリック -> Settings
で、 Docker Desktop の設定を行う。
マシン性能の設定
マシン性能を求められるので、それなりの性能に設定。
Advanced
タブ内の以下の項目を設定- CPUs: 4
- Memory: 10240MB
- Swap: 1024MB
- Disk image max size: 64GB
Deploying single-user Che to Kubernetes | Eclipse Che Documentation では CPU 2, RAM 4 GB に設定されている。今回は倍程度に設定した。
Kubernetes の設定
Kubernetes の有効化
Kubernetes
タブ内のEnable Kubernetes
のチェックを入れるApply
ボタンを押下するとKubernetes cluster installation
のダイアログが表示されるのでInstall
ボタンを押す
...けーっこう時間かかりますね。
インストールと起動が成功すると、こんな感じで Kubernetes is running
と表示される。
コンテキストの確認
Kubernetes のコンテキストが docker-for-desktop
になっていることを確認する。
Kubernetes の動作確認
PowerShell で kubectl get services
と入力して以下のように出力されていれば OK.
> kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11m
Che の環境構築
Deploying single-user Che to Kubernetes | Eclipse Che Documentation の通りに進めて、 Minikube の変わりに docker-for-desktop を使うようにする。
role binding のデプロイ
正直何やっているのかわかんない。
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
Helm のインストール
今回は Chocolatey でインストールした。PowerShell を管理者で開いて下記コマンドを実行。
choco install kubernetes-helm
ユーザーコンテキストの設定
今回はデフォルトコンテキスト(docker-for-desktop
)でいいから何もしない。
クラスターに tiller をインストール
この辺りも何やっているのかわかんない...。
kubectl create serviceaccount tiller --namespace kube-system
wget https://raw.githubusercontent.com/eclipse/che/0ce04088634d979b4f6372dceb970b35b910a7e1/deploy/kubernetes/helm/che/tiller-rbac.yaml -OutFile ./tiller-rbac.yaml
kubectl apply -f ./tiller-rbac.yaml
helm init --service-account tiller --wait
デプロイ
ソース取得
設定ファイル類(yaml
) が必要なので、ソース一式を clone する。
git clone https://github.com/eclipse/che.git
デプロイコマンドを実行
cd CHE_ROOT/deploy/kubernetes/helm/che
helm dependency update
helm upgrade --install che --namespace che ./
helm upgrade
の時点で次のエラーが発生した。
Release "che" does not exist. Installing it now.
Error: validation failed: error validating "": error validating data: [unknown object type "nil" in ConfigMap.data.CHE_INFRA_KUBERNETES_NAMESPACE, 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]
エラーメッセージで検索したら、Helm 2.14.0 から空文字列が invalid になるらしい issue が見つかった。 (Helm install v2.14.0 "validation failed" error when using a template variable with value "" - helm/helm)
Helm をダウングレードする。
choco upgrade kubernetes-helm --version 2.13.1 --allow-downgrade
サーバー側の Helm はまだ 2.14.0 のままだから入れ直し。
helm reset --force
helm init --service-account tiller --wait
もういちどデプロイに挑戦。
helm upgrade --install che --namespace che ./
上手く言ったっぽい。 以下のような出力が得られた。
> helm upgrade --install che --namespace che .
Release "che" does not exist. Installing it now.
NAME: che
LAST DEPLOYED: Mon May 27 04:29:16 2019
NAMESPACE: che
STATUS: DEPLOYED
RESOURCES:
==> v1/ConfigMap
NAME DATA AGE
che 52 0s
==> v1/PersistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
che-data-volume Pending hostpath 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
che-865f8c767-dpxff 0/1 Terminating 0 11m
che-865f8c767-fn8n5 0/1 Pending 0 0s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
che-host ClusterIP 10.106.203.150 <none> 8080/TCP,8087/TCP 0s
==> v1/ServiceAccount
NAME SECRETS AGE
che 1 0s
==> v1beta1/ClusterRoleBinding
NAME AGE
che-che-clusterrole-binding 0s
==> v1beta1/Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
che 0/1 1 0 0s
==> v1beta1/Ingress
NAME HOSTS ADDRESS PORTS AGE
che-ingress che-che.192.168.99.100.nip.io 80 0s
...ここからどうやって Che サーバーに接続すればいいのかわからない。
再挑戦
Running Eclipse Che on Kubernetes using Docker Desktop for mac あたりを真似すればいけそうなのでやってみる。
ingress-nginx をインストール
helm で ingress-nginx をインストール。
helm install stable/nginx-ingress --name ingress-nginx --namespace ingress-nginx --set rbac.create=true
ループバックアドレスを登録
ingress-nginx
の LoadBalancer
の CLUSTER-IP
を確認する。
> kubectl get services --namespace ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-nginx-ingress-controller LoadBalancer 10.100.110.35 localhost 80:30627/TCP,443:31390/TCP 29s
ingress-nginx-nginx-ingress-default-backend ClusterIP 10.109.12.145 <none> 80/TCP 29s
Windows のループバックアドレス設定。
netsh interface ip add address Loopback 10.100.110.35 255.255.255.255
※ 10.106.203.150
は、 kubectl get services ...
で確認した CLUSTER-IP
を指定。
Che の構成情報(?)更新
value.yaml
を書き直して che を入れなおす
cd CHE_ROOT/deploy/kubernetes/helm/che
sed.exe -i -e 's/ cheNamespace: \"\"/ cheNamespace: ""che""/' .\values.yaml
sed.exe -i -e 's/ cheWorkspacesNamespace: \"\"/ cheWorkspacesNamespace: ""che""/' .\values.yaml
sed.exe -i -e 's/ ingressDomain: 192.168.99.100.nip.io/ ingressDomain: 10.100.110.35.nip.io/' .\values.yaml
helm dependency update
helm upgrade --install che --namespace che .
http://<cheNamespace>-<cheWorkspacesNamespace>.<ingressDomain>
でアクセス可能になるようだ。
Che へ接続
start http://che-che.10.100.110.35.nip.io
Che のワークスペース作成画面が表示された。
とりあえず、今日はここまで。
0 件のコメント:
コメントを投稿