この「スタック一覧」に「Java12 Gradle」が欲しいわけです。
前提
- OS: Windows10 Pro
- Docker: Docker version 19.03.1, build 74b1e89
- helm: v2.14.2
- Docker Desktop の Kubernetes 有効化済み
- Docker Desktop の Kubernetes を使う
- インストールする che: 7.0.0-rc-4.0
- 前回(Eclipse Che に自作の Che Plugin(java12 & vscode-java) を追加する)の作業完了済み
- ここで作ったプラグインを使う
スタック用のコンテナを作成
che7 の場合、「ランタイム用」と言うのが正確っぽいのだけど、「SELECT STACK」って書いてあるし、とりあえずスタックと呼んでおく。
eclipse/stack-base:debian をベースイメージとして、環境を組み立てていく。
Docker イメージは Docker Hub の eclipse/stack-base で公開されている。
スタック用の Docker コンテナを作成
バイナリをダウンロードして展開、パス追加を行う。
Dockerfile:
FROM eclipse/stack-base:debian
LABEL maintainer "mikoto2000 <mikoto2000@gmail.com>"
LABEL version "1.0.0"
LABEL description "OpenJDK: 12.0.2, Gradle: 5.5.1"
USER root
RUN wget -q https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz \
&& tar xf openjdk-12.0.2_linux-x64_bin.tar.gz -C /opt \
&& rm openjdk-12.0.2_linux-x64_bin.tar.gz \
&& wget -q https://services.gradle.org/distributions/gradle-5.5.1-bin.zip \
&& unzip gradle-5.5.1-bin.zip -d /opt \
&& rm gradle-5.5.1-bin.zip
USER user
ENV JAVA_HOME /opt/jdk-12.0.2
ENV PATH $JAVA_HOME/bin:/opt/gradle-5.5.1/bin:$PATH
これを使ってビルド。
docker build -t mikoto2000/che-stack_java12-gradle5:latest .
コンテナレジストリに登録
Docker Hub に push。
docker push mikoto2000/che-stack_java12-gradle5:latest
自作スタックを登録した che-devfile-registry を作成
che-server は、「どんなスタックがあるか・つかえるか」を、 che-devfile-registry に問い合わせ、 その結果を前述の「SELECT STACK」の一覧に表示している。
なので、自作プラグインを登録した che-devfile-registry を作成する必要がある。
この章で che-devfile-registry を作っていく。
eclipse/che-devfile-registry
をクローン
clone して checkout。
cd ~/project
git clone https://github.com/eclipse/che-devfile-registry.git
cd che-devfile-registry
$CHE_DEVFILE_REGISTRY_SOURCE=$(pwd)
スタック情報を追加
スタック情報を記述した meta.yaml
, devfile.yaml
を作成・追加する。
ディレクトリ $CHE_DEVFILE_REGISTRY_SOURCE/devfiles/java12-gradle5/
に、 ファイル meta.yaml
と devfile.yaml
を作成する。
java-gradle を参考に書き換え書き換えしていった。
meta.yaml:
---
displayName: Java12 Gradle5
description: Java Stack with OpenJDK 12 and Gradle 5.5.1
tags: ["Java", "OpenJDK", "Gradle", "Debian"]
icon: https://www.eclipse.org/che/images/logo-eclipseche.svg
globalMemoryLimit: 2674Mi
devfile.yaml
---
apiVersion: 1.0.0
metadata:
name: java12-gradle5
projects:
- name: console-java-simple
source:
type: git
location: "https://github.com/che-samples/console-java-simple.git"
components:
- type: chePlugin
id: mikoto2000/java12/latest
- type: dockerimage
alias: gradle
image: mikoto2000/che-stack_java12-gradle5:latest
env:
- name: GRADLE_USER_HOME
value: /home/user/.gradle
- name: JAVA_OPTS
value: "-XX:MaxRAMPercentage=50 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10
-XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90
-Dsun.zip.disableMemoryMapping=true -Xms20m -Djava.security.egd=file:/dev/./urandom"
- name: JAVA_TOOL_OPTIONS
value: "-XX:MaxRAMPercentage=50 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10
-XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90
-Dsun.zip.disableMemoryMapping=true -Xms20m -Djava.security.egd=file:/dev/./urandom"
- name: HOME
value: /home/user
memoryLimit: 512Mi
volumes:
- name: gradle
containerPath: /home/gradle/.gradle
mountSources: true
che-devfile-registry のコンテナを作成
cd $CHE_DEVFILE_REGISTRY_SOURCE
docker build -t mikoto2000/che-devfile-registry:latest -f ./build/dockerfiles/Dockerfile --target registry .
コンテナレジストリに登録
docker push mikoto2000/che-devfile-registry:latest
che の設定とデプロイ
che-server が、先ほど作った che-devfile-registry に問い合わせを投げるように設定して、デプロイしなおす。
$CHE_SOURCE/deploy/kubernetes/helm/che/custom-charts/che-devfile-registry/values.yaml
を修正
che-devfile-registry/values.yaml
の cheDevfileRegistry
で、 先ほど作った mikoto2000/che-devfile-registry
を使用するように修正。
before:
cheDevfileRegistry:
image: quay.io/eclipse/che-devfile-registry:nightly
imagePullPolicy: Always
memoryLimit: 32Mi
memoryRequests: 16Mi
after:
cheDevfileRegistry:
image: mikoto2000/che-devfile-registry:latest
imagePullPolicy: Always
memoryLimit: 32Mi
memoryRequests: 16Mi
これで、 che を再デプロイした時に、改造した che-devfile-registry が使われる。
che の再デプロイ
helm upgrade
の使い方がわからないので、いったん削除してからデプロイしなおす。
cd $CHE_SOURCE/deploy/kubernetes/helm/che
helm delete --purge che
helm repo update
helm dependency update
helm upgrade --install che --namespace che --set cheImage=eclipse/che-server:7.0.0-rc-4.0 --set global.cheWorkspacesNamespace="che" --set global.ingressDomain=${CHE_DOMAIN}.nip.io ./
これで、 http://che-che.${CHE_DOMAIN}.nip.io/
にアクセスすると、改造した che-devfile-registry を使用する che にアクセスできる。
スタックが追加されていることを確認
最初と同じようにワークスペースの作成画面に行くと、 SELECT STACK
の一覧の中に Java12 Gradle5
が追加されていることがわかる。
参考資料
- Introduction | Introduction to Devfile
- Configuring a Che workspace using a Devfile
- Making a workspace portable using a Devfile
- Kubernetes Plugin for Eclipse Che - Eclipse Che Blog
- eclipse/che-devfile-registry
- eclipse/stack-base - Docker Hub
更新履歴
日付 | 更新内容 |
---|---|
2019/8/07 | 新規作成 |
2020/6/10 | docker build のコマンド間違いを修正 |
0 件のコメント:
コメントを投稿