Helmは、Kubernetes向けのOSパッケージマネージャーに相当する存在です。KubernetesではHelmをパッケージマネージャーとして使い、CentOSやUbuntuではそれぞれaptやyumを利用しています。
あらかじめ設定されたアプリをKubernetesに転送し、チャートを使って整理します。チャートには利用可能なすべてのバージョンを含め、必要なアプリの要素が一か所にまとまっているため、すぐに活用できます。
インストールやアップグレード、依存関係の取得、デプロイ設定など、Kubernetesでよく行われる作業をCLIコマンドで簡単に実行できます。自社独自のソフトウェアパッケージを作成することも、レポジトリから既存のものを利用することも可能です。
HelmのチャートをKubernetes環境で直接実行できるため、デプロイが簡単になります。チャートレポジトリにはすべての既存チャートが格納されており、特定のアプリに必要なチャートも、レポジトリのレジストリを検索すればすぐに見つかります。
たとえばWordPressアプリをKubernetesにデプロイする際、アプリやデータベースのデプロイとサービス用に個別のYAMLマニフェストファイルを作成する必要があるため、手間がかかります。しかしHelmを使えば、短時間でKubernetesクラスター上にWordPressを起動できます。
マニフェストファイルを使って50個ものマイクロサービスをデプロイしようとすると、時間がかかるうえ、ミスが発生しやすくなります。
でも、必要なチャートの名前さえ把握しておけば、驚くほど速いスピードでデプロイできます。
アプリをデプロイまたは更新するとき、Helmはクラスター情報とチャートのデフォルト設定、そして利用者が指定したデータを組み合わせて処理します。自作のチャートや、入手したチャート、あるいは既に公開されているレポジトリのチャートを利用できます。Go言語に慣れている場合は、Helmのチャートの構造も容易に理解できるでしょう。
Helm Kubernetesでは、すべての設定情報やリリースのインストールデータが、クライアント側の設定またはクラスター内に保持されます。以前のHelmではTillerが必須で、クラスターにインストールする必要がありましたが、今はその必要がなくなり、より簡単に導入できます。
Helmが重視しているのが、チャートと呼ばれる構造です。Helmチャートはコンピュータベースで、慣習に基づいて整理されているため、チャートソースに簡単に保管できます。Kubernetesクラスターに対してチャートを追加したり削除したりすることも容易です。
絵を額に収めるように、動作中のチャートインスタンスは「リリース」と呼ばれます。最終的に、これは計画された定義をKubernetesの実行形態に変換する単なる実行可能なパターンです。
チャートを作成するときは、セマンティックバージョニングに従ったバージョン番号を付与する必要があります。パッケージ間の依存関係を参照できることは、あらゆるセット管理において重要で、Helmチャートも例外ではありません。
さらに高度な機能として、リリースのライフサイクルに合わせて処理を行うChart Hooksや、チャートに対してコマンドやテストを実行できるダイアグラムテストなどがあります。Helmチャートはファイル構造のように整理されているため、その内容を学習目的で簡単に確認できます。
Helmを使用する際、開発者はレポジトリ内でチャートを探します。見つけたチャートをクラスターに適用すると、リリースが作成されます。Helmチャートの基本的な概念は以下のとおりです:
Helmチャートを作成する際、特に以下の4つの構成要素に注目してください:
Helmは複雑なアーキテクチャのデプロイを自動化できるため、開発者やDevOpsチームから高く評価されています。このツールを使うことで、より付加価値の高い作業に集中できます。操作が非常にわかりやすいため、特別な知識やスキルがなくても使用できます。UIがシンプルなので、クラスタのデプロイ管理も簡単です。
安全性が高いため、クラスターには信頼できるパッケージのみをインストールするように保証できます。
柔軟性とカスタマイズ性が高いため、多様なパッケージをKubernetes上で簡単にセットアップできます。
豊富なパッケージのエコシステムがあるため、必要なパッケージをいつでも見つけられます。
Helmはオープンソースのため、大規模な開発コミュニティによるサポートがあります。困ったときには、多くの情報やアドバイスが得られます。
ボタンをクリックするだけ、またはコマンドラインからの実行でKubernetesリソースを準備できます。さらに、チャートを他のチャートの依存関係として組み込むことで、複雑なデプロイも実現します。
複数のデプロイでバージョンを管理するのは大変ですが、Helmが自動で対応します。すべてのリリースバージョンはツールのデータベースに保存されるため、問題が起きた場合でも簡単に元のバージョンに戻せます。
Helmを導入したい場合、v1/v2、そして最新のv3など、いくつかのバージョンがあります。いずれも貴社の要件に合わせて調整可能です。K8SクラスターにHelmをインストールしてセットアップする流れは比較的手軽です。Getting Startedページで、Helmのダウンロードやインストール手順を確認できます。
GitHubで公開されているstableリポジトリからサンプルチャートをインストールすれば、Helmチャートをすぐに使い始めることができます。Helmのstableリポジトリには、クラスターでデプロイ可能なアプリが多数揃っています。
stableリポジトリに各種チャートが揃っているほか、Helm利用者が自分でチャートを作成することもできます:
Helm createコマンドを使えば、最初のHelmチャートを簡単に作成できます:
$ helm create mychart
Creating mychart
mychart
このコマンドを実行すると、先述のファイルやディレクトリを含むフォルダが生成され、チャートを作成する際の基本的な構成を得られます。
先に述べたとおり、templatesフォルダにはHelmパッケージのマニフェストが含まれています。これらには、YAMLファイルから自動的に反映される設定や、作成者が独自に調整した内容が記載されます。
最新情報を購読