Helmの概要
Helm(ヘルム)は、Kubernetesクラスタのためのパッケージマネージャで、Kubernetes向けパッケージマネージャとして現在最も人気のある製品となっています。
HelmはDeis社(2017年にマイクロソフト社が買収)のプロジェクトの一つで、2015年に開催された最初の KubeCon(The Kubernetes Community Conference) において Helm Classic として発表されました。Helmプロジェクトは2016年1月にKubernetesプロジェクトと統合され、Kubernetesのサブプロジェクトとなりました。そして、2016年後半にHelm 2.0、2018年6月にHelm 3.0がリリースされ、本格的な CNCF(Cloud Native Computing Foundation)プロジェクトに昇格しています。
Helmの主な特徴
HelmはGo言語で記述されており、Helmクライアント、Helmライブラリの2つのコンポーネントで構成されます。
HelmはHelmクライアントを介して、Kubernetes上で動作するアプリケーションをLinuxのyumコマンドのようにインストール(デプロイ)、アンインストールすることが出来ます。アプリケーションの管理は、チャート(Chart)と呼ばれるパッケージ化された設定ファイルを使用して行います。チャートにはアプリケーションそのものは含まれておらず、アプリケーションの構築に必要な情報が記載されています。なお、Artifact Hub というサイトには各種のチャートが公開されており、使用することが可能です。
Helmライブラリは、Kubernetes クライアントライブラリを使用してKubernetesと通信します。通信にはREST + JSONが使用されます。独自のデータベースは不要で、Kubernetesのシークレットにデータを保持します。
Helm の基本的な概念として以下が挙げられます。
- チャート:アプリケーションのインスタンスを作成するために必要な設定ファイル群です。
- コンフィグ:チャートインストール時にアプリケーションのための各種パラメータを設定するためのものです。
- リリース:チャートがインストールされ、アプリケーション(リリースオブジェクト)が実行可能な状態になったインスタンスをリリースと呼びます。
Helmは以下のことが出来ます。
- チャートの新規作成
- チャートをチャートアーカイブ(tgz)にパッケージ化する
- チャートが保存されているチャートリポジトリを操作する
- Kubernetes クラスタにチャートをインストール、アンインストールする
- Helmでインストールしたチャートのリリースサイクルを管理する
Helmクライアント
エンドユーザー向けのコマンドラインプログラムで以下を担当します。
- ローカルチャートの開発
- リポジトリの管理
- リリースの管理
- Helmライブラリと連携し、チャートを送信したり、リリースのアップグレードやアンインストールの要求を行います。
Helmライブラリ
全てのHelmの操作を Kubernetes API と連携して実行します。
- チャートからリリースオブジェクトを作成する
- リリースオブジェクトを構築し、Kubernetesにインストールする
- リリースオブジェクトのアップグレードやアンインストールを行う
Helmと同様のツール
Helmと同様のツールにはKsonnet、Kapitan、Kustomize、kompose、Ansibleがあります。
Helmコマンドの例
helm install | チャートをインストールします。 |
helm list | リリースの一覧を表示します。 |
helm pull | チャートをダウンロードしローカルに展開します。 |
helm repo add | チャートリポジトリを追加します。 |
helm repo list | チャートリポジトリ一覧を表示します。 |
helm search | チャートを検索します。 |
helm show | チャートの詳細を表示します。 |
helm uninstall | リリースを削除します。 |
helm upgrade | 新しいチャートにアップグレードします。 |
Helmの動作環境
helm は各OS向きのバイナリが用意されており、ダウンロードしてインストールすることができます。V3.7.1では下記のパッケージが用意されています。
- MacOS amd64
- MacOS arm64
- Linux amd64
- Linux arm
- Linux arm64
- Linux i386
- Linux ppc64le
- Linux s390x
- Windows amd64
https://helm.sh/docs/intro/install/
Helmのライセンス
Helmのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
Helmの参考情報
Helm公式サイト
GitHubリポジトリー
Artifact Hub
Helmのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。