Jump to section

Helm とは

URL をコピー

Kubernetes でのアプリケーション開発は複雑です。どんなアプリケーションであっても、おそらく何百もの構成をインストールし、管理し、更新しなければなりません。 これに対し、Kubernetes のパッケージマネージャーである Helm には、 アプリケーションのクラスタへのデプロイに必要なすべてのコードとリソースが含まれ、アプリの配信を自動化します。

Helm は、Helm チャートと呼ばれるパッケージングフォーマットを使用してアプリケーションの配信を自動化することにより、このプロセスを単純化します。YumRed Hat® Enterprise Linux® の RPM パッケージを管理するのと同じように、helm は Kubernetes の Helm チャートを管理します。チャートは、コンテナ間の一貫性を維持しながら、アプリケーションの特定の要件がどのように満たされているかを判断します。

Kubernetes のパッケージマネージャーである Helm は、個々の構成で何が最も重要かに基づいて、変数のオーバーライドを使用して同じ構成フレームワークを複数のインスタンスに適用できるようにします。 

Helm logo

豆知識Helm は、Cloud Native Computing Foundation (CNCF) から生まれたオープンソース・プロジェクトです。2015 年の第 1 回 KubeCon で初めて紹介され、Kubernetes とともに CNCF に移行しました。

Helm では、アプリケーションの定義からアップグレードまでを、Helm チャートと呼ばれるものに記述します。Helm はチャート (テンプレートのようなもの) を使って Kubernetes クラスタにリソースを渡します。その際、Kubernetes API が使われます。 

Helm は helm と呼ばれる単一のコマンドライン・インタフェース (CLI) ツールを使い、アプリケーションの作成、管理、設定を可能にする複数のシンプルなコマンドとともに、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 CLI をインストールした後、事前定義されたリソースと値を持つ既存のチャートを使用するか、独自のアプリケーションリソースをパッケージ化するためにカスタムチャートを作成するかの 2 つの選択肢があります。

既存チャートを使用する

既存のチャートを使用するには、まず Helm クライアントに Helm リポジトリを追加し、インストール時に値ファイルに具体的な設定パラメーターを設定します。

値ファイルは、Helm チャートを個々の構成に再利用するための鍵となるものです。values.yaml で宣言した変数を代入することができ、Helm はこれらの変数をテンプレートに保持するために .values 構造体を作成します。これにより、後の構成で変数を使用できるようになります。チャートにはいくつでも値ファイルを渡すことができます。Helm はそれらを結合してレンダリングするので、変数ファイルを再利用することができます。

値の構成をコミットまたはプッシュすると、一般的な helm コマンドを通じてアプリケーションのライフサイクルを更新、アップグレード、管理できるようになります。

カスタムチャートを作成する

組織全体または特定のワークロード内で再利用したいアプリケーションをパッケージ化するためには、カスタムチャートを作成する必要があります。このためには、チャートの templates/ ディレクトリでアプリケーションのリソースを定義し、値ファイルで構成パラメータを設定し、Chart.yaml ファイルにメタデータとドキュメントを追加します。

その後、helm package を使用してチャートをパッケージ化し、公開または非公開の Helm リポジトリにアップロードするか、直接配布することができます。

Red Hat の検証済みパターンは、カスタマイズも可能な既存の Helm チャートの有用な例です。検証済みパターンとは、顧客サイトでデプロイされ、テストと保守のための一連の要件を満たした完全なワークロードを記述した Helm チャートです。そのまま使用することも、独自の設定のニーズに合わせて変更することもできます。

全体的な GitOps 戦略の一環として、Helm は複数の環境にアジリティ、セキュリティ、一貫性を提供する強力なツールです。Red Hat Service Interconnect のようなマルチクラウド・コミュニケーション・ツールと組み合わせると、複数のクラウドプロバイダーにまたがる複数のマイクロサービスを使用する複雑なデプロイメントに特に役立ちます。

Kubernetes 開発者にとって、Helm チャートはアプリケーションをスピンアップし、再利用したり他の人と共有したりできるシンプルで迅速かつ簡単な方法です。  

システム管理者やその他の IT 運用担当者にとって、Helm は継続的インテグレーションと継続的開発 (CI/CD) をアプリケーションパイプラインに実装し、最適化するための一貫したツールを提供してくれるものです。Helm は、一貫性とともにアジリティを提供するツールです。

チャートの作成から値の設定、チャートのデプロイまで、すべてのプロセスを試すには、Red Hat® Developer のチュートリアルをご覧ください。

関連資料

記事

DevSecOps とは

DevOps によるアジリティと応答性を存分に利用するのであれば、IT セキュリティはアプリケーションのライフサイクル全体を通じて、重要な役目を果たす必要があります。

記事

CI/CD とは

CI/CD によって、統合およびテストのフェーズからデリバリー、デプロイメントに至る、アプリケーションのライフサイクル全体を通じて、継続的な自動化と継続的な監視が導入されます。

記事

DevOps エンジニアとは

DevOps エンジニアは、組織内でのコラボレーション、イノベーション、文化的変革を可能にする特有のスキルと専門知識を持ち合わせています。  

DevOps の詳細はこちら

製品

Red Hat のエキスパートによる徹底的かつ集中的な研修。アジャイルの方法論とオープンソースツールを使用して、社内業務の課題に対処する方法について学びます。

Red Hat の戦略的アドバイザーが、企業組織の全体像を把握しながら課題を分析し、包括的かつコスト効率に優れたソリューションで課題を解決できるようお手伝いします。

リソース