Helmを学ぶ

Kubernetes Logo

以下のKubernetesのチュートリアル(例: PHP / Redisを使用したゲストブックの例にロギングとメトリクスを追加する | Kubernetes)を進めていた。

チュートリアル内でElasticsearchとKibanaがいると言われ、急遽 Helmを勉強することにした。Helmを使うことができれば、elastic/helm-chartsで簡単に準備できると考えたからだ。

いつかHelmも勉強したいと思っていたし、ちょうどいいタイミングだったと思う。

Helmとは

公式サイト Helm

日本語のドキュメントもある。Helm | Docs

helmを使ってKubernetesを楽にする - Qiitaを読んで雰囲気をつかむ。

  • v2, v3 で違いがあるみたい。公式サイトで最新の情報を確認する必要がある。
  • yaml地獄が辛い
  • yamlを自動生成してくれて、kubernetesにデプロイしてくれる
  • MacのHomeBrewみたいなパッケージマネージャみたいな感じ

ということかな。

公式サイトで入門

環境

環境は以下のもの。minikubeを利用して進めることにした。

$ helm version
version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"dirty", GoVersion:"go1.15.4"}

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T18:52:19Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40", GitTreeState:"clean", BuildDate:"2020-05-20T12:43:34Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}

$ minikube version
minikube version: v1.14.2
commit: 2c82918e2347188e21c4e44c8056fc80408bce10

$ kubectl config get-contexts
CURRENT   NAME       CLUSTER    AUTHINFO   NAMESPACE
*         minikube   minikube   minikube

クイックスタート

Helm | クイックスタートガイド

brew install helm
helm repo add stable https://charts.helm.sh/stable
helm repo list
helm repo update
helm search repo mysql
helm install stable/mysql --generate-name
helm ls
helm uninstall mysql-1605339234
helm status mysql-1605339234

Helmの使い方

Helm | Helm の使い方

helm search hub wordpress
helm install happy-panda stable/mariadb
helm status happy-panda

# maria dbのrootパスワードを取得
$(kubectl get secret --namespace default happy-panda-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 --decode)

# mariadb client
kubectl run happy-panda-mariadb-client --rm --tty -i --restart='Never' --image  docker.io/bitnami/mariadb:10.3.22-debian-10-r27 --namespace default --command -- bash

# mysqlに接続
mysql -h happy-panda-mariadb.default.svc.cluster.local -uroot -p my_database

# アンインストール
helm uninstall happy-panda

新しい設定で更新する

helm install happy-panda stable/mariadb
helm get values happy-panda
cat panda.yaml
  mariadbUser: user1
helm upgrade -f panda.yaml happy-panda stable/mariadb
helm get values happy-panda

# リリース履歴を見る
helm history happy-panda

# ロールバックする
helm rollback happy-panda 1

WordPressをインストール

せっかくなので、WordPressを動かしてみる。DBともう一つ何かを動かしてみたいと思った。思った以上にあっさり動いた。いいね!

helm install wordpress stable/wordpress

## WordPressをブラウザで表示
minikube service wordpress

# パスワードを取得
kubectl get secret --namespace default wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode

# URL/adminにアクセス。user, パスワードでログインできる。

# アンインストール
helm uninstall wordpress