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

Microsoftのエンジニアが語るKubernetesのパッケージマネージャー、Helmとは?

松下 康之 - Yasuyuki Matsushita

2018年3月1日 6:00

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

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30