PR

KubernetesのパッケージマネージャーHelmとは?

2018年3月1日(木)
松下 康之
Microsoftのエンジニアが語るKubernetesのパッケージマネージャー、Helmとは?

KubeConではコンテナオーケストレーションのツールであるKubernetesが大きな注目を集め、そのエコシステムの拡がりを感じることができたが、そのKubernetesのサブプロジェクトとして最近注目されているのがHelmだ。国内のSIベンダーに在籍するKubernetesのコミッターにインタビューを行った時に「もしも次にCNCFにホストされるプロジェクトがあるとすれば、IstioとHelmかも」という呟きを聞いたことをきっかけに、Helmについて調査を始めた。

KubeConでも非常に注目されたマイクロサービスを運用管理するための「サービスメッシュ」と呼ばれる管理ソフトウェアであるIstioは、GoogleやIBM、そしてLyft(軽量なProxyサーバーEnvoyの開発で知られている)が協力して開発しているソフトウェアであり、Ciscoなども事例を紹介するほどに、じわじわと浸透していると筆者は見ていた。一方、Kubernetesをより簡単に操作するためのパッケージマネージャーであるHelmは、まだそれほど注目されていないという認識であった。しかし前述のコメントをきっかけに、過去の海外のカンファレンスのセッションの動画を漁っていた時に出会ったのが、Microsoftが2017年4月に買収したDeisというベンチャーのエンジニア、Michelle Nooralli氏がKubernetesを導入する際のパッケージマネージャーとして紹介したものだ。これはCoreOSが開催したCoreOS Fest 2017でのセッションだ。

Helm in a Handbasket - Michelle Nooralli and Matt Butcher, Microsoft

この動画は、Michelle Nooralli氏とMatt Butcher氏が、デモを交えながら2人でHelmを解説したものだ。まず「KubernetesがクラウドのLinuxになった」というLinux FoundationのJim Zemlinのコメントから発想されたのか、「KubernetesはOSである」という例えから始まる。つまりLinuxが様々なプログラムを実行するための環境としてコンピュータを動かすソフトウェアであるなら、コンテナを基本としたクラウドネイティブな環境においては、KubernetesはOSとして認識されるべきであるというメッセージだ。

(注:GoogleのイベントでLinux Foundationのシニアディレクター、Jim Zemlinが語った「Kubernetes is Linux of Cloud」というコメントを紹介するKubernetesの公式ツイッターアカウント)

「KubernetesはクラウドのOS」という言葉が意味すること

「KubernetesはクラウドのOS」という言葉が意味すること

まずKubernetesがOSであるとすれば、ソフトウェアを導入する際のパッケージマネージャーとしてapt-get、yumやrpm、そしてHomebrewなどと同様のものが必要であると語り、それがKubernetesにおいてはHelmであると紹介した。

Helmを構成するファイル群

Helmを構成するファイル群

そしてHelmを構成するファイルの簡単な紹介から、Helmを使ってリポジトリーにあるRedisを検索するようすにつながり、デモが開始するのである。

ChartリポジトリーにあるRedisを検索

ChartリポジトリーにあるRedisを検索

この辺は、いわゆるストラテジーなどを語るマーケティング畑の人間ではなく、エンジニアらしさが感じられるスタイルと言えるだろう。いきなりRedisのちょっと古いバージョンをインストールして、「$ helm upgrade」コマンドで最新のバージョンにアップグレード、そして削除するところをデモする。要所要所でKubernetesのCLIであるkubectlを叩いてPodの状況を見せつつ、ちゃんとKubernetesのPodが動いているところを見せて、基本的なHelmの動きを確認させるのだ。

そして後半では、Microsoft謹製のオープンソースソフトウェア、Visual Studio Codeを利用して、HelmのパッケージであるChartの書き方をVS CodeのプラグインであるHelm Chart Pluginを使って、シンタックスのエラーを確認しながらChartを作成するデモを行う。Chartとは、Helmにおいてはパッケージに相当するもので、Chartはそのパッケージを表現するyamlファイルとKubernetesを構成するために必要なmanifest等で構成される。そのような複数のファイル構成と記述を、VS Codeがアシストすることで生産性を上げることができる。

VS Codeを使ってChartを作成

VS Codeを使ってChartを作成

そしてさらに、実験的なソフトウェアであることを断りながら紹介したのは、Draftと呼ばれるソフトウェアである。これはVS Codeの中からも実行できるが、単体としても実行可能なソフトウェアで、MicrosoftのAzureのエンジニアが開発を行っているようだ。開発のサイクルの中でDockerやKubernetesのセットアップを行わずに「$ draft create」や「$ draft up」というコマンドだけで、コンテナ化、KubernetesのPod作成、Deployまでを自動化するツールのようだ。

より詳しくは、以下の公式サイトを参照されたい。

DRAFT

VS CodeのChartプラグインに話を戻すと、コードを書く上で変数などが代入された結果をレンダリングできる機能も紹介された。ある変数を大文字<->小文字に変換できるところをデモで見せたButcher氏が、思わず会場から拍手が起こったことに「大文字と小文字を変換するだけで拍手が起きるとは思わなかった。ありがとう!」とコメントする一幕もあり、参加者が集中している様子が見て取れる。

レンダリングされた結果を確認できる

レンダリングされた結果を確認できる

後半は主にVS Codeからのデモとなったが、Helmを使ってkubectlを使わなくても他のエンジニアが作ったChartを再利用することで、汎用性の高いソフトウェアの実装が可能になる効果は充分に理解できるデモであった。また別のデモでは、「$ helm rollback」コマンドでバージョンを元に戻す機能を見せていたように、Helmを使って開発のワークフローが抽象化され、より開発そのものに注力できると言うのが、このセッションでのメッセージだろう。

例えとして箒、掃除機、そして掃除ロボット

例えとして箒、掃除機、そして掃除ロボット

Nooralli氏はHelmを、人工知能を持った自走式掃除ロボットであるRoombaに例えて、面倒なことを省いて開発プロセスを実行できる点を強調していた。つまり従来の「コードを書いてビルドしてステージングに入れて、テストをしてOKなら本番環境へ」という手順を非常に原始的なやり方の例えとして箒に、コンテナとKubernetesによるオーケストレーションを掃除機に、そしてHelmによる自動化をRoombaに例えて、開発者はアプリケーション実行のため必要なモジュールに気を使わずにもっと開発をするべきだし、インフラエンジニアもこのスタイルを受け入れるべきだというのが最終的なメッセージだ。

Kubernetesはまだ難しい

Kubernetesはまだ難しい

なお、Kubernetesを使いこなしているMicrosoftのエンジニアでさえ、Kubernetesは難しいという認識であるところから、Helmがスタートしているということは、覚えておいて損はないだろう。

最後に、より現実的なユースケースとして、PHPでアプリケーションを書いてそれをHelmでコンテナ化、Kubernetesを使ってオーケストレーション、そして実行というデモを行なった。

15分でブログサイトを立ち上げるデモ。

15分でブログサイトを立ち上げるデモ。

ここでも、常に開発者の目線でこのツールを評価していることがわかる。

Helmは、KubernetesのSIG(Special Interest Group)であるSIG-Appsの中で開発が進んでいるという。そういう意味ではKubernetes純正のパッケージマネージャーという位置付けだ。Kubernetesに興味のあるエンジニアは、ぜひ、この最新のツールを試してみることをお勧めする。

kubernetes/helm: The Kubernetes Package Manager

また以下のサイトでは、すでに公開されているChartを検索できる。ここでも、Kubernetes/Helmのコミュニティの拡大を感じることができるだろう。

Kubeapps Hub

フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

クラウドイベント

LinuxCon+ContainerCon+CloudOpen China開催。中国企業の存在感が大きかった初日

2018/7/18
LinuxCon+ContainerCon+CloudOpen China 2018が北京で開催。中国語セッションも数多く用意され、中国のためのカンファレンスとなった。
ITインフライベント

GitHub Satellite都内で開催。MSによる買収発表後もブレない姿勢を見せる

2018/7/6
GitHubが都内で2日間のカンファレンスを開催。マイクロソフトによる買収発表後の動きが注目されたが、ブレない姿勢が逆に印象的だった。

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています