2019年8月7日水曜日

Eclipse Che に java12 のスタックを追加する

この「スタック一覧」に「Java12 Gradle」が欲しいわけです。

前提

スタック用のコンテナを作成

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 が追加されていることがわかる。

参考資料

更新履歴

日付 更新内容
2019/8/07 新規作成
2020/6/10 docker build のコマンド間違いを修正

Eclipse Che に自作の Che Plugin(java12 & vscode-java) を追加する

この「プラグイン一覧」画面に「Language Support for Java 12」が欲しいわけです。

前提

  • 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

自作プラグイン作成

theia-endpoint-runtime をベースイメージにして、必要な環境一式をインストールすればよい。

Docker イメージは、 Docker Hub の eclipse/che-theia-endpoint-runtime で公開されている。

プラグイン実行用の Docker コンテナを作成

remote-plugin-java11 の Dockerfile と AdoptOpenJDK の Dockerfile を参考にして、vscode-java の実行環境を組み立てていく。

Dockerfile:

FROM eclipse/che-theia-endpoint-runtime:7.0.0-rc-4.0

LABEL maintainer "mikoto2000 <mikoto2000@gmail.com>"
LABEL version="1.0.0"
LABEL description "che-theia, remote-plugin-runner-java12"

# from https://github.com/AdoptOpenJDK/openjdk-docker/blob/4dd8db3c0fb30281ead0baa706800a605d3ebbe1/12/jdk/alpine/Dockerfile.hotspot.releases.full#L24
RUN apk add --no-cache --virtual .build-deps curl binutils procps nss \
    && GLIBC_VER="2.29-r0" \
    && ALPINE_GLIBC_REPO="https://github.com/sgerrand/alpine-pkg-glibc/releases/download" \
    && GCC_LIBS_URL="https://archive.archlinux.org/packages/g/gcc-libs/gcc-libs-9.1.0-2-x86_64.pkg.tar.xz" \
    && GCC_LIBS_SHA256="91dba90f3c20d32fcf7f1dbe91523653018aa0b8d2230b00f822f6722804cf08" \
    && ZLIB_URL="https://archive.archlinux.org/packages/z/zlib/zlib-1%3A1.2.11-3-x86_64.pkg.tar.xz" \
    && ZLIB_SHA256=17aede0b9f8baa789c5aa3f358fbf8c68a5f1228c5e6cba1a5dd34102ef4d4e5 \
    && curl -LfsS https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub -o /etc/apk/keys/sgerrand.rsa.pub \
    && SGERRAND_RSA_SHA256="823b54589c93b02497f1ba4dc622eaef9c813e6b0f0ebbb2f771e32adf9f4ef2" \
    && echo "${SGERRAND_RSA_SHA256} */etc/apk/keys/sgerrand.rsa.pub" | sha256sum -c - \
    && curl -LfsS ${ALPINE_GLIBC_REPO}/${GLIBC_VER}/glibc-${GLIBC_VER}.apk > /tmp/glibc-${GLIBC_VER}.apk \
    && apk add /tmp/glibc-${GLIBC_VER}.apk \
    && curl -LfsS ${ALPINE_GLIBC_REPO}/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk > /tmp/glibc-bin-${GLIBC_VER}.apk \
    && apk add /tmp/glibc-bin-${GLIBC_VER}.apk \
    && curl -Ls ${ALPINE_GLIBC_REPO}/${GLIBC_VER}/glibc-i18n-${GLIBC_VER}.apk > /tmp/glibc-i18n-${GLIBC_VER}.apk \
    && apk add /tmp/glibc-i18n-${GLIBC_VER}.apk \
    && /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true \
    && echo "export LANG=$LANG" > /etc/profile.d/locale.sh \
    && curl -LfsS ${GCC_LIBS_URL} -o /tmp/gcc-libs.tar.xz \
    && echo "${GCC_LIBS_SHA256} */tmp/gcc-libs.tar.xz" | sha256sum -c - \
    && mkdir /tmp/gcc \
    && tar -xf /tmp/gcc-libs.tar.xz -C /tmp/gcc \
    && mv /tmp/gcc/usr/lib/libgcc* /tmp/gcc/usr/lib/libstdc++* /usr/glibc-compat/lib \
    && strip /usr/glibc-compat/lib/libgcc_s.so.* /usr/glibc-compat/lib/libstdc++.so* \
    && curl -LfsS ${ZLIB_URL} -o /tmp/libz.tar.xz \
    && echo "${ZLIB_SHA256} */tmp/libz.tar.xz" | sha256sum -c - \
    && mkdir /tmp/libz \
    && tar -xf /tmp/libz.tar.xz -C /tmp/libz \
    && mv /tmp/libz/usr/lib/libz.so* /usr/glibc-compat/lib \
    && apk del --purge .build-deps glibc-i18n \
    && rm -rf /tmp/*.apk /tmp/gcc /tmp/gcc-libs.tar.xz /tmp/libz /tmp/libz.tar.xz /var/cache/apk/*

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

ENV JAVA_HOME /opt/jdk-12.0.2
ENV PATH $PATH:/opt/jdk-12.0.2/bin

RUN chmod 777 /home/theia
WORKDIR /projects

この Dockerfile を使ってビルド・プッシュする。

docker build -t mikoto2000/remote-plugin-runner-java12:latest .

コンテナレジストリに登録

Docker Hub に push。

docker push mikoto2000/remote-plugin-runner-java12:latest

(mikoto2000/remote-plugin-runner-java12 ではなく mikoto2000/che-remote-plugin-runner-java12 とするべきだったかもしれない...)

自作プラグインを登録した docker-plugin-registry を作成

che-server は、「どんなプラグインがあるか・つかえるか」を、 che-plugin-registry に問い合わせ、 その結果を前述のプラグイン一覧に表示している。

なので、自作プラグインを登録した che-plugin-registry を作成する必要がある。

この章で che-plugin-registry を作っていく。

eclipse/che-plugin-registry をクローン

$CHE_PLUGIN_REGISTRY_SOURCE にクローンしたものとして話を進める。

バージョニングのポリシーががわからないのでとりあえず master で進めてしまう。

git clone https://github.com/eclipse/che-plugin-registry
cd che-plugin-registry
$CHE_PLUGIN_REGISTRY_SOURCE=$(pwd)

$CHE_PLUGIN_REGISTRY_SOURCE/v3/plugins/ にプラグイン情報を追加

v3/plugins/redhat/java11/latest を参考に、 java12 版を作成。

ディレクトリ構成:

$CHE_PLUGIN_REGISTRY_SOURCE/
    +- v3/
        +- plugins/
            +- mikoto2000/
                +- java12/
                    +- latest/
                        +- meta.yaml
  • mikoto2000: publisher
  • latest: version
  • meta.yaml: プラグイン情報を記載したメタデータファイル

meta.yaml:

apiVersion: v2
publisher: mikoto2000
name: java12
version: latest
type: VS Code extension
displayName: Language Support for Java 12
title: Language Support for Java(TM) by mikoto2000
description: Java Linting, Intellisense, formatting, refactoring, Maven/Gradle support
  and more...
icon: https://www.eclipse.org/che/images/logo-eclipseche.svg
repository: https://github.com/redhat-developer/vscode-java
category: Language
firstPublicationDate: "2019-08-02"
spec:
  containers:
  - image: mikoto2000/remote-plugin-runner-java12:latest
    name: vscode-java
    memoryLimit: "1500Mi"
  extensions:
  - https://github.com/microsoft/vscode-java-debug/releases/download/0.19.0/vscode-java-debug-0.19.0.vsix
  - https://download.jboss.org/jbosstools/static/jdt.ls/stable/java-0.46.0-1549.vsix

適当にまねして書き換えただけなので説明省略。

che-plugin-registry のコンテナを作成

cd $CHE_PLUGIN_REGISTRY_SOURCE
docker build -t mikoto2000/che-plugin-registry:latest -f ./build/dockerfiles/Dockerfile --target registry .

コンテナレジストリに登録

docker push mikoto2000/che-plugin-registry:latest

che の設定とデプロイ

che-server が、先ほど作った che-plugin-registry に問い合わせを投げるように設定して、デプロイしなおす。

$CHE_SOURCE/deploy/kubernetes/helm/che/custom-charts/che-plugin-registry/values.yaml を編集

che-plugin-registry/values.yaml の chePluginRegistry で、 先ほど作った mikoto2000/che-plugin-registry を使用するように修正。

before:

chePluginRegistry:
  image: quay.io/eclipse/che-plugin-registry:nightly
  imagePullPolicy: Always
  memoryLimit: 32Mi
  memoryRequests: 16Mi

after:

chePluginRegistry:
  image: mikoto2000/che-plugin-registry:latest
  imagePullPolicy: Always
  memoryLimit: 32Mi
  memoryRequests: 16Mi

che のデプロイ

helm upgrade で更新を認識してくれなかったので削除してインストールしなおししている。 helm の使い方勉強しなきゃ...。

cd $CHE_SOURCE/deploy/kubernetes/helm/che
helm delete --purge che
helm init --service-account tiller --wait --upgrade
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 ./

プラグインが追加されていることを確認

start http://che-che.${CHE_DOMAIN}.nip.io/ で che を開いたら、 Workspaces -> Add Workspace ボタン押下 -> SELECT STACK の Java Gradle を選択 -> 右上の下向き三角形ボタンを押下 -> Create & Proceed Editing -> Plugins タブ選択 -> プラグイン一覧に Language Support for Java 12 が増えているのが確認できる。

以上。

参考資料

更新履歴

日付 更新内容
2019/8/07 新規作成
2020/6/10 docker build のコマンド間違いを修正

2019年8月2日金曜日

Windows で Eclipse Che を動かす

Windows の Docker Desktop(with Kubernetes)に Eclipse Che をデプロイした - mikoto2000 の日記 でとりあえず動くようにした。

今回は、手順を整理して後片付けの方法を追加。

前提

  • 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

現状確認

Docker Desktop の Kubernetes をリセットした直後の状態を確認。

PS C:\Users\mikoto\project> kubectl get pods --all-namespaces
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE
docker        compose-6c67d745f6-c2pvf                 1/1     Running   0          39m
docker        compose-api-57ff65b8c7-pnbwk             1/1     Running   0          39m
kube-system   coredns-fb8b8dccf-vt5p9                  1/1     Running   0          40m
kube-system   coredns-fb8b8dccf-wz7s7                  1/1     Running   0          40m
kube-system   etcd-docker-desktop                      1/1     Running   0          39m
kube-system   kube-apiserver-docker-desktop            1/1     Running   0          39m
kube-system   kube-controller-manager-docker-desktop   1/1     Running   0          40m
kube-system   kube-proxy-lbnfv                         1/1     Running   0          40m
kube-system   kube-scheduler-docker-desktop            1/1     Running   0          40m

うん、こんなもんでしょう。

che の環境構築

che のソースコード取得

clone して checkout。

cd ~/project
git clone https://github.com/eclipse/che.git
cd che
git checkout -b 7.0.0-rc-4.0 refs/tags/7.0.0-rc-4.0
$CHE_SOURCE=$(pwd)

helm のインストール

Chocolatey でインストール。PowerShell を管理者で開いて下記コマンドを実行。

choco install kubernetes-helm

tiller のデプロイ

kubectl apply して helm init。

cd $CHE_SOURCE\deploy\kubernetes\helm\che
kubectl apply -f .\tiller-rbac.yaml
helm init --service-account tiller --wait

pod が増えているのを確認。

PS C:\Users\mikoto\project\che\deploy\kubernetes\helm\che> kubectl get pods --all-namespaces
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE
docker        compose-6c67d745f6-c2pvf                 1/1     Running   0          41m
docker        compose-api-57ff65b8c7-pnbwk             1/1     Running   0          41m
kube-system   coredns-fb8b8dccf-vt5p9                  1/1     Running   0          42m
kube-system   coredns-fb8b8dccf-wz7s7                  1/1     Running   0          42m
kube-system   etcd-docker-desktop                      1/1     Running   0          41m
kube-system   kube-apiserver-docker-desktop            1/1     Running   0          41m
kube-system   kube-controller-manager-docker-desktop   1/1     Running   0          42m
kube-system   kube-proxy-lbnfv                         1/1     Running   0          42m
kube-system   kube-scheduler-docker-desktop            1/1     Running   0          42m
kube-system   tiller-deploy-7f656b499f-7dblh           1/1     Running   0          13s

tiller っぽいのが増えてる。

ingress のデプロイ

ingress をデプロイ。

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

pod の確認。

PS C:\Users\mikoto\project\che\deploy\kubernetes\helm\che> kubectl get pods --all-namespaces
NAMESPACE       NAME                                        READY   STATUS    RESTARTS   AGE
docker          compose-6c67d745f6-c2pvf                    1/1     Running   0          42m
docker          compose-api-57ff65b8c7-pnbwk                1/1     Running   0          42m
ingress-nginx   nginx-ingress-controller-86449c74bb-8tfdn   1/1     Running   0          65s
kube-system     coredns-fb8b8dccf-vt5p9                     1/1     Running   0          43m
kube-system     coredns-fb8b8dccf-wz7s7                     1/1     Running   0          43m
kube-system     etcd-docker-desktop                         1/1     Running   0          42m
kube-system     kube-apiserver-docker-desktop               1/1     Running   0          42m
kube-system     kube-controller-manager-docker-desktop      1/1     Running   0          43m
kube-system     kube-proxy-lbnfv                            1/1     Running   0          43m
kube-system     kube-scheduler-docker-desktop               1/1     Running   0          43m
kube-system     tiller-deploy-7f656b499f-7dblh              1/1     Running   0          86s

NAMESPACE が ingress-nginx のものが二つ増えている。

ingress が提供するサービスの IP アドレスをメモ。

PS C:\Users\mikoto\project\che\deploy\kubernetes\helm\che> kubectl get services --namespace ingress-nginx
NAME            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   LoadBalancer   10.101.143.26   localhost     80:31131/TCP,443:31708/TCP   79s

TYPE が LoadBalancer の CLUSTER-IP をメモする。この場合は 10.101.143.26。 以降は $CHE_DOMAIN にメモした IP を設定したこととして進める。

ループバックアドレスの設定

Powershell を管理者権限で開いて、 netsh コマンドでループバックアドレスを追加する。

netsh interface ipv4 add address Loopback 10.101.143.26

che のデプロイ

cd $CHE_SOURCE\deploy\kubernetes\helm\che
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 ./

pod の確認。

PS C:\Users\mikoto\project\che\deploy\kubernetes\helm\che> kubectl get pods --all-namespaces
NAMESPACE       NAME                                        READY   STATUS    RESTARTS   AGE
che             che-8845cb9c4-rgl4h                         1/1     Running   0          29s
che             devfile-registry-974dd957f-4l9bf            1/1     Running   0          29s
che             plugin-registry-75bfd884cf-6lbc5            1/1     Running   0          29s
docker          compose-6c67d745f6-c2pvf                    1/1     Running   0          48m
docker          compose-api-57ff65b8c7-pnbwk                1/1     Running   0          48m
ingress-nginx   nginx-ingress-controller-86449c74bb-8tfdn   1/1     Running   0          7m18s
kube-system     coredns-fb8b8dccf-vt5p9                     1/1     Running   0          49m
kube-system     coredns-fb8b8dccf-wz7s7                     1/1     Running   0          49m
kube-system     etcd-docker-desktop                         1/1     Running   0          48m
kube-system     kube-apiserver-docker-desktop               1/1     Running   0          48m
kube-system     kube-controller-manager-docker-desktop      1/1     Running   0          49m
kube-system     kube-proxy-lbnfv                            1/1     Running   0          49m
kube-system     kube-scheduler-docker-desktop               1/1     Running   0          49m
kube-system     tiller-deploy-7f656b499f-7dblh              1/1     Running   0          7m39s

NAMESPACE が che のものが 3 つ増えている。

che にアクセス

http://che-che.${CHE_DOMAIN}.nip.io にアクセスすると、 che の画面が開く。

start http://che-che.${CHE_DOMAIN}.nip.io

後片付け

ループバックアドレスの削除

管理者権限で開いた Powershell で以下のコマンドを実行。

netsh interface ipv4 delete address Loopback $CHE_DOMAIN

che の削除

helm delete --purge で削除できる。

cd $CHE_SOURCE\deploy\kubernetes\helm\che
helm delete --purge che

ingress の削除

こちらも kubectl delete で削除。

kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud-generic.yaml
kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

tiller の削除

これで Kubernetes 上の tiller も消えるっぽい。

helm reset --force

helm の削除

choco コマンドで削除。

choco uninstall kubernetes-helm

参考資料