概要
Kubernetes でのアプリケーション開発は複雑です。どんなアプリケーションであっても、おそらく何百もの構成をインストールし、管理し、更新しなければなりません。 これに対し、Kubernetes のパッケージマネージャーである Helm には、 アプリケーションのクラスタへのデプロイに必要なすべてのコードとリソースが含まれ、アプリの配信を自動化します。
Helm は、Helm チャートと呼ばれるパッケージングフォーマットを使用してアプリケーションの配信を自動化することにより、このプロセスを単純化します。Yum
が Red Hat® Enterprise Linux® の RPM パッケージを管理するのと同じように、helm
は Kubernetes の Helm チャートを管理します。チャートは、コンテナ間の一貫性を維持しながら、アプリケーションの特定の要件がどのように満たされているかを判断します。
Kubernetes のパッケージマネージャーである Helm は、個々の構成で何が最も重要かに基づいて、変数のオーバーライドを使用して同じ構成フレームワークを複数のインスタンスに適用できるようにします。
豆知識:Helm は、Cloud Native Computing Foundation (CNCF) から生まれたオープンソース・プロジェクトです。2015 年の第 1 回 KubeCon で初めて紹介され、Kubernetes とともに CNCF に移行しました。
Helm の仕組み
Helm では、アプリケーションの定義からアップグレードまでを、Helm チャートと呼ばれるものに記述します。Helm はチャート (テンプレートのようなもの) を使って Kubernetes クラスタにリソースを渡します。その際、Kubernetes API が使われます。
Helm は helm
と呼ばれる単一のコマンドライン・インタフェース (CLI) ツールを使い、アプリケーションの作成、管理、設定を可能にする複数のシンプルなコマンドとともに、Helm チャートを管理します。
Red Hat のリソース
Helm チャートとは
Helm チャートとは、Kubernetes クラスタのリソースを記述し、アプリケーションとしてパッケージ化したファイルの集まりです。Helm チャートは 3 つの基本的なコンポーネントで構成されています。
- チャート:
Chart.yaml
は、名前、バージョン、依存関係など、アプリケーションのメタデータを定義します。 - 値:
values.yaml
は値を設定します。これを使用して、チャートを再利用するための変数の置換を設定します。- また、値ファイルの構造を記述した values JSON スキーマがあると、動的なフォームの作成や値パラメーターの検証に役立ちます。
- テンプレート・ディレクトリ:
templates/
にはテンプレートが格納され、values.yaml ファイルで設定された値と組み合わせてマニフェストを作成します。 - チャートディレクトリ:
charts/
には、Chart.yaml
で定義し、helm dependency build
またはhelm dependency update
で再構築したチャートの依存関係が格納されます。
Helm チャートをインストールするたびに、リリースと呼ばれるインスタンスも作成されます。Helm チャートは新しいリリースごとに維持され、以前のバージョンのチャートを使って簡単に好みの設定にロールバックすることができます。
Helm チャートが実際に使用されている様子を見るには、Red Hat OpenShift® での Helm の使用について説明した「Ask a Product Manager Office Hours」のエピソードをご覧ください。
Helm チャートの使い方
Helm CLI をインストールした後、事前定義されたリソースと値を持つ既存のチャートを使用するか、独自のアプリケーションリソースをパッケージ化するためにカスタムチャートを作成するかの 2 つの選択肢があります。
既存チャートを使用する
既存のチャートを使用するには、まず Helm クライアントに Helm リポジトリを追加し、インストール時に値ファイルに具体的な設定パラメーターを設定します。
値ファイルは、Helm チャートを個々の構成に再利用するための鍵となるものです。values.yaml
で宣言した変数を代入することができ、Helm はこれらの変数をテンプレートに保持するために .values
構造体を作成します。これにより、後の構成で変数を使用できるようになります。チャートにはいくつでも値ファイルを渡すことができます。Helm はそれらを結合してレンダリングするので、変数ファイルを再利用することができます。
値の構成をコミットまたはプッシュすると、一般的な helm
コマンドを通じてアプリケーションのライフサイクルを更新、アップグレード、管理できるようになります。
カスタムチャートを作成する
組織全体または特定のワークロード内で再利用したいアプリケーションをパッケージ化するためには、カスタムチャートを作成する必要があります。このためには、チャートの templates/
ディレクトリでアプリケーションのリソースを定義し、値ファイルで構成パラメータを設定し、Chart.yaml
ファイルにメタデータとドキュメントを追加します。
その後、helm package
を使用してチャートをパッケージ化し、公開または非公開の Helm リポジトリにアップロードするか、直接配布することができます。
Red Hat の検証済みパターンは、カスタマイズも可能な既存の Helm チャートの有用な例です。検証済みパターンとは、顧客サイトでデプロイされ、テストと保守のための一連の要件を満たした完全なワークロードを記述した Helm チャートです。そのまま使用することも、独自の設定のニーズに合わせて変更することもできます。
Helm を使うべき理由
全体的な GitOps 戦略の一環として、Helm は複数の環境にアジリティ、セキュリティ、一貫性を提供する強力なツールです。Red Hat Service Interconnect のようなマルチクラウド・コミュニケーション・ツールと組み合わせると、複数のクラウドプロバイダーにまたがる複数のマイクロサービスを使用する複雑なデプロイメントに特に役立ちます。
Kubernetes 開発者にとって、Helm チャートはアプリケーションをスピンアップし、再利用したり他の人と共有したりできるシンプルで迅速かつ簡単な方法です。
システム管理者やその他の IT 運用担当者にとって、Helm は継続的インテグレーションと継続的開発 (CI/CD) をアプリケーションパイプラインに実装し、最適化するための一貫したツールを提供してくれるものです。Helm は、一貫性とともにアジリティを提供するツールです。
チャートの作成から値の設定、チャートのデプロイまで、すべてのプロセスを試すには、Red Hat® Developer のチュートリアルをご覧ください。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。