summary:
Kubernetesでは,アプリケーションを動かすために複数のYAMLマニフェスト[Deployment, Service, ConfigMap等]が必要となる.Helmはそれらをチャート[Chart]と呼ばれるパッケージフォーマットを使用することによって1つにまとめて管理する.チャートには,Kubernetesリソース定義やテンプレート,設定値などが含まれる.
また,バージョン管理とロールバック機能を提供することによって,アプリケーションの更新と以前のバージョンへの戻しを容易にする.
さらに,テンプレート化により,同じアプリケーションを異なる環境[開発・テスト・本番等]に異なる設定でデプロイすることが可能.加えて,依存関係の管理機能を持ち,複数のチャート間の関係を定義・管理できる.
Helmはダイス[Deis, Inc.,旧OpDemand, Inc.]によって,KubeCon 2015において最初のバージョンが発表.この時,Helm v1はシンプルなCLIツールでしかなかった.ダイスは,この年にEngine Yardにより買収.
2016年のHelm v2では,HelmがKubernetesクラスタにアプリケーションをデプロイする仕組みの中核を担うTillerが導入される.Helm CLIは,直接Kubernetes APIを操作せず,Tillerというコンポーネントを経由してリソースを作成・管理を行うという構造になっていたのである.なお,こHelm v2は,CNCF[Cloud Native Computing Foundation]のKubernetes Special Interest Group[SIG] Appsのプロジェクトとなっている.
TillerはKubernetesクラスタ内にデプロイされ,Helmの操作を全て受け付けるため,適切なアクセス制御をしないと権限のないユーザーでもリソースを変更できてしまうという問題点があった.このために,RBAC[Role-Based Access Control]との統合が困難であった.すなわち,Tillerがクラスタ全体に対して強い権限を持ってしまうことが課題であった.
2019年に発表されたHelm v3では,Tillerが削除され,Helm CLIが直接Kubernetes APIとやりとりする設計へと変更.これにより,Helm CLIを実行するユーザーに適切なRBACルールを適用するだけで済むようになり,クラスタ全体を操作できるTillerのような単一障害点[SPOF]が無くなる.また,Tillerのような中間レイヤーを管理する必要も無くなった.このHelm v3はCNCFの正式プロジェクトになった.
開発を率いたEngine Yardのダイスのプロジェクトは,2017年にマイクロソフトにより買収.その技術はAzure Kubernetes Service[AKS]へと統合された.
Mathematics is the language with which God has written the universe.