San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
DevSecOps

Helmとは?

アジャイル化やデジタル変革を進める企業の多くは、モノリシックなアプリの代替としてコンテナを評価しています。コンテナを使うと、大規模導入が容易になり、クラウドを前提としたアプリやサービスを展開しやすくなります。また、CI/CDを自動化して、自動的にスケールし、フェイルオーバーを備えた状態で、ほぼfive-9s(99.999%)の稼働を実現します。

コンテナ、とりわけKubernetesの導入と運用は難しいです。開発者はまず、コンテナのデプロイや管理を担うサービスを構築し、その後、慎重に複雑なマニフェストを記述しなければなりません。

しかし、コンテナ化されたアプリやサービスのデプロイを簡単かつ高速化できるツールがあります。それがHelmです。

Helmとは?

Helmは、Kubernetes向けのOSパッケージマネージャーに相当する存在です。KubernetesではHelmをパッケージマネージャーとして使い、CentOSやUbuntuではそれぞれaptやyumを利用しています。

あらかじめ設定されたアプリをKubernetesに転送し、チャートを使って整理します。チャートには利用可能なすべてのバージョンを含め、必要なアプリの要素が一か所にまとまっているため、すぐに活用できます。

インストールやアップグレード、依存関係の取得、デプロイ設定など、Kubernetesでよく行われる作業をCLIコマンドで簡単に実行できます。自社独自のソフトウェアパッケージを作成することも、レポジトリから既存のものを利用することも可能です。

なぜHelmが必要で、なぜ重要なのか?

HelmのチャートをKubernetes環境で直接実行できるため、デプロイが簡単になります。チャートレポジトリにはすべての既存チャートが格納されており、特定のアプリに必要なチャートも、レポジトリのレジストリを検索すればすぐに見つかります。

たとえばWordPressアプリをKubernetesにデプロイする際、アプリやデータベースのデプロイとサービス用に個別のYAMLマニフェストファイルを作成する必要があるため、手間がかかります。しかしHelmを使えば、短時間でKubernetesクラスター上にWordPressを起動できます。

マニフェストファイルを使って50個ものマイクロサービスをデプロイしようとすると、時間がかかるうえ、ミスが発生しやすくなります。

でも、必要なチャートの名前さえ把握しておけば、驚くほど速いスピードでデプロイできます。

Helmはどのように動作する?

アプリをデプロイまたは更新するとき、Helmはクラスター情報とチャートのデフォルト設定、そして利用者が指定したデータを組み合わせて処理します。自作のチャートや、入手したチャート、あるいは既に公開されているレポジトリのチャートを利用できます。Go言語に慣れている場合は、Helmのチャートの構造も容易に理解できるでしょう。

Helm Kubernetesでは、すべての設定情報やリリースのインストールデータが、クライアント側の設定またはクラスター内に保持されます。以前のHelmではTillerが必須で、クラスターにインストールする必要がありましたが、今はその必要がなくなり、より簡単に導入できます。

Helmチャートとは?

Helmが重視しているのが、チャートと呼ばれる構造です。Helmチャートはコンピュータベースで、慣習に基づいて整理されているため、チャートソースに簡単に保管できます。Kubernetesクラスターに対してチャートを追加したり削除したりすることも容易です。 

絵を額に収めるように、動作中のチャートインスタンスは「リリース」と呼ばれます。最終的に、これは計画された定義をKubernetesの実行形態に変換する単なる実行可能なパターンです。

チャートを作成するときは、セマンティックバージョニングに従ったバージョン番号を付与する必要があります。パッケージ間の依存関係を参照できることは、あらゆるセット管理において重要で、Helmチャートも例外ではありません。 

さらに高度な機能として、リリースのライフサイクルに合わせて処理を行うChart Hooksや、チャートに対してコマンドやテストを実行できるダイアグラムテストなどがあります。Helmチャートはファイル構造のように整理されているため、その内容を学習目的で簡単に確認できます。 

Helmチャートはどう動く?

Helmを使用する際、開発者はレポジトリ内でチャートを探します。見つけたチャートをクラスターに適用すると、リリースが作成されます。Helmチャートの基本的な概念は以下のとおりです:

  • Chart: あらかじめ設定されたKubernetesリソースのテンプレート
  • Release: 用意したプランを実際に適用した状態
  • Archive: チャートを保管するアーカイブは、公開または非公開のオンラインデータベースとして利用可能

Helmチャートの構成

Helmチャートを作成する際、特に以下の4つの構成要素に注目してください:

  • A Chart.yaml: 種類や名前、検索用キーワードなどのメタデータを格納するファイル
  • A Values.yaml: チャートのデフォルト設定をまとめるファイル
  • Charts Directory: メインのチャートが依存する他のチャートを配置するディレクトリ。1つのチャートが複数のチャートに依存する場合があるため、ここには複数のチャートが入ることがあります。
  • Templates: チャートがデプロイするマニフェストを格納するフォルダ。アプリのデプロイにサービスやコンフィグマップ、シークレットなどが必要な場合、deployment.yamlやservice.yaml、configuration.yaml、secrets.yamlのように複数のファイルを配置し、それぞれの値はvalues.yamlから読み取られます。

Helmの利点

Helmは複雑なアーキテクチャのデプロイを自動化できるため、開発者やDevOpsチームから高く評価されています。このツールを使うことで、より付加価値の高い作業に集中できます。操作が非常にわかりやすいため、特別な知識やスキルがなくても使用できます。UIがシンプルなので、クラスタのデプロイ管理も簡単です。

  • 信頼性の高いセキュリティモデル

安全性が高いため、クラスターには信頼できるパッケージのみをインストールするように保証できます。

  • 柔軟性

柔軟性とカスタマイズ性が高いため、多様なパッケージをKubernetes上で簡単にセットアップできます。

  • 充実したパッケージエコシステム 

豊富なパッケージのエコシステムがあるため、必要なパッケージをいつでも見つけられます。

  • コミュニティの支援

Helmはオープンソースのため、大規模な開発コミュニティによるサポートがあります。困ったときには、多くの情報やアドバイスが得られます。

  • Helmでデプロイが簡単

ボタンをクリックするだけ、またはコマンドラインからの実行でKubernetesリソースを準備できます。さらに、チャートを他のチャートの依存関係として組み込むことで、複雑なデプロイも実現します。

  • バージョン管理の自動化

複数のデプロイでバージョンを管理するのは大変ですが、Helmが自動で対応します。すべてのリリースバージョンはツールのデータベースに保存されるため、問題が起きた場合でも簡単に元のバージョンに戻せます。

Helmのインストールとセットアップ

Helmを導入したい場合、v1/v2、そして最新のv3など、いくつかのバージョンがあります。いずれも貴社の要件に合わせて調整可能です。K8SクラスターにHelmをインストールしてセットアップする流れは比較的手軽です。Getting Startedページで、Helmのダウンロードやインストール手順を確認できます。

GitHubで公開されているstableリポジトリからサンプルチャートをインストールすれば、Helmチャートをすぐに使い始めることができます。Helmのstableリポジトリには、クラスターでデプロイ可能なアプリが多数揃っています。

stableリポジトリに各種チャートが揃っているほか、Helm利用者が自分でチャートを作成することもできます:

  • MongoDB
  • MySQL
  • WordPress

基本的なHelmチャートを作成する(コードサンプル付き)

Helm createコマンドを使えば、最初のHelmチャートを簡単に作成できます:

$ helm create mychart
Creating mychart
mychart

このコマンドを実行すると、先述のファイルやディレクトリを含むフォルダが生成され、チャートを作成する際の基本的な構成を得られます。

先に述べたとおり、templatesフォルダにはHelmパッケージのマニフェストが含まれています。これらには、YAMLファイルから自動的に反映される設定や、作成者が独自に調整した内容が記載されます。

FAQ

最新情報を購読

学習目標
最新情報を
購読
購読する
関連トピック