LoginSignup
1
1

More than 3 years have passed since last update.

Rasberry Piクラスターに helm を導入してみた

Last updated at Posted at 2020-08-25

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 も実行してみたいが今日はここまで。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1