Helm とは
Helm を一言でいうと、Kubernates の YAML地獄(YAMLの壁と言ったりもする)を回避するための運用管理支援のツールです。
Kubernates は、コンテナをグループ化したPod や マイクロサービス間のネーミングを解決するための Service で構成されますが、この Pod や Service を管理するために、大量の YAML ファイルを作成することが必要になります。
アプリケーションがマイクロサービス化され、ビジネス機能を実現する単位で細分化されると、管理する YAMLの数も必然多くなります。
また、この YAML は提供するサービスの種類によって、一定の記述のパターンやベスト・プラクティスがあり、毎回新規にクラウドエンジニアが作成するものでもありません。
Helm には Chart と呼ばれる Pod や ServiceのYAMLファイルのひな形のを固めて圧縮したものがあり、特定のコンテナ(Nginx、MySql、WordPress…)ごとの Chart を用意することで、YAML ファイルの管理の手間を削減することができています。
Rasberry Piクラスターに、Helmを導入して、YAML地獄から解放されるか確認しましょう。
Helm の導入
いつもの通りに、単純な apt では導入できなかったので、Helm の公式サイト (https://helm.sh/docs/intro/install/)のFrom Snap記述されている、Snapから実行します。
$ sudo apt update
$ sudo apt install snapd
$ sudo reboot
$ sudo snap install helm --classic
バージョンを確認する。
$ helm version
version.BuildInfo{Version:"v3.3.0", GitCommit:"8a4aeec08d67a7b84472007529e8097ec3742105", GitTreeState:"dirty", GoVersion:"go1.14.7"}
Helm の簡単なコマンド
Helm を利用して、Pod を実行するためには、Chart のリポジトリを追加して、 その後でChart名を指定して起動することになります。 基本的なコマンドはこちら。
機能 | コマンド | 補足 |
---|---|---|
Hubの検索 | helm search hub [chart-name] | |
リポジトリ追加 | helm add [repo-name] URL | |
リポジトリ参照 | helm repo list | |
Chart導入 | helm install [release-name] [chart-name] | |
Chartsa削除 | helm uninstall [release-name] |
Helm によるPodの実行
HelmによるPod実行がいかに簡単になるかを示すために、ingress-nginx を導入してみます。 Chart の検索できる Helm Hub(https://hub.helm.sh/)で ingress-nginx が見つかります。
そこに記述された手順にしたがって、Chart を導入するためにHelm Chartのレポジトリを追加して、最新化します。
$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
$ helm repo update
helm install [リリース名] [Chart名] でPodを作成します。
helm install sample-nginx ingress-nginx/ingress-nginx
しばらくすると、Podが起動します。 おー、地獄からの解放じゃ!!!
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
sample-nginx-ingress-nginx-controller-6ffc55ddfc-gjn9x 1/1 Running 0 110s
さて、Service も確認すると
$ kubectl describe services sample-nginx-ingress-nginx-controller
Name: sample-nginx-ingress-nginx-controller
Namespace: default
:
Type: LoadBalancer
IP: 10.98.218.246
Port: http 80/TCP
curl 10.98.218.246 をすると、nginxがレスポンス(404ですが…)を返していることが確認できます。 もう少し、複雑な Chart も実行してみたいが今日はここまで。