TechLunch

The free lunch is over.

Kubernetesのパッケージマネージャ: Helmを試してみよう

数ヶ月前にCNCFのIncubation-leveのプロジェクトとなったKubernetesのパッケージマネージャHelmに関する記事が、CNCFブログにポストされましたので、これを参考にしつつ試してみました。

Helmとは

HelmはKubernets上にアプリケーションコンテナをPodとしてデプロイすることを容易にすることを目的としています。KubernetesLinuxなどのオペレーティングシステムと位置付けた時に、Helmはyumやaptといったパッケージ管理システムの役割を果たします。

KubernetesではPodをデプロイする際にManifestを定義しますが、HelmではChartsと呼ばれるアプリケーション定義を記述するそうです。物は試しということでHelmを利用してPodをデプロイしてみようと思います。

前提

Helmを試すには、自由に利用可能なKubernetesクラスタが必要です。minikubeを利用するのがもっとも簡単ですので、環境がない方はインストールしてみてください。 techlunch.hatenablog.com

インストール

インストールはとても簡単で以下のコマンドを実行するだけです。

$ curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
$ helm init

WordPressを動かしてみる

Chartsとして提供されてるアプリケーションを探すには次のコマンドを打ちます。

$ helm search
NAME                                    CHART VERSION   APP VERSION                     DESCRIPTION                                       
stable/acs-engine-autoscaler            2.2.0           2.1.1                           Scales worker nodes within agent pools
...
stable/wordpress                        2.1.8           4.9.8                           Web publishing platform for building blogs and ...

今回は、WordPressをサンプルとしてインストールします。

$ helm repo update

これで完了です。WordPressとバックエンドのMariaDBの2つのPodが動作してることが確認できます。

$ kubectl get pods
NAME                                           READY     STATUS    RESTARTS   AGE
intended-aardwolf-mariadb-0                    1/1       Running   0          1m
intended-aardwolf-wordpress-646bd6955b-vj4px   1/1       Running     1          1m

HelmコマンドでもChartがインストールされていることを確認できます。

$ helm list
NAME                REVISION    UPDATED                     STATUS      CHART           NAMESPACE
intended-aardwolf   1           Sun Aug 12 15:08:58 2018    DEPLOYED    wordpress-2.1.8 default  

Kubernetesの導入の敷居の高さにはさまざまな理由があるのですが、一つはKubernetesマニフェストを書くことだと思っています。 Helmを利用することで、よく利用するアプリケーションが簡単にKubernetes上にデプロイできるようになるので、ますますKubernetesユーザは増えるかもしれません。

Helmについては、今後もしばらく動向をウォッチしていきたいと思います。