Helmを学ぶ
以下の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
クイックスタート
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 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
投稿日 2020年11月14日